From 91bc42d45b177163cfd45f8b29421d7015fe6fb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Wed, 1 Jan 2020 11:16:06 +0700 Subject: [PATCH 1/3] firefox-i18n update-lang-list: use package name as argument While we're at it, stop create bogus symlink firefox-18n/firefox-18n The script always execute ln, if subpackages exists, ln will consider it's a directory, thus making firefox-i18n-/firefox-i18n symlink. --- srcpkgs/firefox-i18n/files/update-lang-list | 29 +++++++++++++-------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/srcpkgs/firefox-i18n/files/update-lang-list b/srcpkgs/firefox-i18n/files/update-lang-list index ff8042113bf..069e328a920 100755 --- a/srcpkgs/firefox-i18n/files/update-lang-list +++ b/srcpkgs/firefox-i18n/files/update-lang-list @@ -1,4 +1,5 @@ #!/bin/bash +# Usage: $0 # Copyright (c) 2019 Danh Doan # All rights reserved. # @@ -13,20 +14,27 @@ # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -version=$1 +pkg=${1:-firefox} +tmpldir="$pkg-i18n" -esr="" -[[ $version =~ esr$ ]] && esr="-esr" - -tmpldir="firefox${esr}-i18n" +case "${pkg}" in +firefox-esr) esr=esr ;; +firefox) : ;; +*) + echo "Usage: $0 " >&2 + exit 1 + ;; +esac tmpoldfile="$(mktemp)" tmpnewfile="$(mktemp)" xoldlangexpr="^_languages=" +cd "$(xdistdir)/srcpkgs" +source "${tmpldir}/template" + xlistold() { - source "${tmpldir}/template" for _lang in "${_languages[@]}"; do _locale="${_lang%%\"*}" [ $_locale ] && echo "$_locale" @@ -34,6 +42,7 @@ xlistold() { } xlink () { + test -L "$tmpldir-$1" || ln -sf "$tmpldir" "$tmpldir-$1" } @@ -51,7 +60,7 @@ xnewlang () { } xprocessnew() { - while read lang; do + while read -r lang; do printf '%-7s\n' $lang >&3 xlink $lang xnewlang $lang @@ -59,18 +68,16 @@ xprocessnew() { } xcleanlang() { - while read lang; do + while read -r lang; do padded=$(printf '%-7s' $lang) sed -i "/'$padded\"/d" $tmpldir/template unlink "$tmpldir-$lang" || true done } -cd $(xdistdir)/srcpkgs - xlistold >| "$tmpoldfile" -curl "https://ftp.mozilla.org/pub/firefox/releases/$1/linux-i686/xpi/" \ +curl "https://ftp.mozilla.org/pub/firefox/releases/$version$esr/linux-i686/xpi/" \ | grep -o 'xpi/[a-z]\+\(-[A-Z]\+\)\?' \ | cut -d/ -f2 \ | xprocessnew 3>$tmpnewfile From fb3b7f2978e0058ff7ddc54c89bed5756a953c4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Wed, 1 Jan 2020 13:12:24 +0700 Subject: [PATCH 2/3] firefox-esr: update to 68.3.0. --- srcpkgs/firefox-esr/template | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srcpkgs/firefox-esr/template b/srcpkgs/firefox-esr/template index abce771f678..c7877f30e76 100644 --- a/srcpkgs/firefox-esr/template +++ b/srcpkgs/firefox-esr/template @@ -3,7 +3,7 @@ # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-esr-i18n". # pkgname=firefox-esr -version=68.2.0 +version=68.3.0 revision=1 wrksrc="firefox-${version}" build_helper="rust" @@ -12,7 +12,7 @@ maintainer="Eivind Uggedal " license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later" homepage="https://www.mozilla.org/firefox/organizations/" distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz" -checksum=85f1c2eaf68ebedcbc0b78a342f6d16ef0865dedd426a1bba94b75c85f716f38 +checksum=e131149a70e7ae867d9b0ea081e8c081d056500ee51bb9270df247e977badc69 lib32disabled=yes hostmakedepends="autoconf213 unzip zip pkg-config perl python yasm @@ -24,7 +24,7 @@ makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel) $(vopt_if startup_notification startup-notification-devel) $(vopt_if xscreensaver libXScrnSaver-devel) $(vopt_if sndio sndio-devel)" -depends="nss>=3.37.3 desktop-file-utils hicolor-icon-theme" +depends="nss>=3.44.3 desktop-file-utils hicolor-icon-theme" conflicts="firefox>=0" build_options="alsa dbus gtk3 pulseaudio startup_notification xscreensaver sndio" From 231dccd5126396af599535bd44565bea7a3db1eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Wed, 1 Jan 2020 13:12:09 +0700 Subject: [PATCH 3/3] firefox-esr-i18n: update to 68.3.0. [skip ci] --- srcpkgs/firefox-esr-i18n/template | 188 +++++++++++++++--------------- 1 file changed, 94 insertions(+), 94 deletions(-) diff --git a/srcpkgs/firefox-esr-i18n/template b/srcpkgs/firefox-esr-i18n/template index 392764089c2..c3b68e69064 100644 --- a/srcpkgs/firefox-esr-i18n/template +++ b/srcpkgs/firefox-esr-i18n/template @@ -1,6 +1,6 @@ # Template file for 'firefox-esr-i18n' pkgname=firefox-esr-i18n -version=68.2.0 +version=68.3.0 revision=1 build_style=meta homepage="https://www.mozilla.org/firefox/" @@ -135,96 +135,96 @@ _pkgtmpl() { } } -checksum="1b2b833b8122d6f1cd6361ee22a06b576db06e984fc8860acf158240451869b2 - a5b0960eb0f03da27da2ac9546d46a124bb5c04b85aedd845c41dbe792a29b54 - ab9ae7cc3267c479e80523ff098bfe04b6545b4562d15828b25dade69531906a - 2819be31c0aa016fda3283e47ba3888160a8624ae98bba1918fc4677dfc0aafd - 7eb6f1899079872fd0137dbcad3db167bb559e8e537cc33a1c9b7b1db4de5b9e - 066e0fb03339768980d9410866f4b6a55658076bef14a8c583e619735fe969b4 - 9623abd417b94066f4983963b642d6acac915b7e0e95a912791116430c35dea8 - d0a81bc8b466cfa57a2c9e06af69db6961d5e14ba8a8f0420c2a2a164075f31a - 1088aabb5cdbf6f332eb1d381add64dd1600c16822a760f3f49effcd0931feb4 - a3ed954d5af9d1755b7fb5b4fd08384cdf53c34b7a79f9ec9999a7c26f83bd67 - f0bff1fcf96944aad0d7cb6f2fd199f87febc8d7d2e50c169ecefad9f5cbfd56 - 82f8e2d2113cabd28d08b129b80269f8aba4abf7352176c6d4c6001ce7b8836a - a006100a5092325c0c3e18b34dc786b6a07c007b8ccc569c9540a173b263be52 - 426e6f04e4d3b3a79451301947c744835c8b2ad350ce8a06403ec4ddcb04e9a9 - 0eb188aca78b03c8e88635bb8955a9e90214e9ec9dede861795a527c33142a5f - c60a7f51b331cc743504159677ad665ef38098082f763c0394e73c0c7bf3f685 - dde7a7faafd6e902f34ffbf5bd1f639da2b5f69c451edd48b708617b70c2f2eb - 3c1ec5c168364bbf1e69c227cf7e15f7a0c96fcfd10924c7017329ba1d3bffe1 - 8dd2a8e17eefbdab6f77a439e2225b5716e6aeda60cb3a91013547d11a85e310 - 5489d84e7e09d5d461ef3db98294dbbf8c62f7fd5f875709efdd9c83bfece928 - 10da2d6eb600b86cf5e994e983c3545ccf9ded04ea8a6f6b24195ee6fe79e4b5 - 5c5a71116913e67b3707c59706e3c12e7a0c7be7ec3b78cce13d9e24abb0f038 - a6489331e5caff34c748a783455058776db94a239d7f6583c8686639762fa251 - 58993cc094340092f578d8cc376f875112fdaf01615f3938db8ad953d891b9ad - 014b303877699aa2c39effbf4ee04134e8001d166f8988c6d58d6c18edb8532a - f311b908e63b8f1e6d852ef29399883191a37b44fe51ca31a487184a97a9dddc - d6684a228c150b19f6765519b3e0caac94497adab919bb1dd516fed4aabae484 - d3deb2c12d0466af161d509d1d2b38f7e85b49f8a520d5df0280cb29fac03049 - f92d1bdf3e25caf91962f0c2002c4cbc46263046657aadeb80fc0160aa6a5df9 - 5c7a146b9feed15e4dabe9e93b840e244ef4867b4a1e90759ba90f8c48f9d77e - 9a6b7fcc3d735bff9fb0038ce10e3e477c631e72b49f050144b24fd4fccad965 - c6b58061ee0153c86cbc4778debcf715e69625011179306f8c2f93316aa4ea53 - 39b179cf01417978366173855f35c4fc4b83715edf043879e00ecbf96af27b0c - ad538b32574e10e485d8f24c68e14ed44c7c5db3e6ae2e19b1b5a091b62a2352 - d5f79b94e0f8386c475d62acdc979b2ca047c343508deabe3754ee1cf61a37ec - 0f15c349c55e6ac3973347e75529960503707479ce65125553d1608d1f0024a2 - 1d4da7a0e374b7679080d6f6590046da63e9582a82e7e74f430b19885f0a5cb1 - 8ca510271a8aeb789f8f91cb9c56f68d2e7784eaae9c5caeecce25529b5dd280 - 060cd79b4e4594a8a24309cea93706f64fa6758f550f7c55f16f340f1d648a99 - 9bf0aa22418c9bf7453f389240b28bc4b6507432a120067423d8a8ed60cbe6fc - b3f7eccd4f37d2d5a65308630b33fba68ec899499031a33e17e5bd25294b1a5d - 1ac6ff156d13e45f9569f8b98dfc4cbbfcb673d2ef509ec60a32972c0613ed8a - cb8a62443db986a21594aa7324e8ba6933f88023f7e8edac3a70ca61be9ad076 - 14cf4ac5edc33809a6a540ad54ea14021c95b673c80bfcc456f68c0b8953455a - 809f67282bd2edf3443572fbbc9c6bd7d0bf6bf011bf1f733a9d7203bae6d3f4 - 8db74a213fe1df6dad87298cfb004a02591830dbd3e4a2d86e0647d6809dcadb - af16ece04e0eb4b2979f51745ded99dda8cc0afb4143e078b3303dedba3deb1d - 0217ea37975248465fd6987705363c570b54b123ca3293d39f23d4fac53bdf8e - 9776c33b255707132bea73e17805b571e8942c9034cc154ebe438b234d45753a - 83e6f4d6bc460bd6a07b645634cdf962a8cd3f479740e48318cc5376d580eb50 - 57cd93d9e7122e13904bb9fd1b62860fa849000dbb1651d1e0f1463542a563c6 - 4502720ed8f5f6aae568d5a6f1911942eb89f6018328464b00b67b75a54fcabb - 3755f9201d40014579e2b9583542ded8621f22111829c5aafa3465b2a861979f - f39d60727a1bf082d6d1f9b6a3ca1b9457091c26253e0ded4bb3b6c2ed207700 - 2feaa565808ad1eb10748cd6d7fb86432721c3aafaeca990bd9217911821590c - 3202de6efc73b18e38500edfba4085e6c8d87ede91c5d7e517865a35e583c75f - 323d2982e88537da5d9ce53366eeaac7d0744cc3d9926266ebcba8fcab9042ef - 87d36187e038efeb25c5fc5f4865432d92d947c394dc9915d063253c68e0c593 - 06fa877cda032ef6433a90bb98d989804056495edc816c846bd5eb4f0e2558c1 - 8fc68f6014151d7fbe2b183ece81357bd0db950169727cacea39b6a54ec2317b - dcb81d5b70c5371a3e05e2595120745aa188877c521c5ebf9825d189c99178bc - cc730257f0c9715be76129153d873fe98ca6cbc1c4905ad974f0a3ecee8712ef - fe0f100525319d0e43655090f2f7f1561ca0b9899d7e903f75f80d3e37775ea1 - e9067f4da7a54866744065cf4efa72f6b81c79496efcce875017231969b4f8b0 - 2b2429a4c5245d0aea3e317a83e3b6d82e24e4b8db2238626503c0abda5aa0da - 1fd9d4983b9e87d164f94708c6c73485806132d52eabab8d9620f24e31ff262e - b5ffa8391594c832eb4cf665b85f580362f805796e9af5b9f5d5342b12b272c7 - e2defd45ceca49d1ff3062e095dc60cee1441a25bac08945b4e6f233dfa0f471 - 6f25fe33fe46a546cfd67c979ef781cd662c84096612190e5705c111d72d6b31 - 20639ee2ee0a1f8188e12307520a5514d9fac70e65bab5d8624254c5ce7e4a32 - 30e7eca6c31114e934919e1eeabce3447fa778fbde35fb58e6c09b9771a2c717 - bee3bf0d01abbaa3ca8cbae7bde8822e7f73394e573992822b43986876646b0e - 93dec63997d31b27271678f1a1765437a69f85695b66d9ee2f6177c89c24a040 - 332b33195a2c37e0d428c424ebc3d16c23e82f03178d923053ba12215775f4f7 - b5b026ed94f0a19db16ecb56308b3d210c3dbbcf1838abdbb459b39bfe40cf00 - 3a9f8a6d9af871a1cabf271b4a88adbcb7005b586ab4a0d28d3fb782d879e054 - 0dd31f2593198a3b2112473e3fc12bd5e1f2b493fbb43d31d27b21a25e085689 - de6a88dd30b445faa88b4bc10d1732eefc4c30ce939fad09382a3e55c1b26f3b - 0d320f2ef36f4655c08b954ce0a8101697fa1354aa4d42931fb8bb20f5522fe9 - 4911500ee8c522988483f97d2a76272b39038699b709d8c7ecaa615df5c02b2b - 20bf12f4d46721110c45db2b03b3949abfe8989da5652c77a6371dd0958c2fef - 2b3a45daaab640affb6da37e7cced3a5bcd3bff51c6b182658f0d4b0efa77aaf - 0aa0917e1755194b3040ae156083a4e38f4b5593717577a87b49bfe35d70b10a - babc10519fd8adc0a6153a1a957af61369f0dab8af2a42a0e897a42f7785581e - 3d947f24177dcf0f45f7ead13c1bc5017f98e83a64486e7bde8d13ba7a8c12ae - 17c5ca51fd380736587fdabd0b016ce1c4198d56ff8f8063fcd37d3021fa9a6c - 981503ec5b272d4f5e1cf25bdc25f429ff2788ff5929afa230c26ddc9dd3171d - a8ec77edfb37507e933e0ab94a684817666ff03e3de7242420495d40cf1340e1 - bd110c4d71626846d9b909560fec23fe25934cd01e5392d297e50cd26d60cd87 - 8d35104cfb4f86ae89ae5048509a0a6a1cfebf3ec8a40a8ddce0de91f3b13eef - 78cfc87da632600a1c4aa22b2a43b2dfd193d2f45f7cdfb874e8b6caa2a6929a - d94c7d96d1c8ec7e2842578f4703ded6b75be53e6934086e6a5b289e4d7aa476 - 9d4185117872a09d989d01dccdd81f3266e0eed3458480f78d810f2d1f20f990" +checksum="88bc57e7937f6e8e800220e332ec5bce79a766f342c3aa052c70ecf7c0ff8b7e + 90138e30ba2f197fae42dab89c7b4ece66e9385be07af7ad237e155c9900196e + 09a95e2305cdf094518dae97c414f254820210ab3e15a38ee84b4c90e626b390 + 998f379e0661eb0fad3fff09fdcd9c04068bfa0f083e61625df7bac8d9a74142 + 22ef3448ced770d829374ce695d6e8805b05cf2561355d5b7539bacebf1639dc + ab996b32c58c7465a32a6e898a4fcdef2036029b0bff088b7d7b6b60857b5385 + 9fc38b3bc394b66fefd12272b0c7fa342b6382fc2e31a45c003c730406bd66f1 + 4b75fb445a9ab28824a758c80e0a54d5b0b93f9c73dc5b228ddab40fd666eef4 + ba4bf8e91329c5b6c31f279949673b8eafa245c566e6efe6f969ff9b4c94995e + a7287a9d4fb71481b953414383a9a7a0721c6b7f875cffdfe77f948ca5ba99f1 + ab908d6d561563a0c8efd049e8bbcd50f722610332fe155a568f96858f4487a6 + 4fde0b57dfc8c9c83663197c538be5e02f8377292fd267059b7a9415e30b4f11 + 1665c1b774f8b7a675bf14bfbc3c0aa3f77d8670d79e264e167b48e012589b1b + 7625197a4601bc41ae8129f85af6f609560cd61a8e9bfac8fa251a92c2e57a4c + a4704f8e2aa620a6ca7ef9ec7fae8f74b7dbf7486140a4eee6d63330127e45de + 8a1485aa6dfc90bf336927177107a16dcd75eb6ad74a81a18d22145e7821d559 + 646775719b17e706372f4aea2b32af0bc5000a5e5138c92f9a6740dff122fded + 5eb4075e5085539dafc1afe78e490af68d768dc8d2adf8201c3854710e1d36a4 + 853e515ecc9bad22fd617b08bf363bd6f7de5935fcb9480152754c70d1aca6ee + 5e486fd25b37d5bb31803bb7963dec411dd772ce9dbd31e43b26b4695b2aa352 + 512507bebc57dda106cf84adaaf59863e141f10ef36955f28b1a203a18eac979 + 99fea99623b825bbd3da0819544120dbe70bb81e4fba3cc57ce8d54a73f43d73 + 318e35446641203d1313c8a3bcdbede7537f21dc9489c711b9ce9dee0df1cce3 + b93e787da5f5031862fe01bf352cd8e118295f21906c36bbdd5b91d90da679b0 + 36d0cfcf545783714cf8c8ae4942213fc40f7ff72b814e751720070ddf7ad153 + fb8f18f7ab647908e9860ff69b95813616338af3fd3e342b235f7ad526976f9a + 2d30d833d938f96e639733926bdbbec880e6e7bece4e42e08d24a6e82cc432c8 + 1c625605c795be3bc575d87773d7c4bc60de8620da09e07db8f1c262ce76ea5f + eef02404cf975e53470a6b523f715fb03e28c04e007076bad2adb54db65a74b0 + aee1acdaee6feda770967c711ee82ed3a83d48fe0c0b0d4983925aba3fca0f68 + 462056ad26c164a3ce0a1cfa802f52e627ab3bbc7da83a4781b5a6c624415382 + 9aa13d06d1e5ece8f869e793ac5bf0aa0ed8a086caf3c0f51b88a5d11525a081 + 1216b9e9cb4b3d14be338f335536e3079850c36d0590250a930b1622eed0ab5c + c95f2e91c50ea21fbc6f58eed15ea0642c2bd0b9a4ec14a883fc3011bea86608 + f7cbf9f848d9b738efd40d5630b4107a2706372863429c76f98d18d60b5b9392 + 7b777bedb2ac490956d1901c1b877019fccd34f69d1004625b88b2f1710cf21e + a6afb9f1a4413913f0176c1a45bf520d39f7805c42a6aa2c88bc657e9b2722e8 + 58cdc561a760dedd7708b0fec8d9a6f0223b005cad04c4edb6a55ae8ef9408d9 + a3ca41bfb1761b7bd41489dd63c1cae0828e9cf84a3c669944509d90b5cc83da + 0dbaea69e0131fcdb8b5cf49e75b3e5b5cc04eb380a9232017a8a0592feb63fa + 435019ef3ab00e4e19773a1c098a982a1caf7bc3241cd8a201bc756726a44cb4 + 24f9c2ba8c99282543673f63f26530a2a771001260a5205e79825024afcfa9b1 + 42ec563dec044acde089ec9b5c8bd3bae08a26980512d7fcdc031ce997a87e6c + 849f308f0ecd268120ca0c131b30282630b876b654851537afc35f55f954a02e + b63f47d79977ae941145b3e8ea7bff17bac14e31d6c073f0e552aff2351c73aa + c8b577d078d20a3e12094bc8af0221117f249b3d6e59f12fe40c1d00fa7a8ddc + dbb40f4a5c5fd5770af576d494d620259912e22c3e7715a0ffeab60714272b8c + ba316ab2d50746f4da42bde8afb1c1d8bec41d4f5a6f98e35820b35854b60d90 + 753788c502c46129ceecb171a6416ec08ade64105189a6739361ca4e00cdd49e + f432b053f1a49e4b2839388cd02111da3ca6dc3404060717caf98cd8913cc2f6 + 2bdf29376dc9cc3f25b81054409e73841050790f354da491027d5a458fbf0e8e + 8038d7519927e8a6cb282fd01c05f358dab8d7097a754874627b756f117fe7e9 + bdbd0f54849d0acf0f25734c0d73b8ee76743175b7d17122fee6d97ee9da37f6 + d5729a392765a574cbed3c49d795be0422498b64923a6a74968d6d424bebceff + 2ea9d025c2feb19a3bb987c29f0c17e806ec951ca7245fb4ca7cf765c3499c40 + 5b5e1a2ffa86e739d0d50e4e5b3da08ed296bd7212aabb440fbd41e5bc6b0dd9 + 44f8d156d00a167479f1826d6eddcc1be9b465775838aa21672f5b2b34f530e2 + 2e607d026b415c31c89c26e9a8c294070613714d50d2fada171f0dfb5ec8032a + 828e8505430095b8c5b9e6bb9d6367103e35a650470a15d46a6d018bd4a95de2 + 62cfd9dd99afc37d68b2718c73de15920a3bf8705a27ae761e5c793cc5e0199e + 9d2fba1bc6fdd3d033415c0b2b0700f676cba8d947e7ab45f0ff1b4242379341 + 8a62edcf6d0586b57d06242d3686584d798b33703f85134596743644f76b5e41 + c78a6b936598d6267b4474728fa37df4a8e32e048dd8adfd5f7d5621ff4ccc10 + 1b01471d1d2469fb233682cb73f807ce0b102529a6cefb45e3eab21b747b2bf1 + 1de57e24aa33418867d3e81b7e0a60a5a307b53d36142a91d742199f199224f5 + ddb594bba04f7cf70c084999e9591be6b4490bf2c79b8bcf203f479e3c0b2109 + 2caabcc6c7a6478d6922584b18902d752e9f2c4921db8f8c47ad59336b3e7fc7 + d96e19669c2d85d1d1d36d3b2d7a34307080f2a628398f02bf066707d7d98fff + 168719be2aca5ad488888d40979b04307d45925c4904eaf38974138d8937409f + 0c12ba626f8f55bb9b728a2a420949c85535f0f81fc2680f716fa257c018e13e + ab5321b5c22e57c556142504290eef6d8675e4b788605aabd2f5f40dcb648f44 + 346f139ed152a470511512ec247d58060261f77a41b49547bc55f9cad90aec1e + a340bee46d42c13f1df0d51a7def1eafa2f54bc96c37dddc87f325318bf9bc04 + 57b4ad05f482c607ac09ef705d6ff4e9a7aca9ff690c6000c462e7e0c89d0208 + 853c6db21af3c443934fdf352d751919e18cbfe577aaa3ce3fd3d1ff592e52d7 + 5ff299c99f95c9eaff04dbd848edc5e0271c39b28c031e81988dce4a44b698c1 + 77693ebdaebe07f625099b08c344cc5932dc445e4a4e7532723e09f9709496e4 + 61e5845e8a4ab449013870bc4758d07346e80cbec02333e9513a3622aa5d9a0f + 05170996d8bf72721f3a54c83c5942033c3569293b0254f5229c0066f53cade6 + f1a608658f282797298ab4abcd63af171e3a0c1bc567b90bcc86b25babfed0d0 + 630782af90a968d62d9744bf44d31b772d64a143825c295851d16b56c5369d84 + 6a4e11c0331375dca999e256cf9969dc1a46960e350f21a6686ba3c36f154daf + 0c4459148d6cd2220b8e50144abb057c042be64ccf19213480c3f422b3898f1c + 51d6c31c2da751e58f443470277b578cde7d8046c1e699a9e091454da321769d + 1e61a6341778b1fe08bbb69429dab2ba265eb67536c2d578fd68d41e0575947c + 810818b409728c38bc7e77e76d4eb19678e81f431ba41416eaa3a8a27c70daf7 + ecebac55d072607fa119b0769ef0f2e54e8cc667c39529ba1ea1994756c8eb68 + 99f500207213726f76a7c0a45e43636912c527244a7abb199a8b308258fbe329 + 8ffa8566c246f1091831568802aaaef92d75dafc3f2bfad45bc30e12bdf2a237 + 6401eede36fc52c08c20b753c09ce1f35b4e261e78cd0877245dee12405a4d07 + c198bc2de1957547a2a3eac96777f13222a557ce0b96bef686b26e12ba9caf35 + 8730c0065f4e5a4f663120900cf2091acdce21180a9534ff5f8ab35a15b85854 + 8e6c5a570528077e93985eedbea6e6ba4c545ebc16eaa02a6ac02c41b4df292e"