diff options
Diffstat (limited to 'www-client/icecat/files')
| -rw-r--r-- | www-client/icecat/files/0013-gcc-lto-pgo-gentoo.patch | 150 | ||||
| -rw-r--r-- | www-client/icecat/files/0016-bgo-929967-fix-pgo-on-musl.patch | 14 | ||||
| -rw-r--r-- | www-client/icecat/files/0018-gcc-lto-gentoo.patch | 160 | ||||
| -rw-r--r-- | www-client/icecat/files/README.gentoo | 17 | ||||
| -rw-r--r-- | www-client/icecat/files/disable-auto-update.policy.json | 5 | ||||
| -rw-r--r-- | www-client/icecat/files/distribution.ini | 9 | ||||
| -rw-r--r-- | www-client/icecat/files/firefox-146.0.1-icu78.patch | 18 | ||||
| -rw-r--r-- | www-client/icecat/files/gentoo-default-prefs.js | 12 | ||||
| -rw-r--r-- | www-client/icecat/files/gentoo-hwaccel-prefs.js-r2 | 5 | ||||
| -rw-r--r-- | www-client/icecat/files/icecat-128.12.0-clang21.patch | 123 | ||||
| -rw-r--r-- | www-client/icecat/files/icecat-r1.sh | 116 | ||||
| -rw-r--r-- | www-client/icecat/files/icon/icecat-r3.desktop | 236 | ||||
| -rw-r--r-- | www-client/icecat/files/icon/icecat-symbolic.svg | 1 |
13 files changed, 866 insertions, 0 deletions
diff --git a/www-client/icecat/files/0013-gcc-lto-pgo-gentoo.patch b/www-client/icecat/files/0013-gcc-lto-pgo-gentoo.patch new file mode 100644 index 0000000..4b873f9 --- /dev/null +++ b/www-client/icecat/files/0013-gcc-lto-pgo-gentoo.patch @@ -0,0 +1,150 @@ +--- a/build/moz.configure/lto-pgo.configure.pgo ++++ b/build/moz.configure/lto-pgo.configure +@@ -90,12 +90,16 @@ set_config("PGO_PROFILE_PATH", pgo_profi + + @depends( + "--enable-profile-use", ++ c_compiler, + pgo_profile_path, + llvm_profdata, + llvm_profdata_order, + build_environment, + ) +-def orderfile_path(profile_use, path, profdata, profdata_order, build_env): ++def orderfile_path(profile_use, compiler, path, profdata, profdata_order, build_env): ++ if compiler.type == "gcc": ++ return None ++ + if not profile_use: + return None + +@@ -133,7 +137,7 @@ def pgo_flags( + return namespace( + gen_cflags=["-fprofile-generate"], + gen_ldflags=["-fprofile-generate"], +- use_cflags=["-fprofile-use", "-fprofile-correction", "-Wcoverage-mismatch"], ++ use_cflags=["-fprofile-use", "-fprofile-correction", "-Wno-coverage-mismatch"], + use_ldflags=["-fprofile-use"], + ) + +--- a/build/pgo/profileserver.py 2025-05-26 17:14:58.234802697 +0300 ++++ b/build/pgo/profileserver.py 2025-05-26 17:18:38.000686313 +0300 +@@ -97,9 +97,22 @@ if __name__ == "__main__": + locations = ServerLocations() + locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged") + +- old_profraw_files = glob.glob("*.profraw") +- for f in old_profraw_files: +- os.remove(f) ++ using_gcc = False ++ try: ++ if build.config_environment.substs.get('CC_TYPE') == 'gcc': ++ using_gcc = True ++ except BuildEnvironmentNotFoundException: ++ pass ++ ++ if using_gcc: ++ for dirpath, _, filenames in os.walk('.'): ++ for f in filenames: ++ if f.endswith('.gcda'): ++ os.remove(os.path.join(dirpath, f)) ++ else: ++ old_profraw_files = glob.glob('*.profraw') ++ for f in old_profraw_files: ++ os.remove(f) + + with TemporaryDirectory() as profilePath: + # TODO: refactor this into mozprofile +@@ -222,16 +235,21 @@ + + # Try to move the crash reports to the artifacts even if IceCat appears + # to exit successfully, in case there's a crash that doesn't set the + # return code to non-zero for some reason. + if get_crashreports(profilePath, name="IceCat exited successfully?") != 0: + print("IceCat exited successfully, but produced a crashreport") + sys.exit(1) + ++ if using_gcc: ++ print('Copying profile data....') ++ os.system('pwd'); ++ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;'); ++ + llvm_profdata = env.get("LLVM_PROFDATA") + if llvm_profdata: + profraw_files = glob.glob("*.profraw") + if not profraw_files: + print( + "Could not find profraw files in the current directory: %s" + % os.getcwd() + ) +--- a/gfx/2d/moz.build.pgo ++++ b/gfx/2d/moz.build +@@ -135,11 +135,11 @@ if CONFIG["INTEL_ARCHITECTURE"]: + # The file uses SSE2 intrinsics, so it needs special compile flags on some + # compilers. + SOURCES["BlurSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] +- SOURCES["ConvolutionFilterAVX2.cpp"].flags += ["-mavx2"] ++ SOURCES["ConvolutionFilterAVX2.cpp"].flags += ["-mavx2", "-fno-lto"] + SOURCES["ConvolutionFilterSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] + SOURCES["FilterProcessingSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] + SOURCES["ImageScalingSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] +- SOURCES["SwizzleAVX2.cpp"].flags += ["-mavx2"] ++ SOURCES["SwizzleAVX2.cpp"].flags += ["-mavx2", "-fno-lto"] + SOURCES["SwizzleSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] + SOURCES["SwizzleSSSE3.cpp"].flags += CONFIG["SSSE3_FLAGS"] + elif CONFIG["TARGET_CPU"].startswith("mips"): +--- a/gfx/skia/generate_mozbuild.py.pgo ++++ b/gfx/skia/generate_mozbuild.py +@@ -54,8 +54,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wind + if CONFIG['INTEL_ARCHITECTURE']: + SOURCES['skia/modules/skcms/skcms.cc'].flags += ['-DSKCMS_DISABLE_SKX'] + skia_ssse3_flags = ['-Dskvx=skvx_ssse3', '-mssse3'] +- skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx'] +- skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma'] ++ skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx', '-fno-lto'] ++ skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma', '-fno-lto'] + SOURCES['skia/src/core/SkBitmapProcState_opts_ssse3.cpp'].flags += skia_ssse3_flags + SOURCES['skia/src/core/SkBlitMask_opts_ssse3.cpp'].flags += skia_ssse3_flags + SOURCES['skia/src/core/SkSwizzler_opts_ssse3.cpp'].flags += ['-Dskvx=skvx_ssse3'] +--- a/gfx/skia/moz.build.pgo ++++ b/gfx/skia/moz.build +@@ -582,8 +582,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wind + if CONFIG['INTEL_ARCHITECTURE']: + SOURCES['skia/modules/skcms/skcms.cc'].flags += ['-DSKCMS_DISABLE_SKX'] + skia_ssse3_flags = ['-Dskvx=skvx_ssse3', '-mssse3'] +- skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx'] +- skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma'] ++ skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx', '-fno-lto'] ++ skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma', '-fno-lto'] + SOURCES['skia/src/core/SkBitmapProcState_opts_ssse3.cpp'].flags += skia_ssse3_flags + SOURCES['skia/src/core/SkBlitMask_opts_ssse3.cpp'].flags += skia_ssse3_flags + SOURCES['skia/src/core/SkSwizzler_opts_ssse3.cpp'].flags += ['-Dskvx=skvx_ssse3'] +--- a/toolkit/components/terminator/nsTerminator.cpp.pgo ++++ b/toolkit/components/terminator/nsTerminator.cpp +@@ -332,6 +332,11 @@ void nsTerminator::StartWatchdog() { + } + #endif + ++ // Disable watchdog for PGO train builds - writting profile information at ++ // exit may take time and it is better to make build hang rather than ++ // silently produce poorly performing binary. ++ crashAfterMS = INT32_MAX; ++ + UniquePtr<Options> options(new Options()); + // crashAfterTicks is guaranteed to be > 0 as + // crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS +--- a/security/sandbox/linux/moz.build.1516803 2020-12-10 16:17:55.425139545 +0100 ++++ b/security/sandbox/linux/moz.build 2020-12-10 16:29:21.945860841 +0100 +@@ -114,9 +114,8 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc") + # gcc lto likes to put the top level asm in syscall.cc in a different partition + # from the function using it which breaks the build. Work around that by + # forcing there to be only one partition. +-for f in CONFIG["OS_CXXFLAGS"]: +- if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang": +- LDFLAGS += ["--param lto-partitions=1"] ++if CONFIG['CC_TYPE'] != 'clang': ++ LDFLAGS += ['--param', 'lto-partitions=1'] + + DEFINES["NS_NO_XPCOM"] = True + DisableStlWrapping() + diff --git a/www-client/icecat/files/0016-bgo-929967-fix-pgo-on-musl.patch b/www-client/icecat/files/0016-bgo-929967-fix-pgo-on-musl.patch new file mode 100644 index 0000000..afe5d2a --- /dev/null +++ b/www-client/icecat/files/0016-bgo-929967-fix-pgo-on-musl.patch @@ -0,0 +1,14 @@ +diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py +index 7354714..0385792 100755 +--- a/build/pgo/profileserver.py ++++ b/build/pgo/profileserver.py +@@ -171,6 +171,9 @@ if __name__ == "__main__": + env["UPLOAD_PATH"], "profile-run-1.log" + ) + ++ # Workaround for https://bugs.gentoo.org/929967 ++ env["LD_LIBRARY_PATH"] = os.path.join(os.getcwd(), "dist", "bin") ++ + # Run IceCat a first time to initialize its profile + runner = IceCatRunner( + profile=profile, diff --git a/www-client/icecat/files/0018-gcc-lto-gentoo.patch b/www-client/icecat/files/0018-gcc-lto-gentoo.patch new file mode 100644 index 0000000..34e03a2 --- /dev/null +++ b/www-client/icecat/files/0018-gcc-lto-gentoo.patch @@ -0,0 +1,160 @@ +--- a/build/moz.configure/lto-pgo.configure.pgo ++++ b/build/moz.configure/lto-pgo.configure +@@ -90,12 +90,16 @@ set_config("PGO_PROFILE_PATH", pgo_profi + + @depends( + "--enable-profile-use", ++ c_compiler, + pgo_profile_path, + llvm_profdata, + llvm_profdata_order, + build_environment, + ) +-def orderfile_path(profile_use, path, profdata, profdata_order, build_env): ++def orderfile_path(profile_use, compiler, path, profdata, profdata_order, build_env): ++ if compiler.type == "gcc": ++ return None ++ + if not profile_use: + return None + +@@ -133,7 +137,7 @@ def pgo_flags( + return namespace( + gen_cflags=["-fprofile-generate"], + gen_ldflags=["-fprofile-generate"], +- use_cflags=["-fprofile-use", "-fprofile-correction", "-Wcoverage-mismatch"], ++ use_cflags=["-fprofile-use", "-fprofile-correction", "-Wno-coverage-mismatch"], + use_ldflags=["-fprofile-use"], + ) + +--- a/build/pgo/profileserver.py ++++ b/build/pgo/profileserver.py +@@ -93,19 +93,32 @@ + ), + path_mappings=path_mappings, + ) + sp3_httpd.start(block=False) + print("started SP3 server on port 8000") + locations = ServerLocations() + locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged") + +- old_profraw_files = glob.glob("*.profraw") +- for f in old_profraw_files: +- os.remove(f) ++ using_gcc = False ++ try: ++ if build.config_environment.substs.get('CC_TYPE') == 'gcc': ++ using_gcc = True ++ except BuildEnvironmentNotFoundException: ++ pass ++ ++ if using_gcc: ++ for dirpath, _, filenames in os.walk('.'): ++ for f in filenames: ++ if f.endswith('.gcda'): ++ os.remove(os.path.join(dirpath, f)) ++ else: ++ old_profraw_files = glob.glob('*.profraw') ++ for f in old_profraw_files: ++ os.remove(f) + + with TemporaryDirectory() as profilePath: + # TODO: refactor this into mozprofile + profile_data_dir = os.path.join(build.topsrcdir, "testing", "profiles") + with open(os.path.join(profile_data_dir, "profiles.json"), "r") as fh: + base_profiles = json.load(fh)["profileserver"] + + prefpaths = [ +@@ -222,16 +235,21 @@ + + # Try to move the crash reports to the artifacts even if IceCat appears + # to exit successfully, in case there's a crash that doesn't set the + # return code to non-zero for some reason. + if get_crashreports(profilePath, name="IceCat exited successfully?") != 0: + print("IceCat exited successfully, but produced a crashreport") + sys.exit(1) + ++ if using_gcc: ++ print('Copying profile data....') ++ os.system('pwd'); ++ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;'); ++ + llvm_profdata = env.get("LLVM_PROFDATA") + if llvm_profdata: + profraw_files = glob.glob("*.profraw") + if not profraw_files: + print( + "Could not find profraw files in the current directory: %s" + % os.getcwd() + ) +--- a/gfx/2d/moz.build.pgo ++++ b/gfx/2d/moz.build +@@ -135,11 +135,11 @@ if CONFIG["INTEL_ARCHITECTURE"]: + # The file uses SSE2 intrinsics, so it needs special compile flags on some + # compilers. + SOURCES["BlurSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] +- SOURCES["ConvolutionFilterAVX2.cpp"].flags += ["-mavx2"] ++ SOURCES["ConvolutionFilterAVX2.cpp"].flags += ["-mavx2", "-fno-lto"] + SOURCES["ConvolutionFilterSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] + SOURCES["FilterProcessingSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] + SOURCES["ImageScalingSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] +- SOURCES["SwizzleAVX2.cpp"].flags += ["-mavx2"] ++ SOURCES["SwizzleAVX2.cpp"].flags += ["-mavx2", "-fno-lto"] + SOURCES["SwizzleSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"] + SOURCES["SwizzleSSSE3.cpp"].flags += CONFIG["SSSE3_FLAGS"] + elif CONFIG["TARGET_CPU"].startswith("mips"): +--- a/gfx/skia/generate_mozbuild.py.pgo ++++ b/gfx/skia/generate_mozbuild.py +@@ -54,8 +54,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wind + if CONFIG['INTEL_ARCHITECTURE']: + SOURCES['skia/modules/skcms/skcms.cc'].flags += ['-DSKCMS_DISABLE_SKX'] + skia_ssse3_flags = ['-Dskvx=skvx_ssse3', '-mssse3'] +- skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx'] +- skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma'] ++ skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx', '-fno-lto'] ++ skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma', '-fno-lto'] + SOURCES['skia/src/core/SkBitmapProcState_opts_ssse3.cpp'].flags += skia_ssse3_flags + SOURCES['skia/src/core/SkBlitMask_opts_ssse3.cpp'].flags += skia_ssse3_flags + SOURCES['skia/src/core/SkSwizzler_opts_ssse3.cpp'].flags += ['-Dskvx=skvx_ssse3'] +--- a/gfx/skia/moz.build.pgo ++++ b/gfx/skia/moz.build +@@ -582,8 +582,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wind + if CONFIG['INTEL_ARCHITECTURE']: + SOURCES['skia/modules/skcms/skcms.cc'].flags += ['-DSKCMS_DISABLE_SKX'] + skia_ssse3_flags = ['-Dskvx=skvx_ssse3', '-mssse3'] +- skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx'] +- skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma'] ++ skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx', '-fno-lto'] ++ skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma', '-fno-lto'] + SOURCES['skia/src/core/SkBitmapProcState_opts_ssse3.cpp'].flags += skia_ssse3_flags + SOURCES['skia/src/core/SkBlitMask_opts_ssse3.cpp'].flags += skia_ssse3_flags + SOURCES['skia/src/core/SkSwizzler_opts_ssse3.cpp'].flags += ['-Dskvx=skvx_ssse3'] +--- a/toolkit/components/terminator/nsTerminator.cpp.pgo ++++ b/toolkit/components/terminator/nsTerminator.cpp +@@ -332,6 +332,11 @@ void nsTerminator::StartWatchdog() { + } + #endif + ++ // Disable watchdog for PGO train builds - writting profile information at ++ // exit may take time and it is better to make build hang rather than ++ // silently produce poorly performing binary. ++ crashAfterMS = INT32_MAX; ++ + UniquePtr<Options> options(new Options()); + // crashAfterTicks is guaranteed to be > 0 as + // crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS +--- a/security/sandbox/linux/moz.build.1516803 2020-12-10 16:17:55.425139545 +0100 ++++ b/security/sandbox/linux/moz.build 2020-12-10 16:29:21.945860841 +0100 +@@ -114,9 +114,8 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc") + # gcc lto likes to put the top level asm in syscall.cc in a different partition + # from the function using it which breaks the build. Work around that by + # forcing there to be only one partition. +-for f in CONFIG["OS_CXXFLAGS"]: +- if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang": +- LDFLAGS += ["--param lto-partitions=1"] ++if CONFIG['CC_TYPE'] != 'clang': ++ LDFLAGS += ['--param', 'lto-partitions=1'] + + DEFINES["NS_NO_XPCOM"] = True + DisableStlWrapping() + diff --git a/www-client/icecat/files/README.gentoo b/www-client/icecat/files/README.gentoo new file mode 100644 index 0000000..3f6ca98 --- /dev/null +++ b/www-client/icecat/files/README.gentoo @@ -0,0 +1,17 @@ + +## DoH +Note regarding Trusted Recursive Resolver aka DNS-over-HTTPS (DoH): +Due to privacy concerns (encrypting DNS might be a good thing, sending all DNS +traffic to Cloudflare by default is not a good idea and applications should +respect OS configured settings), "network.trr.mode" was set to 5 ("Off by +choice") by default. +You can enable DNS-over-HTTPS in Firefox's preferences. + + +## Firefox >100 compatibility +Unfortunately Firefox-100.0 breaks compatibility with some sites using +useragent checks. To temporarily fix this, enter about:config and modify +network.http.useragent.forceVersion preference to "99" Or install an addon to +change your useragent. +See: https://support.mozilla.org/en-US/kb/difficulties-opening-or-using-website-firefox-100 + diff --git a/www-client/icecat/files/disable-auto-update.policy.json b/www-client/icecat/files/disable-auto-update.policy.json new file mode 100644 index 0000000..f366220 --- /dev/null +++ b/www-client/icecat/files/disable-auto-update.policy.json @@ -0,0 +1,5 @@ +{ + "policies": { + "DisableAppUpdate": true + } +} diff --git a/www-client/icecat/files/distribution.ini b/www-client/icecat/files/distribution.ini new file mode 100644 index 0000000..0f8aa15 --- /dev/null +++ b/www-client/icecat/files/distribution.ini @@ -0,0 +1,9 @@ +[Global] +id=gentoo +version=1.0 +about=GNU IceCat for Gentoo + +[Preferences] +app.distributor="src_prepare-overlay" +app.distributor.channel="src_prepare-overlay" +startup.homepage_welcome_url="https://gitlab.com/src_prepare/src_prepare-overlay" diff --git a/www-client/icecat/files/firefox-146.0.1-icu78.patch b/www-client/icecat/files/firefox-146.0.1-icu78.patch new file mode 100644 index 0000000..4d8785f --- /dev/null +++ b/www-client/icecat/files/firefox-146.0.1-icu78.patch @@ -0,0 +1,18 @@ +https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1291790c3dc24d3b9921bb10330201b8c1fa5983 + +diff --git a/intl/lwbrk/LineBreaker.cpp b/intl/lwbrk/LineBreaker.cpp +--- a/intl/lwbrk/LineBreaker.cpp ++++ b/intl/lwbrk/LineBreaker.cpp +@@ -451,10 +451,11 @@ + /* AKSARA = 43, [AK] */ CLASS_CHARACTER, + /* AKSARA_PREBASE = 44, [AP] */ CLASS_CHARACTER, + /* AKSARA_START = 45, [AS] */ CLASS_CHARACTER, + /* VIRAMA_FINAL = 46, [VF] */ CLASS_CHARACTER, + /* VIRAMA = 47, [VI] */ CLASS_CHARACTER, ++ /* UNAMBIGUOUS_HYPHEN = 48 [HH] */ CLASS_BREAKABLE, + }; + + static_assert(U_LB_COUNT == std::size(sUnicodeLineBreakToClass), + "Gecko vs ICU LineBreak class mismatch"); + + diff --git a/www-client/icecat/files/gentoo-default-prefs.js b/www-client/icecat/files/gentoo-default-prefs.js new file mode 100644 index 0000000..4b60828 --- /dev/null +++ b/www-client/icecat/files/gentoo-default-prefs.js @@ -0,0 +1,12 @@ +pref("app.update.autoInstallEnabled", false); +pref("browser.display.use_system_colors", true); +pref("browser.link.open_external", 3); +pref("general.smoothScroll", true); +pref("general.autoScroll", false); +pref("browser.tabs.tabMinWidth", 15); +pref("browser.backspace_action", 0); +pref("browser.urlbar.hideGoButton", true); +pref("accessibility.typeaheadfind", true); +pref("intl.locale.requested", ""); +pref("layout.css.dpi", 0); +pref("network.trr.mode", 5); diff --git a/www-client/icecat/files/gentoo-hwaccel-prefs.js-r2 b/www-client/icecat/files/gentoo-hwaccel-prefs.js-r2 new file mode 100644 index 0000000..48025ca --- /dev/null +++ b/www-client/icecat/files/gentoo-hwaccel-prefs.js-r2 @@ -0,0 +1,5 @@ +/* Force hardware accelerated rendering due to USE=hwaccel */ +pref("gfx.webrender.all", true); +pref("layers.acceleration.force-enabled", true); +pref("media.hardware-video-decoding.enabled", true); +pref("webgl.force-enabled", true); diff --git a/www-client/icecat/files/icecat-128.12.0-clang21.patch b/www-client/icecat/files/icecat-128.12.0-clang21.patch new file mode 100644 index 0000000..961e25d --- /dev/null +++ b/www-client/icecat/files/icecat-128.12.0-clang21.patch @@ -0,0 +1,123 @@ +https://bugzilla.mozilla.org/show_bug.cgi?id=1954003 +https://phabricator.services.mozilla.com/D241583 +https://github.com/mozilla-firefox/firefox/commit/6d368d85ef52ce67141f44f3fdbfd51ef23f14e6 +From 02f94f3cdc97fc3b2bc4654658230c2d896417ae Mon Sep 17 00:00:00 2001 +From: Mike Hommey <mh+mozilla@glandium.org> +Date: Mon, 17 Mar 2025 23:31:43 +0000 +Subject: [PATCH] Bug 1954003 - Fix new implicit-int-conversion warnings from + clang 21. r=spidermonkey-reviewers,arai + +/builds/worker/workspace/obj-build/dist/include/js/Conversions.h:364:70: error: implicit conversion loses integer precision: 'int' to 'unsigned char' [-Werror,-Wimplicit-int-conversion] + 364 | return (bits & mozilla::FloatingPoint<double>::kSignBit) ? ~result + 1 + | ~~~~~~ ~~~~~~~~^~~ +/builds/worker/workspace/obj-build/dist/include/js/Conversions.h:544:42: note: in instantiation of function template specialization 'JS::ToUnsignedInteger<unsigned char>' requested here + 544 | inline int8_t ToUint8(double d) { return ToUnsignedInteger<uint8_t>(d); } + | ^ +/builds/worker/workspace/obj-build/dist/include/js/Conversions.h:364:70: error: implicit conversion loses integer precision: 'int' to 'unsigned short' [-Werror,-Wimplicit-int-conversion] + 364 | return (bits & mozilla::FloatingPoint<double>::kSignBit) ? ~result + 1 + | ~~~~~~ ~~~~~~~~^~~ +/builds/worker/workspace/obj-build/dist/include/js/Conversions.h:549:45: note: in instantiation of function template specialization 'JS::ToUnsignedInteger<unsigned short>' requested here + 549 | inline uint16_t ToUint16(double d) { return ToUnsignedInteger<uint16_t>(d); } + | ^ + +Differential Revision: https://phabricator.services.mozilla.com/D241584 +--- a/js/public/Conversions.h ++++ b/js/public/Conversions.h +@@ -361,8 +361,9 @@ inline UnsignedInteger ToUnsignedInteger(double d) { + } + + // Compute the congruent value in the signed range. +- return (bits & mozilla::FloatingPoint<double>::kSignBit) ? ~result + 1 +- : result; ++ return (bits & mozilla::FloatingPoint<double>::kSignBit) ++ ? UnsignedInteger(~result) + 1 ++ : result; + } + + template <typename SignedInteger> + +https://phabricator.services.mozilla.com/D241582 +https://github.com/mozilla-firefox/firefox/commit/3053f782bbb35895d632855bb5007282d7ec45e2 + +From 3053f782bbb35895d632855bb5007282d7ec45e2 Mon Sep 17 00:00:00 2001 +From: Mike Hommey <mh+mozilla@glandium.org> +Date: Mon, 17 Mar 2025 23:31:42 +0000 +Subject: [PATCH] Bug 1954003 - Fix new implicit-int-conversion warnings from + clang 21. r=dom-core,mccr8 + +/builds/worker/checkouts/gecko/dom/base/nsINode.h:2055:32: error: implicit conversion loses integer precision: 'int' to 'uint32_t' (aka 'unsigned int') [-Werror,-Wimplicit-int-conversion] + 2055 | mBoolFlags = (mBoolFlags & ~(1 << name)) | (value << name); + | ~ ^~~~~~~~~~~~ +/builds/worker/checkouts/gecko/dom/base/nsINode.h:2067:19: error: implicit conversion loses integer precision: 'int' to 'uint32_t' (aka 'unsigned int') [-Werror,-Wimplicit-int-conversion] + 2067 | mBoolFlags &= ~(1 << name); + | ~~ ^~~~~~~~~~~~ + +Differential Revision: https://phabricator.services.mozilla.com/D241582 +--- a/dom/base/nsINode.h ++++ b/dom/base/nsINode.h +@@ -2065,25 +2065,25 @@ class nsINode : public mozilla::dom::EventTarget { + void SetBoolFlag(BooleanFlag name, bool value) { + static_assert(BooleanFlagCount <= 8 * sizeof(mBoolFlags), + "Too many boolean flags"); +- mBoolFlags = (mBoolFlags & ~(1 << name)) | (value << name); ++ mBoolFlags = (mBoolFlags & ~(1U << name)) | (value << name); + } + + void SetBoolFlag(BooleanFlag name) { + static_assert(BooleanFlagCount <= 8 * sizeof(mBoolFlags), + "Too many boolean flags"); +- mBoolFlags |= (1 << name); ++ mBoolFlags |= (1U << name); + } + + void ClearBoolFlag(BooleanFlag name) { + static_assert(BooleanFlagCount <= 8 * sizeof(mBoolFlags), + "Too many boolean flags"); +- mBoolFlags &= ~(1 << name); ++ mBoolFlags &= ~(1U << name); + } + + bool GetBoolFlag(BooleanFlag name) const { + static_assert(BooleanFlagCount <= 8 * sizeof(mBoolFlags), + "Too many boolean flags"); +- return mBoolFlags & (1 << name); ++ return mBoolFlags & (1U << name); + } + + public: + +https://phabricator.services.mozilla.com/D241584 +https://github.com/mozilla-firefox/firefox/commit/02f94f3cdc97fc3b2bc4654658230c2d896417ae + +From 6d368d85ef52ce67141f44f3fdbfd51ef23f14e6 Mon Sep 17 00:00:00 2001 +From: Mike Hommey <mh+mozilla@glandium.org> +Date: Mon, 17 Mar 2025 23:31:43 +0000 +Subject: [PATCH] Bug 1954003 - Fix new implicit-int-conversion warnings from + clang 21. r=gfx-reviewers,lsalzman + +/builds/worker/checkouts/gecko/dom/canvas/CanvasRenderingContext2D.cpp:6284:9: error: implicit conversion loses integer precision: 'int32_t' (aka 'int') to 'uint32_t' (aka 'unsigned int') [-Werror,-Wimplicit-int-conversion] + 6284 | w = -aSw; + | ~ ^~~~ +/builds/worker/checkouts/gecko/dom/canvas/CanvasRenderingContext2D.cpp:6290:9: error: implicit conversion loses integer precision: 'int32_t' (aka 'int') to 'uint32_t' (aka 'unsigned int') [-Werror,-Wimplicit-int-conversion] + 6290 | h = -aSh; + | ~ ^~~~ + +Differential Revision: https://phabricator.services.mozilla.com/D241583 +--- a/dom/canvas/CanvasRenderingContext2D.cpp ++++ b/dom/canvas/CanvasRenderingContext2D.cpp +@@ -6281,13 +6281,13 @@ already_AddRefed<ImageData> CanvasRenderingContext2D::GetImageData( + // relevant direction. + uint32_t w, h; + if (aSw < 0) { +- w = -aSw; ++ w = uint32_t(-aSw); + aSx -= w; + } else { + w = aSw; + } + if (aSh < 0) { +- h = -aSh; ++ h = uint32_t(-aSh); + aSy -= h; + } else { + h = aSh; diff --git a/www-client/icecat/files/icecat-r1.sh b/www-client/icecat/files/icecat-r1.sh new file mode 100644 index 0000000..a24ba28 --- /dev/null +++ b/www-client/icecat/files/icecat-r1.sh @@ -0,0 +1,116 @@ +#!/bin/bash + +## +## Usage: +## +## $ icecat +## +## This script is meant to run GNU IceCat in Gentoo. + +cmdname=$(basename "$0") + +## +## Variables +## +MOZ_ARCH=$(uname -m) +case ${MOZ_ARCH} in + x86_64|s390x|sparc64) + MOZ_LIB_DIR="@PREFIX@/lib64" + SECONDARY_LIB_DIR="@PREFIX@/lib" + ;; + *) + MOZ_LIB_DIR="@PREFIX@/lib" + SECONDARY_LIB_DIR="@PREFIX@/lib64" + ;; +esac + +MOZ_FIREFOX_FILE="icecat" + +if [[ ! -r ${MOZ_LIB_DIR}/icecat/${MOZ_FIREFOX_FILE} ]]; then + if [[ ! -r ${SECONDARY_LIB_DIR}/icecat/${MOZ_FIREFOX_FILE} ]]; then + echo "Error: ${MOZ_LIB_DIR}/icecat/${MOZ_FIREFOX_FILE} not found" >&2 + if [[ -d ${SECONDARY_LIB_DIR} ]]; then + echo " ${SECONDARY_LIB_DIR}/icecat/${MOZ_FIREFOX_FILE} not found" >&2 + fi + exit 1 + fi + MOZ_LIB_DIR="${SECONDARY_LIB_DIR}" +fi +MOZILLA_FIVE_HOME="${MOZ_LIB_DIR}/icecat" +MOZ_EXTENSIONS_PROFILE_DIR="${HOME}/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" +MOZ_PROGRAM="${MOZILLA_FIVE_HOME}/${MOZ_FIREFOX_FILE}" + +## +## Enable Wayland backend? +## +if @DEFAULT_WAYLAND@ && [[ -z ${MOZ_DISABLE_WAYLAND} ]]; then + if [[ -n "${WAYLAND_DISPLAY}" ]]; then + export MOZ_ENABLE_WAYLAND=1 + fi +fi + +## +## Use D-Bus remote exclusively when there's Wayland display. +## +if [[ -n "${WAYLAND_DISPLAY}" ]]; then + export MOZ_DBUS_REMOTE=1 +fi + +## +## Make sure that we set the plugin path +## +MOZ_PLUGIN_DIR="plugins" + +if [[ -n "${MOZ_PLUGIN_PATH}" ]]; then + MOZ_PLUGIN_PATH=${MOZ_PLUGIN_PATH}:${MOZ_LIB_DIR}/mozilla/${MOZ_PLUGIN_DIR} +else + MOZ_PLUGIN_PATH=${MOZ_LIB_DIR}/mozilla/${MOZ_PLUGIN_DIR} +fi + +if [[ -d "${SECONDARY_LIB_DIR}/mozilla/${MOZ_PLUGIN_DIR}" ]]; then + MOZ_PLUGIN_PATH=${MOZ_PLUGIN_PATH}:${SECONDARY_LIB_DIR}/mozilla/${MOZ_PLUGIN_DIR} +fi + +export MOZ_PLUGIN_PATH + +## +## Set MOZ_APP_LAUNCHER for gnome-session +## +export MOZ_APP_LAUNCHER="@PREFIX@/bin/${cmdname}" + +## +## Disable the GNOME crash dialog, Mozilla has its own +## +if [[ "${XDG_CURRENT_DESKTOP}" == "GNOME" ]]; then + GNOME_DISABLE_CRASH_DIALOG=1 + export GNOME_DISABLE_CRASH_DIALOG +fi + +## +## Enable Xinput2 (#617344) +## + +# respect user settings +MOZ_USE_XINPUT2=${MOZ_USE_XINPUT2:-auto} + +if [[ ${MOZ_USE_XINPUT2} == auto && -n ${WAYLAND_DISPLAY} ]]; then + # enabling XINPUT2 should be safe for all wayland users + MOZ_USE_XINPUT2=1 +elif [[ ${MOZ_USE_XINPUT2} == auto && ${XDG_CURRENT_DESKTOP^^} == KDE ]]; then + # XINPUT2 is known to cause problems for KWin users + MOZ_USE_XINPUT2=0 +elif [[ ${MOZ_USE_XINPUT2} == auto && ${XDG_CURRENT_DESKTOP^^} == LXQT ]]; then + # LXQt uses KWin + MOZ_USE_XINPUT2=0 +elif [[ ${MOZ_USE_XINPUT2} == auto ]]; then + # should work on Mate, Xfce, FluxBox, OpenBox and all the others ... + MOZ_USE_XINPUT2=1 +fi + +[[ ${MOZ_USE_XINPUT2} != 0 ]] && export MOZ_USE_XINPUT2=${MOZ_USE_XINPUT2} + +# Don't throw "old profile" dialog box. +export MOZ_ALLOW_DOWNGRADE=1 + +# Run the browser +exec ${MOZ_PROGRAM} "${@}" diff --git a/www-client/icecat/files/icon/icecat-r3.desktop b/www-client/icecat/files/icon/icecat-r3.desktop new file mode 100644 index 0000000..8219e93 --- /dev/null +++ b/www-client/icecat/files/icon/icecat-r3.desktop @@ -0,0 +1,236 @@ +[Desktop Entry] +Version=1.0 +Name=@NAME@ +GenericName=Web Browser +Comment=Browse the Web +Exec=@EXEC@ %u +Icon=@ICON@ +Terminal=false +Type=Application +MimeType=application/pdf;application/vnd.mozilla.xul+xml;application/xhtml+xml;text/html;text/mml;text/xml;x-scheme-handler/http;x-scheme-handler/https; +StartupNotify=true +Categories=Network;WebBrowser; +Keywords=web;browser;internet; +Actions=new-window;new-private-window;profile-manager-window; + +[Desktop Action new-window] +Name=Open a New Window +Name[ach]=Dirica manyen +Name[af]=Nuwe venster +Name[an]=Nueva finestra +Name[ar]=نافذة جديدة +Name[as]=নতুন উইন্ডো +Name[ast]=Ventana nueva +Name[az]=Yeni Pəncərə +Name[be]=Новае акно +Name[bg]=Нов прозорец +Name[bn_BD]=নতুন উইন্ডো (N) +Name[bn_IN]=নতুন উইন্ডো +Name[br]=Prenestr nevez +Name[brx]=गोदान उइन्ड'(N) +Name[bs]=Novi prozor +Name[ca]=Finestra nova +Name[cak]=K'ak'a' tzuwäch +Name[cs]=Nové okno +Name[cy]=Ffenestr Newydd +Name[da]=Nyt vindue +Name[de]=Neues Fenster +Name[dsb]=Nowe wokno +Name[el]=Νέο παράθυρο +Name[en_GB]=New Window +Name[en_US]=New Window +Name[en_ZA]=New Window +Name[eo]=Nova fenestro +Name[es_AR]=Nueva ventana +Name[es_CL]=Nueva ventana +Name[es_ES]=Nueva ventana +Name[es_MX]=Nueva ventana +Name[et]=Uus aken +Name[eu]=Leiho berria +Name[fa]=پنجره جدید +Name[ff]=Henorde Hesere +Name[fi]=Uusi ikkuna +Name[fr]=Nouvelle fenêtre +Name[fy_NL]=Nij finster +Name[ga_IE]=Fuinneog Nua +Name[gd]=Uinneag ùr +Name[gl]=Nova xanela +Name[gn]=Ovetã pyahu +Name[gu_IN]=નવી વિન્ડો +Name[he]=חלון חדש +Name[hi_IN]=नया विंडो +Name[hr]=Novi prozor +Name[hsb]=Nowe wokno +Name[hu]=Új ablak +Name[hy_AM]=Նոր Պատուհան +Name[id]=Jendela Baru +Name[is]=Nýr gluggi +Name[it]=Nuova finestra +Name[ja]=新しいウィンドウ +Name[ja_JP-mac]=新規ウインドウ +Name[ka]=ახალი ფანჯარა +Name[kk]=Жаңа терезе +Name[km]=បង្អួចថ្មី +Name[kn]=ಹೊಸ ಕಿಟಕಿ +Name[ko]=새 창 +Name[kok]=नवें जनेल +Name[ks]=نئئ وِنڈو +Name[lij]=Neuvo barcon +Name[lo]=ຫນ້າຕ່າງໃຫມ່ +Name[lt]=Naujas langas +Name[ltg]=Jauns lūgs +Name[lv]=Jauns logs +Name[mai]=नव विंडो +Name[mk]=Нов прозорец +Name[ml]=പുതിയ ജാലകം +Name[mr]=नवीन पटल +Name[ms]=Tetingkap Baru +Name[my]=ဝင်းဒိုးအသစ် +Name[nb_NO]=Nytt vindu +Name[ne_NP]=नयाँ सञ्झ्याल +Name[nl]=Nieuw venster +Name[nn_NO]=Nytt vindauge +Name[or]=ନୂତନ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ +Name[pl]=Nowe okno +Name[pt_BR]=Nova janela +Name[pt_PT]=Nova janela +Name[rm]=Nova fanestra +Name[ro]=Fereastră nouă +Name[ru]=Новое окно +Name[sat]=नावा विंडो (N) +Name[si]=නව කවුළුවක් +Name[sk]=Nové okno +Name[sl]=Novo okno +Name[son]=Zanfun taaga +Name[sq]=Dritare e Re +Name[sr]=Нови прозор +Name[sv_SE]=Nytt fönster +Name[ta]=புதிய சாளரம் +Name[te]=కొత్త విండో +Name[th]=หน้าต่างใหม่ +Name[tr]=Yeni pencere +Name[tsz]=Eraatarakua jimpani +Name[uk]=Нове вікно +Name[ur]=نیا دریچہ +Name[uz]=Yangi oyna +Name[vi]=Cửa sổ mới +Name[wo]=Palanteer bu bees +Name[xh]=Ifestile entsha +Name[zh_CN]=新建窗口 +Name[zh_TW]=開新視窗 +Exec=@EXEC@ --new-window %u + +[Desktop Action new-private-window] +Name=Open a New Private Window +Name[ach]=Dirica manyen me mung +Name[af]=Nuwe privaatvenster +Name[an]=Nueva finestra privada +Name[ar]=نافذة خاصة جديدة +Name[as]=নতুন ব্যক্তিগত উইন্ডো +Name[ast]=Ventana privada nueva +Name[az]=Yeni Məxfi Pəncərə +Name[be]=Новае акно адасаблення +Name[bg]=Нов прозорец за поверително сърфиране +Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো +Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো +Name[br]=Prenestr merdeiñ prevez nevez +Name[brx]=गोदान प्राइभेट उइन्ड' +Name[bs]=Novi privatni prozor +Name[ca]=Finestra privada nova +Name[cak]=K'ak'a' ichinan tzuwäch +Name[cs]=Nové anonymní okno +Name[cy]=Ffenestr Breifat Newydd +Name[da]=Nyt privat vindue +Name[de]=Neues privates Fenster +Name[dsb]=Nowe priwatne wokno +Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης +Name[en_GB]=New Private Window +Name[en_US]=New Private Window +Name[en_ZA]=New Private Window +Name[eo]=Nova privata fenestro +Name[es_AR]=Nueva ventana privada +Name[es_CL]=Nueva ventana privada +Name[es_ES]=Nueva ventana privada +Name[es_MX]=Nueva ventana privada +Name[et]=Uus privaatne aken +Name[eu]=Leiho pribatu berria +Name[fa]=پنجره ناشناس جدید +Name[ff]=Henorde Suturo Hesere +Name[fi]=Uusi yksityinen ikkuna +Name[fr]=Nouvelle fenêtre de navigation privée +Name[fy_NL]=Nij priveefinster +Name[ga_IE]=Fuinneog Nua Phríobháideach +Name[gd]=Uinneag phrìobhaideach ùr +Name[gl]=Nova xanela privada +Name[gn]=Ovetã ñemi pyahu +Name[gu_IN]=નવી ખાનગી વિન્ડો +Name[he]=חלון פרטי חדש +Name[hi_IN]=नयी निजी विंडो +Name[hr]=Novi privatni prozor +Name[hsb]=Nowe priwatne wokno +Name[hu]=Új privát ablak +Name[hy_AM]=Սկսել Գաղտնի դիտարկում +Name[id]=Jendela Mode Pribadi Baru +Name[is]=Nýr huliðsgluggi +Name[it]=Nuova finestra anonima +Name[ja]=新しいプライベートウィンドウ +Name[ja_JP-mac]=新規プライベートウインドウ +Name[ka]=ახალი პირადი ფანჯარა +Name[kk]=Жаңа жекелік терезе +Name[km]=បង្អួចឯកជនថ្មី +Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ +Name[ko]=새 사생활 보호 모드 +Name[kok]=नवो खाजगी विंडो +Name[ks]=نْو پرایوٹ وینڈو& +Name[lij]=Neuvo barcon privou +Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ +Name[lt]=Naujas privataus naršymo langas +Name[ltg]=Jauns privatais lūgs +Name[lv]=Jauns privātais logs +Name[mai]=नया निज विंडो (W) +Name[mk]=Нов приватен прозорец +Name[ml]=പുതിയ സ്വകാര്യ ജാലകം +Name[mr]=नवीन वैयक्तिक पटल +Name[ms]=Tetingkap Persendirian Baharu +Name[my]=New Private Window +Name[nb_NO]=Nytt privat vindu +Name[ne_NP]=नयाँ निजी सञ्झ्याल +Name[nl]=Nieuw privévenster +Name[nn_NO]=Nytt privat vindauge +Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ +Name[pl]=Nowe okno prywatne +Name[pt_BR]=Nova janela privativa +Name[pt_PT]=Nova janela privada +Name[rm]=Nova fanestra privata +Name[ro]=Fereastră privată nouă +Name[ru]=Новое приватное окно +Name[sat]=नावा निजेराक् विंडो (W ) +Name[si]=නව පුද්ගලික කවුළුව (W) +Name[sk]=Nové okno v režime Súkromné prehliadanie +Name[sl]=Novo zasebno okno +Name[son]=Sutura zanfun taaga +Name[sq]=Dritare e Re Private +Name[sr]=Нови приватан прозор +Name[sv_SE]=Nytt privat fönster +Name[ta]=புதிய தனிப்பட்ட சாளரம் +Name[te]=కొత్త ఆంతరంగిక విండో +Name[th]=หน้าต่างส่วนตัวใหม่ +Name[tr]=Yeni gizli pencere +Name[tsz]=Juchiiti eraatarakua jimpani +Name[uk]=Приватне вікно +Name[ur]=نیا نجی دریچہ +Name[uz]=Yangi maxfiy oyna +Name[vi]=Cửa sổ riêng tư mới +Name[wo]=Panlanteeru biir bu bees +Name[xh]=Ifestile yangasese entsha +Name[zh_CN]=新建隐私浏览窗口 +Name[zh_TW]=新增隱私視窗 +Exec=@EXEC@ --private-window %u + +[Desktop Action profile-manager-window] +Name=Open the Profile Manager +Name[de]=Profilverwaltung öffnen +Name[cs]=Správa profilů +Exec=@EXEC@ --ProfileManager diff --git a/www-client/icecat/files/icon/icecat-symbolic.svg b/www-client/icecat/files/icon/icecat-symbolic.svg new file mode 100644 index 0000000..723eb69 --- /dev/null +++ b/www-client/icecat/files/icon/icecat-symbolic.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a"><stop offset="0" stop-color="#d4e3eb" stop-opacity=".5"/><stop offset="1" stop-color="#d4e3eb" stop-opacity="0"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="64.8" y1="175.6" x2="114.7" y2="175.6" gradientUnits="userSpaceOnUse"/></defs><path d="M255 179a107 100 0 11-213 0 107 100 0 11213 0z" transform="matrix(1.08865 0 0 1.12618 -15 -32)" fill="#002452" stroke="#000"/><path d="M35 141l7-9c6 1 10 4 13 8l3 3h2l5 3-1-2 2 3 3 1h1l7 3 4-5-1-1h4l1-6-3 3-5-1v-2h-1l-2-4h-2v3h-2l1-6-4-1-2-2 3-1v-1l-3-1 3-4v-5h-3l2-5 1-6h-2v-2l2-1v-7c2-6 4-6 6-8v-6a95 95 0 00-39 59z" fill="#8ac2ff"/><path d="M102 139l3 5 1 5 7-1c12 9 7 11 6 14l11 1v-2h5l-1-3 1-2v-3l2-2v-1h-4l-1-5 4-4 2-6v-3l45 6 3 3-1 6 3 2v5h-7l-3 1 9 2c3 5 5 6 7 7v17l-18 24-7 1-5 2-8-1c-5-2-4-4-1-7 3-2 0-5-3-8 2-2 2-4 1-6l-11-9-2 8h-3v3l1 1v5l-4-3-2-1v3l-2 1-9-6-1-4h-1l-2-3 2-3-3-4-2 3h-3l-1-3 1-2h2l1-3-2-4 3-1v-8l-5-3-4-1 7 5-1 3h-1c-2-2-1-4-7-6v-4l-3-2 1-9z" fill="#5ea9fe"/><path d="M39 122c-1-60 35-98 94-108 44-2 66 18 89 28l6-13 3 1 6 7 7 1 13 9 39-3-1 11c-5 4-11 9-12 12s-2 4-4 5c0 6 1 9-2 13l-3 21c-5 4-10 8-14 14l-1 5c1 1-2 1-4 4-3 3-5 3-9 2l-8-1-2-3-10-1h-2l-7-7c-10-1-8-11-12-18l-9-10c-6 2-10 7-17 18-1 11-4 13-2 32l2 9 4 16c3 5 7 10 7 16 4 6 4 11 4 16 4 4 5 8 5 11-1 3-1 8-5 9l-8-1-1-2-6-1-4-6c1-6-4-12-11-18-1-2-6-6-4-7 2-2 1-8-3-11-3-2-4-6-7-9 1 2-6-14-5-16 1-5-4-18-6-18v-26c-4-19-10-44-47-30-8 2-27 10-53 49z" fill="#f1f6f8" stroke="#000"/><path d="M146 152c18-21 33-48 50-63 4 7 7 7 10 13s1 14 6 15c5 2 7 6 12 9l13 1c1-1 0 2 1 2 3 2 12 3 13 2l15-28-20-50-40-18L71 59 43 86l-5 39c8-13 20-32 32-39 57-42 68 5 67 9l7 41 2 16z" fill="#d0e0e9"/><path d="M191 258l3-4v-5s9-9 10-8h10v-3l5-1 5-5h2v-3l2-2v-4l3-5 1-5 3-3 3 2 7-1 1 9-3 6-1 7-2 1v4l-6 4 1 1c-8 12-23 16-44 15z" fill="#056eff"/><path d="M210 257c22-23 18-29 18-29h-2v4l-2 1-6 4-4 1-1 3-10 1-9 7v6l-3 3c8 2 13 0 19-1z" fill="#00c5ff"/><path d="M91 157c25 55 40 83 103 101 33 2 51-25 62-47 2 12 1 24 0 36-12 19-24 34-49 35-29 4-61 1-102-29-48-47-38-72-40-94 7-19 16-16 26-2z" fill="#aad4ff" stroke="#000"/><path d="M69 195c16-1 34 6 46 10-7-10-15-26-23-43-3-7-8-16-18-16-7 5-11 16-9 30 1 6 1 14 4 19z" fill="#f2f2f2" stroke="url(#b)"/><path d="M65 175c9 2 14-6 20-14v12l-19 11-1-9z" fill="#002655"/><path d="M72 208l24-14-3-7c-7 5-11 13-25 13l4 8z" fill="#00244f"/><path d="M77 217c9-3 18-7 25-13l3 5c-9 5-17 11-23 18l-5-10z" fill="#002045"/><path d="M89 236c9-5 19-10 25-17l5 5c-4 10-13 16-21 22l-9-10z" fill="#002655"/><path d="M106 253c31-16 25-19 25-19v1c2 4-1 13-13 26-5-2-10-4-12-8z" fill="#002a5d"/><path d="M130 267l14-22c0 4-1 9 2 12l2 1c-1 6-4 11-3 17-10-3-12-5-15-8z" fill="#00346f"/><path d="M156 278c8-3 4-24 4-24l13 14c-2 7-2 13 3 15-7-1-13 1-20-5z" fill="#003e84"/><path d="M188 263c20 6 13 12 20 19-6 1-11 2-20 1 7-4 4-12-1-20z" fill="#004fa5"/><path d="M225 262c4 5 8 8 11 9-5 4-10 7-16 9 2-4 1-10-1-16-1-2 5-2 6-2z" fill="#005cc1"/><path d="M213 79c-2-7-1-16 7-33 1-2 2-2 2-5l6-12 4 1c2 3 3 6 5 7l6 1 14 9 38-2 1 11-11 8-4 7-2 1v8l-1 3-1 1-4 22c-5 5-13 8-14 19l-3 3-3 3h-4c-1-8-4-7-3-11l7-10 5-1 3-2-12-2-3 5-14-16 1 16-8-1c-3-5-12-8-14-14-2-3-1-8 3-13l7 5 7 1 8-4v-8l-5-19-4-9c-5 11-3 24-14 31z" fill="#6db5ff"/><path d="M40 103l13-26 16-10 54-1c9 1 11 7 13 13 8 1 9 5 8 9l-6 9 2 32 5 8 1-21c0-13 3-16 6-19 33 0 33-25 35-50 1-1 2-3 5-4l23-4C113-3 54 32 40 103z" fill="#5babfe"/><path d="M62 50l7 2 3-3 4 8 3 1v-3l-7-13c6 2 11 8 14 9V40l2-2 3 9c5 6 6 10 8 14 3 1 5 0 6-1-2 0-4-1-5-6v-7l-3-1-1-11h3l7 21 14 8 4 1v-2c-6-2-11-9-16-13-4-9-1-10-2-15l4 7 10 11v-4c-9-12-4-13-6-19l3 1 1 9c5 5 14 8 14 17 2-2 7 4 9 14V60c-6-5-12-14-17-23-3-5-2-9-1-13 2 2 6 2 7 5l11 23c8 6 9 12 8 19 6 4 6 11 7 17l-1-13-12-43h5l2 6 5 3 4 13 1 23 1 1v14l3-14-2-3V51c-3-3-2-7-3-10l2-7h3v12l2 6V41l8-5-2 20 4-19 6 1c0 16-3 28-4 41 5-6 4-22 6-34l10-11 2 2-7 18-4 18 1 1 8-21v-4l4-9 7 5 11-5c-32-21-96-50-154 11z" fill="#004ca0"/><path d="M226 68l1-14 6-13v-3l6 2 18 10h25l-22 8h-7l-17-13c-6 7-8 15-10 23z" fill="#003a7b"/><path d="M237 98c10 9 9 11 9 11v-7c-3-3-6-3-9-4zM248 127l3-3 5 1-4 4-4-2z" fill="#001c41"/><g><path d="M240 120h-8c-1-1-4 0-7 2l-7 6 7-7 6-3h9v2zM234 117l-10 1-11 4 9-5c5-2 9-1 13-1l-1 1z" fill="#9fceff"/><path d="M241 122l-12 3c-5 1-8 6-12 9l6-7c4-4 7-4 10-5h9-1z" fill="#9fceff"/><path d="M221 131h0z" fill="none" stroke="#000"/></g></svg>
\ No newline at end of file |
