From f63a3e07b5466b1ca5e52831a26ac8b404c8be6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Nogueira?= Date: Wed, 24 Mar 2021 09:59:36 -0300 Subject: [PATCH 1/2] firefox: update to 87.0. minidump_writer_linux has issues on musl and doesn't support all platforms Void does (thread_info doesn't touch ppc*), so we add a patch to not build it at all. It seems to be a build system bug where oxidized_breakpad can be enabled even when --disable-backtrace is set. bad --- srcpkgs/firefox/patches/musl-minidump.patch | 31 +++++++++++++++++++++ srcpkgs/firefox/patches/rust-has-i128.patch | 21 -------------- srcpkgs/firefox/template | 6 ++-- 3 files changed, 35 insertions(+), 23 deletions(-) create mode 100644 srcpkgs/firefox/patches/musl-minidump.patch delete mode 100644 srcpkgs/firefox/patches/rust-has-i128.patch diff --git a/srcpkgs/firefox/patches/musl-minidump.patch b/srcpkgs/firefox/patches/musl-minidump.patch new file mode 100644 index 000000000000..c35f75b2d1bd --- /dev/null +++ b/srcpkgs/firefox/patches/musl-minidump.patch @@ -0,0 +1,31 @@ +diff --git Cargo.toml Cargo.toml +index 4076a60577..945f26f638 100644 +--- Cargo.toml ++++ Cargo.toml +@@ -13,7 +13,6 @@ members = [ + "netwerk/test/http3server", + "security/manager/ssl/osclientcerts", + "testing/geckodriver", +- "toolkit/crashreporter/rust_minidump_writer_linux", + "toolkit/library/gtest/rust", + "toolkit/library/rust/", + "toolkit/mozapps/defaultagent/rust", +@@ -79,7 +78,6 @@ spirv_cross = { git = "https://github.com/kvark/spirv_cross", branch = "wgpu4" } + # failure's backtrace feature might break our builds, see bug 1608157. + failure = { git = "https://github.com/badboy/failure", rev = "64af847bc5fdcb6d2438bec8a6030812a80519a5" } + failure_derive = { git = "https://github.com/badboy/failure", rev = "64af847bc5fdcb6d2438bec8a6030812a80519a5" } +-minidump_writer_linux = { git = "https://github.com/msirringhaus/minidump_writer_linux.git", rev = "9191af36343846b2c7ada65b9602b481b717c4d8" } + + [patch.crates-io.cranelift-codegen] + git = "https://github.com/mozilla-spidermonkey/wasmtime" +diff --git toolkit/moz.configure toolkit/moz.configure +index 806576b1ef..43ef8309f1 100644 +--- toolkit/moz.configure ++++ toolkit/moz.configure +@@ -2487,8 +2487,6 @@ set_define("MOZ_USE_NATIVE_POPUP_WINDOWS", True, when="MOZ_USE_NATIVE_POPUP_WIND + # ============================================================== + @depends(target) + def oxidized_breakpad(target): +- if target.kernel == "Linux" and target.os != "Android": +- return target.cpu in ("x86", "x86_64") + return False diff --git a/srcpkgs/firefox/patches/rust-has-i128.patch b/srcpkgs/firefox/patches/rust-has-i128.patch deleted file mode 100644 index 4c90cd3d1061..000000000000 --- a/srcpkgs/firefox/patches/rust-has-i128.patch +++ /dev/null @@ -1,21 +0,0 @@ -The configure check fails for cross builds. -i128 is supported since rust-1.26, so it is safe for us to assume it is always present - ---- third_party/rust/num-traits/build.rs.orig 2020-02-14 23:57:25.985355610 +0100 -+++ third_party/rust/num-traits/build.rs 2020-02-14 23:58:36.255710188 +0100 -@@ -1,14 +1,5 @@ --extern crate autocfg; -- --use std::env; -- - fn main() { -- let ac = autocfg::new(); -- if ac.probe_type("i128") { -- println!("cargo:rustc-cfg=has_i128"); -- } else if env::var_os("CARGO_FEATURE_I128").is_some() { -- panic!("i128 support was not detected!"); -- } -+ println!("cargo:rustc-cfg=has_i128"); - - autocfg::rerun_path("build.rs"); - } diff --git a/srcpkgs/firefox/template b/srcpkgs/firefox/template index 789de2945b93..24532547df66 100644 --- a/srcpkgs/firefox/template +++ b/srcpkgs/firefox/template @@ -3,7 +3,7 @@ # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-i18n". # pkgname=firefox -version=86.0.1 +version=87.0 revision=1 build_helper="rust" short_desc="Mozilla Firefox web browser" @@ -11,7 +11,7 @@ maintainer="Johannes " license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later" homepage="https://www.mozilla.org/firefox/" distfiles="${MOZILLA_SITE}/${pkgname}/releases/${version}/source/${pkgname}-${version}.source.tar.xz" -checksum=74f99c226ae6747f0170566f4f88be410866b0120214d2a593566cd1fff3d3df +checksum=ce98be0522f971b6950f22c738c4b2caf19cf7f48ab2ae2e6d46694af7fd58ab lib32disabled=yes @@ -65,6 +65,8 @@ post_extract() { post_patch() { _clear_vendor_checksums num-traits + _clear_vendor_checksums libc + _clear_vendor_checksums minidump_writer_linux } do_build() { From baf633b8742d3f494fdda21e45e263b91489043a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Nogueira?= Date: Wed, 24 Mar 2021 10:00:36 -0300 Subject: [PATCH 2/2] firefox-i18n: update to 87.0. --- srcpkgs/firefox-i18n/template | 194 +++++++++++++++++----------------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/srcpkgs/firefox-i18n/template b/srcpkgs/firefox-i18n/template index 802c189f2d70..8d9361cc775a 100644 --- a/srcpkgs/firefox-i18n/template +++ b/srcpkgs/firefox-i18n/template @@ -1,6 +1,6 @@ # Template file for 'firefox-i18n' pkgname=firefox-i18n -version=86.0.1 +version=87.0 revision=1 build_style=meta short_desc="Firefox language packs" @@ -140,99 +140,99 @@ _pkgtmpl() { } } -checksum="af01f866c9170cc4cec88918193fcb9c5d0b06fcad3c6977471f7aa816107ebb - 642dce30853c375a8e832804794c8113d3999eb12227ebf0d85fb0ce7a0b15f0 - 9f84a442d5388b1048a57c78ff48acb113220bb78148f9afb83a23c31aa7c295 - 282d8b5d7022eedc58ff49ff8b39845e020b24cec960a82db6ebaa386041f867 - aa0c8d3db9183e4ef8ee30f3cd16f09692f0dc26f6ef42b07df9e575dfc5e50d - 343473d0924b397bb950dc73495fcd20b42ec9a94a2ea7962196b6c9f9fc8534 - ba6ab74a88a20119c8e05f3a22f6928d06e0ec54a7dd86083625d6bae691927a - a6ca86dc5c7301af792f0bcf79e2e469346d8e96c84016ae6e36b1681eed3094 - 236e2d51b1d82eccbd75c9d31fb8df9d514888b0ac1710139e4ce63de5ccb4de - db0e6f3c0675bce3aadd1ead698da15ec6ad8a7347dd3c8b688bd66fb4b1bf2c - 1278ade2265d8ea2db2afc9a6811b66594534f797c44b190ac70ea43b5e8b524 - 9c112f14f264b172f63eb8d1404c8f841605f53c2e9fd3fd64ffe4c4409bcaa2 - eae41af20ea328c90bcec8ee262e263964f19e2f9fc89232b8e161a4212e0f90 - b7f2f6ff58a86b8272ba3df7865f148cafd49596021c388d658da9c39e365e8b - e939912d0fed610b7bd39b9ff059887a944d3bd56c43d619d9690a1d5e9f22e6 - 54c9cb532c8ad909f4c70ef744fcfce4c4949886ddcdb93efe8356696194ffb8 - 363110daea0019adbe2cdb1edfe148be2d33b1c76596c3bb35bc2cca2b0580e2 - f86b9c6fc790302572797dda01f9a9a2e776a47fb7859684b1e3c065dcbe71fb - 49cb36e5ba18c10a3dbc7658146b738a6392ed9bcfd65059a17e43d3e7a55ec8 - d8e5e22314607990a26f36bff149ed7577c49879d66258ae6d4a29dafc081c7d - b502b818c9f897d71e8600c27c9ad6b09712273d79ff023fd9cb024196b8ed8d - 5416de3cc577ab1a8827568056579067be57b655120e8e9e9da38a435a3d2e19 - 26cfb9d329bf7d5ac82018d65a0bc494b2096d1152e0cb45bc28a44f3c0f2553 - dec7b7a0add9ebd625d7a08bd59931dcb3d48fbad14b54b5186f53c3af2dbe8c - 28bf31533c169a67a78510aeef0b5217c133ecb37f3d59c01f4e9a82a2a564c1 - c3fe9369dd416c45ad5a47aaa4655332d73c6e1a5a3e35dc055306188aa8e76b - 1fbc294c4a384f6ef9690176c6e976c901b7746fbee708e8fdccf538fff9abd8 - 8dabc9ce80b55cf83317fbd15ef73d0cb820d5addd105c251bd31e8e9ad7951f - 25779a4db5d27f44eb744b16e925f8c292e169910ae3b4923ab9cb2e1ecaa585 - 7d0d177fa24783790b72c4c9d9415dcee29f31a5f5cdfb364c0125c0d1e32aa6 - f5b22e3e2c7c95d70146f9bbd91d5f6d7a6bb7355188c00109695e88a4156ac8 - 207ec843707de83de95b0a1744947403bcedb4cf5b1721b8ec5f1c4f0ce890f0 - 6c8aa3666975ed8654f85b9db7530163ae26126c9c2544bd70b6701e99a175ba - 8e8bf61fce167577484216166d3b5114e2e38d560d3d280bd8ed3ca95a4d7ba4 - 2b40321c415ccb326813d4397cf12c54b9c620461b0fea52c1c3724c5d8ad739 - c035a7c5ea8bebb15faf6a5025e31aed7a7ab480ed8415082b2b840ce2559375 - 9b77ce3d9c1f2997412aae10acd572f57ef6b114d0db73fa823b1526ff9df788 - 0b9104f4f94a4fb9e9b5aaa0b612da810462dd602c1d5325a0873c0c21391ee8 - 39b41ba79fb0dd1101667d13a584d12d6e8bc963c639bcb2762a3b3f26880bf1 - 8a6bdf5515c07ade58dad49b861f079f83b5b9f17a613b6ae40b0d0ebfda73da - d12b516df77cdf4d54ae854cbb84df055767c3355f6f5bdfe28f570db9c65eb2 - 5045c7007229fc6ee5a99b497cd2a6a212db0157e7012215b1325f5db02b770d - aa7971ebe04dc1a6f039a9e60b1768e8526b9f566f4e18aba7777e785d10a496 - 03ca3ed69f9bf1720eac8fba7c2f29cdb89359182eab1d7a2c9d52be37b55dfb - c789165a027d811be0a06045dfaebf15e9e9f0c1b8996882ac124cc6867b0406 - 1847e0e412b6d6d6a29cb9726fb585e6871d32327a05df4d0595d792fa3ed8e3 - c7f56a5b787d023060996b873f8bbd4853e15fbac56ef8adf735fb8da961487d - 41f70c0af5f84450504a0e6e7a07db0c0bb18cc114d79c1e6d2537ce95429384 - e5a820c7c0f60a200c6cfd601428b9f6942dc2a1e42c893386f3e83cc85055b3 - f1bddcd0fcdfb5a73134a9ad7f31583f0b2f7d733b6c4f33c007375a5c76072f - 87def770f2249cc4b52c5112b5dfff3ca319094031bdba8a5ee7e8fc1bd6a8b7 - 922e1c754c86eb50e913101e102c5e43679d2863122f2b0b9275469e01f8a356 - 40058ece188f8af5e22ede12a6980d6b9462a809e03d38b1766e3cdd53dcbd35 - 9dd627b3f446827eacecfde068000e263f49ab5a49b2b2eb8b4b8d94a841fb84 - e6d5f95e02c29cf5385858f027037a9befc1f2e1347c821d4ea441caf0c4feea - a6cafcbde68c68383ffb0cf26b1606ad7fcef3c5cb12a361d76782be49165d26 - 4004a6b3f50ecf919f6460d7eeadebcecf73a15b1c04923bf523cdf579d66716 - 1080b730b03da6b503c2dd6d6f99c8a80b0cc0cb04e7290edbe7b50c7922c23c - 26ec41a68676e2f7f710f22c3a206859c5312b79d9b36ac093c97acb48f0dafb - c18e6afa9eac58377b38dee777467c5b44ea15a2be789495f537ca8d8ed4b0be - ac72fa78be1f9f0b68fa2b69ecb5cc4ab81d2f13d591de87421f60814d2c1040 - 0de06bd2fc537ed3754a3c34b03f72aac9a796a9d45bbcbcc3cc4be3a8b888e9 - d2e2142350bfb7c7ef91d57a8d60d782f9dc7b174ca4b30df8a4d8023a85548e - a4d12b42bb66d2b96a75fc5ed8aa8493599367c641c42aabe7dbc8c37e256e56 - 75f61972fad39001c4d2d786960181adbf95d45ec942b2f0776d17c44afe9d20 - a85f0c9fe85686a1aaa707f2fb0458639f07dec433f37edc6d62236667503c66 - 0fada8063177ff63bdf169a13f7c8a3ced38d1536cadf5c76729c469e6061d93 - fec2ce51ec866bf41a94595a1c4d25a0a17b559bfd0c3d92bf2a94ce334a135d - 3b4fb8fabbff7b98eb5358cafe227e80f0a8aac4f5c0c85b9a64aeaf6eead0c2 - c953a094411d73b3f8250f58ed46ccf0adadcdfa7cf80e1ec9af16bebb405a06 - 0c49d581eb7ad9708e30c544f8fd836ef2c5a269fef6873455721968e859d501 - e0fa5b9a5338cb49539403c8d8b3c8a7e366d994f9396ca1e9a5d33fac11955b - e37752cafad0ddd10e1cdcf1685ecb244fb4c1fe165aa0e4e62018ad5037016e - dccc14cbe5ad0b3169726587e1eba8fbd54b18426e7a6bac2ce00881c7d64833 - c5a06b8d27743b63e6e9269203a2364f611ab1a20d8828e9507f3edb467e1d94 - cc36b10ed1cac3b49e4fc2f6b35669c3b3daba1d387bb8314b9bdc6536bba70a - 24ec156161363934e76d8c39d3be800904fbfcbc450e4c2e2b481a5640399163 - dd1f84c1ec98bca627cf49d51105bd17224dbdab122b0f2aacc6c3aecf3a8ed1 - 55b16c749da648ac8a0a327d859d1cc7d43bbb93657b52fce678d794e866da37 - 04ef7bbb1d268407a645efa0d261f615eb4a48111424b4c602782d3c1c5dd4c4 - f930b5e8159fc6e2e0756af0029ab1f8b7dbb1b155860aaaf95019bc0908ed7a - b939c6f13cf53e89aa0c2d23c8c4a9047c1cbd7b6fbd7809056e71ccfbda11f8 - 6dc2a0c8282706200f470d3ca1e59fc84b4098e77a7c2409e53441234b8f3832 - b0567b9434f892c1a5f80fcc1c6bc331a20690b9dc0225ef64aa117bc2cccc1b - 1cb52390bffc3d5519550f00760a8578dd2f11b7aaa97f77fdab7cf8c16bd8c1 - 8326af635bc8be89eae53eadd9d58e0d6f8254d312110b87f6a480e89811402d - d4ac4b1335b5492180969d1f7230b55983f498e9cf1e6b5f4c44f424832e1d2c - a5be8e5b651c964fc346f09d7d23b097faa346b321f3e895000b0de50f7e656a - 99c82d1bfcba0b8e720aafc252cea6a6692e0563ae8fadfa9cfa7eeb594d1220 - f7112cdbc92d212ec7372b9006168e2dc42e4c15dba9c5eb881e3a2f4c669881 - b1bcf2b75d19a84f52251efb775ab752b787d8059fc1558728db919cd80027f0 - 356c804386068f33804bec8a9209f214b6a483b4424dbbde2c439421fed5229a - 2f73f71925ccb330fa767bca3da18b046c0b8adb91535ff15aa0779b15c2f68a - 7c01e76161e47b42b640c71f3e99cf2aeac1034e61967193920b6ce5f8985e61 - 8792e2547fc57c3eaa24a6fbb3d71f11f24acc4796c034c9ea382de0ca775096 - 30c242b39f2ab9abb32dbb7b71f3712c71f10e677f44684eb4ce10255a626a99" +checksum="d1e2d105de95506ac492db9227c9bbbcda5a4e7bfd4fcdc5e9e00581022409e4 + 01351f2e6cc1b29d708b3c28fdca5a1eed281cebf74ec20047ad391d2dab50f6 + c6687681eaea5f67ecd32e0fb472eba0bc309d70dd29f804bc4b9554b6382ea7 + 1832c1cd9d1f5ce9275f606177ee0b360f22021982e119034bb5e010dc6504a9 + b0cb337a77b787cf098bdec66f3ab39b1bc1020357d022e4e1206b73ce78390e + 51ce59eb5fe02a4900f1d9a58f7fb452b7b28dcb8fcf8f4336cc1ab5a641c03f + d3cae593077f7117017bb18ff43d1d5f2ea085c883d8d1d5c1cc86637ad54ffd + cde7feb0cd0cc97d2bc158e31c7fe51e802eda14198e74ad79c66f04e6d6442a + 7430babdb570d4c164ec52fdacc365587251980d36173105a789c3306f48c357 + f42637799eede7d54d26edc27ee764db6a27b14d8cd0dc831a156c764a5d5161 + 891a057e0b89dfaef33049c4b89ba2f022b993e1b20574a875fba136a7705089 + 42bf7a18097db270f0d3c39ad4e36f639eadaf8da4d12b727d89d11fe5023bcd + 5cdc24dd5717215719b080cfbfb315311c713a88f99d05a20e137e42a076197b + 2552db539ff62848e8ab00470d04326cced80931fb9ff85f4d1fe42dbf037259 + 36d841e3bf1bf796ecb35b002fe7ad8df1fa7f6afc6ad1495aa5aa23384ac5c6 + c599bce4cfba87803772d42beec9dfca82c5526bbb84ffca0d43619ba6b1850b + 26fde9b15e4f86a69db0293c00e091dd3be7dd625d145b0398912ea781845a9e + 8352abf54e5b2c4df588d649060ebca2e4981495ed5750c5594b19583df49a02 + b86448909258199ea18718ba955ed8b77c0b0f5de27b3d693aaa04e1aa8fa7a6 + 8eb8d30143ee79a2004fcfb480c612e265165072319a6d29fb9e8450e8bc0c81 + fe3f3fb58b2df9183069fa15b6655af1ddbfba84d1ee73f92d50131f321a5e29 + dbe6ea63212798aeb1417b4e6cf2dcc30db5e8c959075a7a0f1cdbf83b525dfe + e8f93991aca36a7eb3ce8bf8a398ce53df9f65e0349dc1e11e74d7409a060744 + b5099e0caad7826be0f9b47d09438b54e22394475663a9ae3a3e1654ef58b434 + a9b122c66d07330fac0b14c5baba29459454244c49acf71324c77ae62b3cb9c2 + cf4947982416075e54b475c5be5d5ea88e34e0613dc7edbffa392f47b546f806 + 1195bbfbea0018b92467183deaedf0746451ebe6d2daef4aa7a06abe5a1f3e73 + 4fdc0caa3a0bb610133bcf2ba4c7733e44d7b4a020871565b58d7d728db27423 + 3ffbeb5af967630ce17999e501ad9ef14c7b3ffa50815e0057b1a82d11645cba + 91097777de3a4574566911c03d025f2580a487d7bd577b2ce410b6e01590247f + 2353f0cbb0ca615e09696a310267fd8f2143ef6ce9fa538a57391c92bcab5a8a + c9cc8018d00df57061049aa162756d5d63e6426c568da23c9e98d3626c75273e + 8c7bffac08f163700b0b04037fbc3e94d25e4b10569dbca67303b01ae099b95a + 1c3fd925c05df5df0e6c31eee73f8f994226da3fb51048e06b455d91252a3d69 + 75803f71e173075adee196d17c7ad8f6fb9583ce5dbe2c95fa5507f0bd06f2e8 + d55a4f76300bf6c65271c009a22d2014c860c7498c77efce0e5b25e863ee56ee + 2c71ba0c37d6b4009105131720f8654b49a596c0b5a82cb946090ab08d3b4633 + a38707ce837b2951426541eacbdb8d54fe1fb571aa688e17ae37fe68eda1558a + 50e864c2092ef011ef9468cc942e5558ada194d2cdffebe08aafee1cf828cc72 + da0518cfd6b7c17fd648c30b48eae6f8fa6d25c94974a779e248e74eaf663a54 + c052b291eab3c8886f9e6004a6fbac1cd72cba47386dad1ee9c35a4c2f6028ae + 5e754ae4bd1e62dc7fbfd86b17224b4e53e07839b459c1c9eedc01ae7d0eea4c + 074e6b9500005a2e784c3be9ac02cbb174c3eb6d3a3806142f9552f58fe83f48 + 889ade43266b67293eb4944daf2d8cf5ad4cef9df68b831628552a83e4ac725a + 2b9b7236d30b987a82931a576e7b419ba9814b5b40933ab4bab1ca40402717ae + 0aebebb6597b49a49a53d2193043801b3fba3bc2745065268a0d9ebd20d11a33 + d27030e36e8857ba7fca384df21079dcdb1e3cc4b753e69462e3f1cb171e4e4f + 141c74d88cd41efd49cfd4f010c66cee03a355e1174c26399903f763b16e22f0 + 75ed089e5b417174a621d7100d7701fdf646c19019b006df43b62c45c11471f4 + c38f03d1b2e3ebc70571daba4a6eadb50d5f99a28de44a863d04ac8b005f9d4b + 0cc12225c2aca9a4ef3603026f7b1977cb4234f49c3605fd42b814bd53753f23 + 6c387b966dc66152f886163d524e4b6e410a9a22a532be44884c4685edf9b749 + 9130b034b4f7f33e61fb3e318395a2a3807126a1d711adfb16a9966b2f5d902b + ee2db2900e36ba1f823d38a8e39497215b0652b0e2184f1ea5942812e59def01 + adf75fc6ea23372e473aa8e5c91a6054d1c435c4029c2d5a7741c3894942aeda + 7c25085b1c6654ca2ee928fb6b70e98606f06762c09a438c1e6d774030b3ea7b + 24bf2101e4c27bcef803759ad32903b6b0389e4ff0db7ae4df62ed28ba18bec8 + e0b6ce49420ad06705cd186406f0e3a41799edf730d2241672d03ce77267e00f + 9bda2429e3d92184eb70740e730ec361af021a48080fca1eaa3004e2e438022e + 8a894503fbf68203911463def3adb3c3ac7853c8f4640ddc6dfa5695d5ba9522 + e4bad7f42efd58a9c3b8ee131f3e689460602a2862f06a5ad11652d3e3a1438c + e38516ff3902c3f82e6a92d2cc7fe385cc912ed543c6c5957625a254633705fc + 2f925f382d45f8d6d6d287a1444aab5136373214f88ca48e2c079393fa613fc1 + 15a472eb1cc5f7e72d2d205b6830c78ac61d3e9a85420ea9ba13bc8c3134d418 + bc824e2da09ff8da71dc0cac0a4da3547be3b0ad4635380438fcd371ef7caa3f + 4f4d6cf74ffee459bfe5a842f29eee70c3c04409ed4deb0f34c957ce22d4906c + 90837cb76ec549e90e16afc015bd0110622c9681f126377b71698cc29aa0d451 + d761b47ccd1d45546f4035e5c06d46ca511aa79bd2dd560cb65c27bdc533b261 + a0cb14552be607fb610e4196c0f0ff20c6fd9fb2225808b6fbfb4516f38e9a8f + d445bba51216686a580793e6f47588833a9c2a8d88c8133c1cfa266fb70d1b6a + 829621f483c2ee700c289159b6a6f9185b25f79a4f3d376c3a95bab9eb4bc771 + e65581605ef2940d2e300a09d388dcb3869e3333ba77ef9de5f5610106598e7d + 6a4712d433ea85eca4e2cd32cfc467a8717f8280610e155ba481d99f16c6d3ca + b9ce23f90bfb5ba95e4515074233128b6d61896bfd33cee22cbed4c7c4147dcd + 8f2474ee7b737fd22ea86084c533567125f9504bb98c1fdb5898d05a6cad613a + 0123e7b8d8cf0f4f0474dc62b93428d63d0dc423a9a53adb3e7b28d40bb4fbb8 + 28ff00508f9c8b0911c808a606edb536efb523b0f361367ad85f9326de4e7734 + 9fa20f7025663bdbb4adf699da123352995cdd4ead088eca3b0c54a827d7bcb0 + 81e5b0fe991b1d16fb443c08ec8500d57d5ae61b2eae892e6da418d6dad4f54e + ce26e656580fed093f352c8de05f176831e109af78533c26f1bfa9fa79da8f83 + 63db0a0572443d73f5229b39e1335bf72206a0822787c5eff1aef539d72e0db0 + b78c790d0a192578d4423d5ff7b6766bc0d201e915d9fb8b06f4732a05df384b + cc6195820338da2ea15e06cd394dc083ede55a7089568ba08eea6ca40eb3cbc7 + 9d38f83e3aa09163daf6577708d308629f36e7f0c4391fae91e8cb9b0e381fdb + 73003f8f885ec53f44d3d3437a2ff7d4a57d4502092f0c8823df0f186068c126 + 34839ece9535f009b34a98c9f876513897f193dcd88a99503b6f0a36200c065f + d563ba32adef055e837c4b61833bbc9942f713585d35affd135f5743afb3a49e + 0c29382fe9c0471d560925deec08e01ef36cb008a8f53fe0be0c7dd34fe74cde + e9dc7379d6e579109bafa395ee2d5c9030d3d61b03257b6dcfbef29d837eaf94 + 935bcce0802ffb08e689e7bfb4012a6690c891d8302484837e57bb16922dfd00 + 7910d0bb95b6c42339bd99fb664c14dd94f8b2931cdc7f7dd4a717f812016054 + 01597f20969a2df14e8e2b2f99e718a9092d33f042b85214971dbdef592f5144 + 13eef9c82846f83f2d9913d0b7214de81725a2cc9468aa3e819f454e3f625bf1 + fcdd0082180be53895b344bca7dfa129547979452c82d6230a622989aea2a1cf + d407395855fb18403c1271cb5cebe0b6e2dc6cc0b5c9fa8a49ce14b0d660e304 + 9ca2d545df37e07ea30852dc4928bd2cd1afa25b60e702316ba1b412a1f30c84"