From 38a1ad761107631ff2ccb3b52e3fbd5d7a80bc8e Mon Sep 17 00:00:00 2001 From: Terry Yiu <963907+tyiu@users.noreply.github.com> Date: Thu, 2 Mar 2023 09:22:02 +1300 Subject: [PATCH 1/2] WIP translations CI --- .github/workflows/export-translations.yaml | 27 +++ transifex.yml | 239 ++++++++++++++++++++- 2 files changed, 264 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/export-translations.yaml diff --git a/.github/workflows/export-translations.yaml b/.github/workflows/export-translations.yaml new file mode 100644 index 00000000..54eddbc2 --- /dev/null +++ b/.github/workflows/export-translations.yaml @@ -0,0 +1,27 @@ +name: Export Source Translations + +on: + push: + branches: + - master + +jobs: + export-source-translations: + name: Update translations branch + runs-on: macos-12 + strategy: + matrix: + include: + - xcode: "14.2" + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Run export script + run: | + sh devtools/export-source-translation.sh + - uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Update Translations 🤖 + branch: translations + create_branch: true + push_options: '--force' diff --git a/transifex.yml b/transifex.yml index f109a5ca..cad2be5c 100644 --- a/transifex.yml +++ b/transifex.yml @@ -15,16 +15,251 @@ git: translation_files_expression: 'damus/.lproj/' settings: + # Mapping of most of the supported locale codes in Transifex to the locale code format that Xcode expects. + # Locale codes that are the identical between Transifex and Xcode do not need to be listed. language_mapping: - en_US: en-US + aa_DJ: aa-DJ + af_ZA: af-ZA + am_ET: am-ET + ar_AA: ar-AA + ar_AE: ar-AE + ar_DZ: ar-DZ + ar_EG: ar-EG + ar_IQ: ar-IQ + ar_JO: ar-JO + ar_LB: ar-LB + ar_SA: ar-SA + ar_SD: ar-SD + ar_SY: ar-SY + as_IN: as-IN + ast_ES: ast-ES + az_AZ: az-AZ + az_IR: az-IR + be_BY: be-BY + bem_ZM: bem-ZM + bg_BG: bg-BG + bg_US: bg-US + bn_BD: bn-BD + bn_IN: bn-IN + bo_CN: bo-CN + bqi_IR: bqi-IR + br_FR: br-FR + bs_BA: bs-BA + bs_BA-SRP: bs-BA-SRP + ca_ES: ca-ES + cs_CZ: cs-CZ + cy_GB: cy-GB + da_DK: da-DK + de_AT: de-AT + de_CH: de-CH + de_DE: de-DE + dz_BT: dz-BT + el_CY: el-CY + el_DE: el-DE el_GR: el-GR + en_AE: en-AE + en_AL: en-AL + en_AT: en-AT + en_AU: en-AU + en_BA: en-BA + en_BA-SRP: en-BA-SRP + en_BD: en-BD + en_BE: en-BE + en_BG: en-BG + en_BH: en-BH + en_BR: en-BR + en_CA: en-CA + en_CH: en-CH + en_CL: en-CL + en_CO: en-CO + en_CY: en-CY + en_CZ: en-CZ + en_DE: en-DE + en_DK: en-DK + en_EC: en-EC + en_EG: en-EG + en_ES: en-ES + en_FI: en-FI + en_FJ: en-FJ + en_FR: en-FR + en_GB: en-GB + en_GH: en-GH + en_GR: en-GR + en_HK: en-HK + en_HR: en-HR + en_HU: en-HU + en_IE: en-IE + en_IN: en-IN + en_IT: en-IT + en_JP: en-JP + en_KR: en-KR + en_KW: en-KW + en_LK: en-LK + en_MX: en-MX + en_MY: en-MY + en_NG: en-NG + en_NL: en-NL + en_NO: en-NO + en_NZ: en-NZ + en_PE: en-PE + en_PG: en-PG + en_PH: en-PH + en_PK: en-PK + en_PL: en-PL + en_PR: en-PR + en_PT: en-PT + en_QA: en-QA + en_RO: en-RO + en_RS: en-RS + en_SA: en-SA + en_SE: en-SE + en_SG: en-SG + en_SI: en-SI + en_SK: en-SK + en_TT: en-TT + en_UG: en-UG + en_ZA: en-ZA + en_ZM: en-ZM + en_ee: en-ee + en_lt: en-lt + en_lv: en-lv es_419: es-419 + es_AR: es-AR + es_BO: es-BO + es_CL: es-CL + es_CO: es-CO + es_CR: es-CR + es_CU: es-CU + es_DO: es-DO + es_EC: es-EC + es_ES: es-ES + es_GT: es-GT + es_HN: es-HN + es_MX: es-MX + es_NI: es-NI + es_PA: es-PA + es_PE: es-PE + es_PR: es-PR + es_PY: es-PY + es_SA: es-SA + es_SV: es-SV + es_US: es-US + es_UY: es-UY + es_VE: es-VE + et_EE: et-EE + eu_ES: eu-ES + fa_AF: fa-AF + fa_IR: fa-IR + ff_SN: ff-SN + fi_FI: fi-FI + fil_PH: fil-PH + fo_FO: fo-FO + fr_BE: fr-BE + fr_CA: fr-CA + fr_CH: fr-CH + fr_CI: fr-CI + fr_CM: fr-CM fr_FR: fr-FR + fr_GA: fr-GA + fr_LU: fr-LU + fy_NL: fy-NL + ga_IE: ga-IE + gl_ES: gl-ES + gu_IN: gu-IN + gug_PY: gug-PY + he_IL: he-IL + hi_IN: hi-IN + hr_BA: hr-BA + hr_BA-SRP: hr-BA-SRP + hr_HR: hr-HR + ht_HT: ht-HT + hu_HU: hu-HU + hu_RO: hu-RO + hu_SK: hu-SK + hy_AM: hy-AM + hy_RU: hy-RU + hye_RU: hye-RU + id_ID: id-ID + is_IS: is-IS + it_CH: it-CH it_IT: it-IT + ja_JP: ja-JP + ka_GE: ka-GE + kk_KZ: kk-KZ + km_KH: km-KH + kn_IN: kn-IN + ko_KR: ko-KR + ks_IN: ks-IN + ku_IQ: ku-IQ + lg_UG: lg-UG + lo_LA: lo-LA + loz_ZM: loz-ZM + lt_LT: lt-LT lv_LV: lv-LV + mhr_RU: mhr-RU + mk_MK: mk-MK + ml_IN: ml-IN + mn_MN: mn-MN + mr_IN: mr-IN + ms_BN: ms-BN + ms_MY: ms-MY + mt_MT: mt-MT + my_MM: my-MM + nb_NO: nb-NO + ne_NP: ne-NP + nl_BE: nl-BE + nl_NL: nl-NL + nn_NO: nn-NO + no_NO: no-NO + or_IN: or-IN + pa_IN: pa-IN + pa_PK: pa-PK pl_PL: pl-PL + ps_AF: ps-AF + pt_AO: pt-AO + pt_BR: pt-BR + pt_MZ: pt-MZ pt_PT: pt-PT + qu_EC: qu-EC + ro_MD: ro-MD + ro_RO: ro-RO + ru_RU: ru-RU + ru_UA: ru-UA + ru_ee: ru-ee + ru_lt: ru-lt + ru_lv: ru-lv + si_LK: si-LK + sk_SK: sk-SK + sl_SI: sl-SI + sq_AL: sq-AL + sr_BA-SRP: sr-BA-SRP + sr_ME: sr-ME + sr_RS: sr-RS + st_ZA: st-ZA + sv_FI: sv-FI + sv_SE: sv-SE + sw_CD: sw-CD + sw_KE: sw-KE + sw_TZ: sw-TZ + sw_UG: sw-UG + ta_IN: ta-IN + ta_LK: ta-LK + te_IN: te-IN + tg_TJ: tg-TJ + th_TH: th-TH + tk_TM: tk-TM + tl_PH: tl-PH + tr_CY: tr-CY + tr_DE: tr-DE tr_TR: tr-TR + uk_UA: uk-UA + ur_PK: ur-PK + uz_UZ: uz-UZ + vi_VN: vi-VN + wo_SN: wo-SN + yue_CN: yue-CN zh_CN: zh-CN zh_HK: zh-HK - zh_TW: zh-TW \ No newline at end of file + zh_SG: zh-SG + zh_TW: zh-TW + zu_ZA: zu-ZA From d5a646f9ce657ffdcd14fdbcc3cd736331f7ee8a Mon Sep 17 00:00:00 2001 From: tyiu Date: Sun, 12 Mar 2023 18:15:48 +0000 Subject: [PATCH 2/2] =?UTF-8?q?Update=20Translations=20=F0=9F=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Localized Contents/en-US.xliff | 96 ++++++++++++++---- .../damus/en-US.lproj/Localizable.strings | Bin 71778 -> 9760 bytes 2 files changed, 74 insertions(+), 22 deletions(-) diff --git a/damus/en-US.xcloc/Localized Contents/en-US.xliff b/damus/en-US.xcloc/Localized Contents/en-US.xliff index 20674ab9..d52014d3 100644 --- a/damus/en-US.xcloc/Localized Contents/en-US.xliff +++ b/damus/en-US.xcloc/Localized Contents/en-US.xliff @@ -32,6 +32,11 @@ + + + + No comment provided by engineer. + %@ %@ @@ -48,6 +53,11 @@ Sentence composed of 2 variables to describe how many people are following a use %@ has been blocked Alert message that informs a user was blocked. + + %@ not found + %@ not found + When a note or profile is not found when searching for it via its note id + %@. Creating an account doesn't require a phone number, email or name. Get started right away with zero friction. %@. Creating an account doesn't require a phone number, email or name. Get started right away with zero friction. @@ -126,8 +136,7 @@ Sentence composed of 2 variables to describe how many people are following a use Add Add - Button to add recommended relay server. - Button to confirm adding user inputted relay. + Button to confirm adding user inputted relay. Add Bookmark @@ -137,7 +146,8 @@ Sentence composed of 2 variables to describe how many people are following a use Add Relay Add Relay - Label for section for adding a relay server. + Button to add recommended relay server. + Label for section for adding a relay server. Add all @@ -149,6 +159,11 @@ Sentence composed of 2 variables to describe how many people are following a use Admin Label to display relay contact user. + + All + All + Label for filter for all notifications. + Anonymous Anonymous @@ -263,11 +278,6 @@ Sentence composed of 2 variables to describe how many people are following a use Cash App Dropdown option label for Lightning wallet, Cash App. - - Clear - Clear - Button for clearing cached data. - Clear All Clear All @@ -276,7 +286,7 @@ Sentence composed of 2 variables to describe how many people are following a use Clear Cache Clear Cache - Section title for clearing cached data. + Button to clear image cache. Comment @@ -288,6 +298,11 @@ Sentence composed of 2 variables to describe how many people are following a use Contact Label to display relay contact information. + + Continue + Continue + Continue with deleting the user. + Copied Copied @@ -415,8 +430,7 @@ Sentence composed of 2 variables to describe how many people are following a use Delete Button for deleting the users account. Button to delete a relay server that the user connects to. - Button to remove a user from their blocklist. - Section title for deleting the user + Button to remove a user from their blocklist. Delete Account @@ -433,6 +447,11 @@ Sentence composed of 2 variables to describe how many people are following a use Description Label to display relay description. + + Disable animations + Disable animations + Button to disable image animation + Dismiss Dismiss @@ -543,15 +562,10 @@ Sentence composed of 2 variables to describe how many people are following a use Get API Key Button to navigate to DeepL website to get a translation API key. - - Goto post %@ - Goto post %@ - Navigation link to go to post referenced by hex code. - - - Goto profile %@ - Goto profile %@ - Navigation link to go to profile. + + Hello, World! + Hello, World! + No comment provided by engineer. Hide @@ -574,6 +588,11 @@ Sentence composed of 2 variables to describe how many people are following a use Illegal content Button for user to report that the account or content has illegal content. + + Images + Images + Section title for images configuration. + Invalid key Invalid key @@ -652,11 +671,21 @@ Sentence composed of 2 variables to describe how many people are following a use Button for logging out the user. Button to close the alert that informs that the current account has been deleted. + + Looking for %@... + Looking for %@... + Label that appears when searching for note or profile + Make sure your nsec account key is saved before you logout or you will lose access to this account Make sure your nsec account key is saved before you logout or you will lose access to this account Reminder message in alert to get customer to verify that their private security account key is saved saved before logging out. + + Mentions + Mentions + Label for filter for seeing mention notifications (replies, etc). + Muun Muun @@ -740,7 +769,8 @@ Sentence composed of 2 variables to describe how many people are following a use Permanently Delete Account Permanently Delete Account - Alert for deleting the users account. + Alert for deleting the users account. + Section title for deleting the user Phoenix @@ -1038,6 +1068,11 @@ Picker option to indicate that a zap should be sent privately and not identify t Show wallet selector Toggle to show or hide selection of wallet. + + Sign Out + Sign Out + Section title for signing out + Sign out Sign out @@ -1146,7 +1181,7 @@ Picker option to indicate that a zap should be sent privately and not identify t Universe 🛸 Universe 🛸 - Navigation bar title for universal view where posts from all connected relay servers appear. + Toolbar label for the universal view where posts from all connected relay servers appear. User blocked @@ -1170,6 +1205,23 @@ Picker option to indicate that a zap should be sent privately and not identify t Label to display relay software version. Section title for displaying the version number of the Damus app. + + WARNING: + +THIS WILL SIGN AN EVENT THAT DELETES THIS ACCOUNT. + +YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY. + + ARE YOU SURE YOU WANT TO CONTINUE? + WARNING: + +THIS WILL SIGN AN EVENT THAT DELETES THIS ACCOUNT. + +YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY. + + ARE YOU SURE YOU WANT TO CONTINUE? + Alert for deleting the users account. + Wallet Wallet diff --git a/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.strings b/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.strings index 152ab4dd29663cbc7359014c459100fbbd5078bb..cd1abfb1c4628cc4a52b42b24af45901ec7c37d8 100644 GIT binary patch delta 215 zcmaE~fn|ZuhAl#qqs-(c+X%0j%%Xm3vO_=5aOy1xo zGdaMGXYvQvC6nhw@J#OU&;!YB76_AIoX#c0C^Xq3;u2W3K$y;Cr=*_A3l^wMR!BcE zxxs*Ma#~^4WQDIrlSAsxO-^VNo4n>J*W`Eod!XtCCU@8iY-XCK#01o|VDf|wJ(G8B zJTzHla~xFhEwEv~PIFD(^Y7ARIbpfU7n)cm>m-S7wP6fmoW6mVk!$)jPR3IJV69o5 literal 71778 zcmeI5+mao}b*A^VZ~O{vjV(})5ojsGH=1yaKoS%=0x1m9v_guBPyi$dQ3jhBfD{G4 zjo->w^Bi-fnf29=A8W0wti5+1Ny-icfbOcS%ym9yR{g&}zq$MS-O295-Iu$scAxJ) zi@%@j9xgwBxjTzHU+sRs{C*Pup6tHfz1Th8J&&KB$Nvvw>{s#sr^~o6<6p)+i@9FJ z_4+KcJdP`$#0<}uXU~=qIo~(&?2F}@hr1{7N3(vu!0`9GH+O%v`@yj0?_!1=`@4Yr zZ1=m}Ph#B3?w{iC4|adI`+59-45Tju=C5PyH?c0`fj#FwS?2!1?!N^Te-*GCOR=BE zJjM{*j)5fUeRDMX>566#gO+gh+os@J<}6*3kL#DWy54ytu0A*F#m!0EJ}9n3(&~D1 zY8@kMb(WiRNM(tu0!8=4R+KTC#l*T(w-)wdNE$BvW;Uo1s^i zr@7rfWZ!Qs{?NK`5?*KS1!Ya1hwt;)32Irdzjbtxs%t=T{WNkD#!BJ@nPj|ooSBeG5oEwTn*Np zx80Il6yG|_9M?lO-*Rx3{H#zZcHbAVZ^>+(Wsch+KGqqogNJiFa4av+Z=dQD7qiTD zhVP$!uF(H(cZmCQ?o@fN^PQg>U7uO4+lr@$9s(6zD>-J zk%8-?L+5|DHJ9Uko$GvjuTNel&-*$zgY6++cbN9;c~)MiBz?L2BK|y%N(Hs1XHi}G za`(rG96x=Pw>^re=VZD6WU1dgj-Q|JZpSsp9aJ}ZwW#aWoh1r=zRb@`FX9hXA=QUm z7o+aH#x$5-LN(7t8&JG2hdL#-cfVPzCYf0z1!F z+SGO7*5|=3u039;ak^9pu}VB;IubWO40xF5N!&qZc}Dzx9Q1^ma7Op^YMxDRE37K~h(1@b3> zGxr__uOBWv`zEeJ&6C}~#&hV-Nyq|Ysp(2SZV%e=myYZ8Xbd#9q@!EN2{r;P|0F2> zGPFv(g1+BpJ-8bfeY*Q`VDn}CtKVjLN_#6+s&!30`(@BbcIU02A^LwBze|77DkNGK zEd9niyAMJGy0wI^-zC^CB4>1E&H@koL$%QIa<$7K>xDgfzC7_o(C93ldilM#v!@{i zc%kIBEEbydY1mY}fa6Aa5OpzR5%IlPNA!=oX#tV0uNF&yyQjN&-Ea8PH~Ek3F8*(C;fARc;>ycES`Z2AvdphFCghapqK{RYAHbT-;Y_~I~L>lD_F4xPr{E9 zFZ_P-t>z!KMXJ&P=%PX|UENye*6yPir!K2J@~xOl zo_~GsMQFh7=ue(3e{PyTrud7+%G^B7bN$QG+cS-{_VsU%&dQaLZelp+KHp_+*n;>n zJo;^5|14xZH9=Rzm!93-UNST6)Egm}k3x4o4a(`Kr}6U}yB{ro)akBK!%ud98`Hj5*Ag;R*4EX03XZR}b6R7ZGJWS|VraHbhv^>2_Ejq)2rLY%$)8x(*eN z^Vs0a%|Elz?*_kXjO9pf9f$Tv-#M4^j%|L_s+FxWb{Yv&Wz#uY zms<-SNEG;1%J29jywmyTPpUARymene6uRsxHRst+U#g2(kmKpAY9$&%27s>g z%5c)j716VpzmI3{=KH(*QE%Diq^uK^C)-J$5*2*8WW}sal@|`NMphbY{`y^kr}BiI ztIj01TfsOL6D*nyC}@+7=$x;2e7rwKHUZRWjSQJxqvuj9{F;*nmp2&S3MM z3gP|04{Q8*kyLDtY*A8k8}3TOw13qSfh(1Or(xHa@nrW_{6=4=!?!i2Li*M+2hxDX zNGeqEr)G(^*%GKem3x6tVtwlDT!+?Z-IK7UR6A3KkvHMWh#G~d^Flw87* zU+kFEix6ZL*Lt;Lx0ZNT!DDNGI52s&XF&HXIMyiY2qk&Lf%g|h2Q1#vNNan zuAGW6SfEd-{DFJ9NFX$UUthzzEqNKsnu;FKG zLSFcuuvOZVj3z33c6A5;4Z(%q6m149{4D-Ec`6; zlG+Ddoac9{^x57Bs8VZz;YSUVV@4mw6D`V}09f>!$8&^XKc2JE70)|CDJYC|V*&f# z890QT(vc%~G{2N}!Y|o!=@@Id`p$E`zmrnNIClq;eEL203VRB0kACpz45ot zaG5zPb&ij6!M1vQ#g(bq$cjB4K7#wwi)wv@uj4h_iZ1s=lf=DnD=GXpjT+lyDt7k* zB71df@>>h-sRhB~_hS|Bq#AvVpf`-pwntRRKMMHd2Qu$SYXaoZ zP}W`4#Nu?@j{Q@wSR?2s!lS+yh^RxfsS#@B$Xfx6M!*j!e-aVUY>y9-se0nKLhFc* zptB-1aXw+n-uV_pigN|~^QA%qhrEKSLf*k7KL)oIfonCz*NUt3uV#aHM3L4@X}%!B z;;EK|EjU~Jv-kP~1*SqmvdPWsLXepkQx_bt-c9#uJ6_h8hSdYmw~E&bUUIb$yS!WBc@Xg6 zn;(U=;#V`fp4l*E6&X9QKm2i6u{lK0Z3c_3S13M=)tT!_{GT}mKXqDpJxe+G;!DvO z?J*KflYa8r=Jb}dX_P5cD@)1G^_Ysmby}3K7aXfS8R@+q(djADrfR6h>#p$>2@@25^HKqrE0xe zVYog?Aa{Bk6_Cz-U#+m^wF=q!tu|2(H7aVCD}34CkvmTiaGU3tPO?axqVWkQwiSkOkF##RSF%u>dedSUmMzB zDQ7U`y$Z{NfV$>fHB!17dT^pC2X z@@eg5$EQ>2wDnt8^lU4)cf<%DG)cS0ucGRQhs{%zm2UldrB}_s1=D#tGSE{T->Q4r z>%+~jnvAKh=IdK9b&grL(i_#xL~#K99U?BO8*m8jJX<)~^C%$m^-in2TA}J1C|YT5 zRs#;a3vr&Rh}n^_PvAb4^KJuxqV`h+*Vs|vD%Ebwb7o3Bj|M9LPW{uom14w3hx_@p zDq4L#T3{VXPn?mn;l^h4>L_cD6oy9gah2xBV!h_ZSv_a_tr^9#fDnx7V`Y@taJRn(3?Onhnss+~Dky};X6#;M8 zfoimnv{G+-Ryo?jY-@#{qu-4#7#(JxpCccfou!~p>RQOy*G%lNn{UMPKU%t^4;Cq* zCd&>JcI-b4oz>ncq`2EI=KYx&1iBp^H%vdREu$}LQDpH zip%mWB4_HU*4kH|Z^zc#<>`uV&e=JA)A_#al=gF>Gm`s`vv&#B{d8R_5}T8q&bz|> z+2x0G3TwTGN8zxKCy-vGA9W3bCUEiY}M;?D>?oPJ6hp!$b>fGdou zc40Xx#<|}kF{{@q2A7e)cLGWx9kLo_|Hkdm&Ov1c9p;?tjquIdb3uKN{Ssu3FBg08 zUR)vHkTfW#Wlsz~BTllFeDh0Do#elyA>4z07CTRIs0)1x9#a zyu@tIx|?LAV|})E600=y75b=(?=jU!Yal+H3Kbj@PqI?t4jWvl@Xhp*j1fKXZrE+O zk9)e})A?uX3dOOmz&rQCsy_BO#a)Cxr)*Zvs0e3Yy$UI)`{L?u1<}+!GoX;y+qX7e z5bLI$bhT#3F0!6iX@^}#f=`12_>-*C93ugV?H2tqB0&N~>&K;D(XVcEY)0L=7HvnB zb***u<}V=ZA5|f|Xci!wo|WxS3uUx7waVL^f{c?DR6bCvz7>PnxQfI1D$_u^j_^i1 zv>wqld3L|TG}kNW#XeJNyRx}8!_6K-#@QXN`h10_U$1biX;b5N-owMQd8&eQHi`-q zx!}9jFyweg5hFCS5fv_;qaV1vlg9Q3GGO!gVQOWoq{soJSPwp<3Q1*bH z9?|=wupaC+SLl82`O0VhGdlZ-x$dUlDa zF)|nT@y!&kazViBPW|5H8c?*etcfko+eD+Si~D#pq}y|dU{wd5%h*ZM>ts!pH} zJ@V8$fa$<0c2(|rMOCwkMGBG>5q$01Y5lIkM$O%QiNdXT()6GZ2~R;qmT zm5M1@(>gP84BFq<;K~QPj(IClkE*2$d5&3_13emw&C7Q`^fSxrcM8exQunIW0VE;M zGisky@1WdWVo0o`d^C8Vjre;02O8!~?)glaa09Elv;V5*s}%2^zQ&R%HMYL;@v?8$ zczDiJ<4&Ny_vhV3C-h{>K)<>Tm8=R-I4V-^X>U*^?cFk}u9VOA*rVfrXeIOt9qDg0 zsB3ZpOe5y2*ZURY)1afyGf77NXY46a50YG?Mm&PCXTgq#q?>p--kV?^slFw>ayB!= z)H-vBt~$M9X(kq;YE}1kc8a)4kIdK675{4EYK4Qd1+uY~|KN#MdOuI<<)K{HSrgHp z&%7`*HqBJ58tEPat6Ae^ODa5uvDW*xq*AcYrNj3sW#&2iRp3#fbp>LLRZ?`6(NSI$ zNx~C(Kt;Fu?gTlC;E}NRNd6ab zcRu2>v?40ECfy{(>bhIBsAI<5rcz`!uG0nD!s*=GZ_9~Z!2gsCWM%6MNz_YZ{i%HZ zI%a$xzkj-`Zw1*mrb0D~5Xqf^MxH69Av=8CS~_x|u8cj)s&aP!z^zjFy;p0bCCMwt z!)NbQZOE|}Vqc##Dc}|E1-$A}oCdY=Vt#iKbW+~vH)Yt;tZk8T+_pyBBPvzq)?r`N z^xh(Oz?yL&e3M;DomV`fd>D)6I-#!X`^(f9@hC{V_t6q1GrMKMbhCeV+^~)bx>PV@ ztw|g1?qBYQyc0)_@1w+;(jfzCpuvkMF0=pZUK_lrljhq`)_bt|M$=a@?#1qB@vYxC zml<=7+pjeG%~vzs-u)qddQz%p7k$3+`{MYH9@S?BOpoMGr%dI_h`}F16aF#&828lS z!y_wJ-S(^@lCO~zV&m}Q$dxiaOIVMm$(oQ(?QVeos)*P&5xXNBL?KUC<0{tg?;V*q z9~xINz8kQiH9&Y=MK1AGRfUKn-%E^z?wx$u9Q07OSollJ@h+zFyjJ}FFuP`}xc1e3 zzvB2oQ1|NVx`!*Wbj$UI0?EysUbAYfPWmEez};n_<9qn&ZCV}kY^CG3p&eA-v2C3O zU&UL&vH!kXaa`Z4I9%Lrt?QKNjI33a`hkE{uG zY>zTtdKB>DJ5=+MRC*LP=(D&7RUK_9Yxam<(Q?=6-s|Vy3r^vudlhx-eucVAmf%uc zD!-}RYqTu6kJ|lctq%s;M+r7?NI82_Wc}V_ptR(WHPy&@$vaTPceN1+#!i{u6l?ov51VJssDj{rIsTb^tlFWpB)Z=r;)xz>AJR7>@o|UFjB0g%3wbN@!#FA^orZb6!d9~f}hSf_}u zRSMh*e93r-N6Zbac%C=sbV^*+Ji?#1%(!A=OM(s=YOcv+VYRfjzGI$u{9OI^DHwOI z%)UvE^sp8Z+^cf;0xIG$^mwGRuU1Nb6f^WU^UktbV5+#OR<5diJ#hv0*d*>}B(MEV zriZZB*#asS)izOq5;c%No*QXl>*f6t+6PNM;dk+>0*eOPOUxywYVQZJjy&!7CTj4} z*F-)!7c}_OguweI1c~_ID9rcr4K*oQ!rqo#bcKGxzSAbT{g;7FmC}pY_+uiN4?<5k zDcxm3*D5`IrNT6e*m^Ge&mjZIH+>O&10GeGq~tt*myO-3^UjJ0<5|XCsO`6-uTa#JF2AXU^oS@dLG%#u|>pQ#w>x z@H<`b%#!@?s-*NYPw-Y(DmTP&XpOAuTn#cse9y`G?(?93pEa-4S!)E4(OS|}`ZSM8 z_VvGzT-76_Y4ccxd+O^est`9-!*FZ{9>kl^BPtqW8)C2QtKuP$wUgcd3jg37=O@c= zTU8@wytCK=?}O>!k6}!!+f8-dc#R zavjQv#;$~{sY|4zxJx7LJ-kPQC*BVIL-*Np#%>QsVn_#(aqXjsidQvjrPgWSe&~#* zR$pf?NX#}3X5)MG0bR$8X#7^=gP;bHtfAAy;AOez{L)i{ynv73y>;#KV>?=E6wHKd9PpcqUr$Sk(ATd zku#E^Jut2T!vonG^cjn;x130Z>Rs1Mh%;^BMHf}q@_i%9Pn2;H0Wb@co!g=+{b@VA zhu7~(Sl_9%?AfLL<48-imb~(6c8^f)N0wAw(moETOWzdhA^iK^lZxwy7kIwP|M^$% zIq3d)eB{+-&mh(6+*QQkl5yhq{HxFat#&KC(Hrp_T1=nyR>3sFXk==pO;g;KdNiXL{%ova zIH$`TF8g2^dw73f%_Z<@ernE1S2<^}sG2!K<5*|C9y(g1`{d_!tWvpJYktRgCD}B3 zOpHd}@j$|tT)`DUs_T_*pK;`2f>H>c3${G=Tx33rKiK5(GpxlI?3>eV&SpB z=BYdRHBJ1(m~o{qy&p4>nfEWy+AqxSR!q8YkloN~@=CMZ6RhTMN?^TuV!*%G70dcH z_9UG(UTM{i+4}(p5$5xNHf>SP4NZ8@s36su5yh?2Z1yN(#hfKDa?HdyjiX+HPT_!? zzQcs3ut#LeiUG%LW$^A&3_pm1p;yk|EhMw`UG&^1l2optT{YYITC+yqZT#xH8=(Jp z1EQ*Jb33gQx8kQ|sZ&=Ys;>A-o&7X0uBS5LZf1g#WY@EZ6Wno!FSWzuya^4F_f=+N zIFpB5x1Gzg5X|g36}e>}W$eJ;4@ngFw`Nt8a%;&~Yu|#I))c7{)}h-!Po-mxTWsgM z=J_h}o}D?gLe|@zJ*e(A=mM)zyMK&v^rq|$jli1xD0IxHb}kQ-@TU@eb4o&XFUv!YDh<~+9keJMVKi@boT0DAVwNhz_+2O{jvUxS9S2b9f7do5$`J{() z2+=I{_j26_U~zR~fB&J=NR+lT%C|sYC-+jv?SZ%~cO+HW>({HS zRqfX*UD~>zG6e8fzO6zLOu3p_tNjVLQ_T7YrODn2>fS=1ZbTUHToXC!|vAJ4$=zVnQ z7N&CVWcSO!wC98K`<2Uw@`~y~GnQ90s%XE)=^kC<`*~EJSvVG{zrjxPb}1cqt(@yX9ZP9jC&u?S2w^gPjX5+(gG{WuuectYVn3cyHm!# z*Zws|%H>=gmX6EKS-#`m0X4UG((A42S@piTN~K4=TJ_+;VkMF*{ABGmXRY7nmGv~| z#O~Az!1`?l_m^x}et4`GX!IP~t+5q{DvjM%&m#j_aNBFg32QsF4?lHc(kfOMj`12^ z{djLtq0#DwxcUn5O7ANY9PIG=d`G1ZAAxic#p?|i_5ve^yM3rDuWjw@?stVdbG@*y z-I6#_ceE0rJ)FY1eaQwOx;+S7mzy5d`0*>+^1ctcgm{MIOz zith-E{<5l6dex7VPg3s&@3H-L1F-54X-2LKs+#K@H@Z?~R*3=QKP>AiqEnv+nSvfE zg|f0-hc003E)}@}aWy-z@FjR?-cd^xh8;wHhm~o_(>ZTeKx#FHs6l-YX4cLpLAE|; z3LT6=myo<#sj#-Hf|QI-oQEdH>GF&VsFA>$v(_#nc%ta*PGBe>enXtxtOFw*02QI$s=_nC!Cv!fTZK zyjt-kQg#kpYv0nq%!R#oA+zDkaKvft0CUv}E~u)gSe?w2ad60c4vfLWEUZav|%;w;k+?sM)`+?3rT1CbxVD)u*Z zr{zPQTm!dc5mk*+GtS;E!1`{5{_TJaF4_jjYJVLo*M4!gV4BfZsY5w_yL=ngw_*j( zW*~3RTscdL+AY<|u1>$ST2y%o2i z%2uDjv08dL>0ZKQno3K55?t`uk&c3}kMD16OPFV)ZVro|7A)32YYPw6X^+L|C%eDh z{XEv8w)=OxpDw@kc=UQXCC+AT>=)A-y|)0?CRHfrOo5f6vt+s z74JeMBCkUY8|y$cb{NyziJZ$MBPwRyqDmK}BlfGX_`*O6bs&t3+5sL#TlyXSKin0byd+Ddt;BPxb79h1}(>ro4J#GziMuPD?S1l(dy zcL9mmm16+``-qs^l^aRu%eeE^EAHOJSFySbRjPEp^*dFDW;zajbc?W`=%e44nN^0d zx}IlseX6W>d+De4uds}#Bu2Ze)jJNpR-r%CHNy)y)3O}i3(XwQ_MykvT=1qA^-+u= z7ehYNclug|E3Z|!?uJFlcYtPuPCp;1w1?~8hKAbE9`A;3T2ft4pUj2qr{Gs;G=HUUH1J;9_50SL!NnFPfZj3zXm_ z$C%$r$F;gDCdf6r2NeU16j3(+{_Fc|IOsI_=`F8>l{wj6=8G7H+q>iK$HqCelB!^~ zb$NnEPpKD=)q?}tKf=7wj8j6L2IGoY6P~S<*d9}PH1~Dn9Q6(BSa^J_s>rh7ymJ=* zbjY^H@r9!QGJK=x!Jc{R_zLm;uqW8b@g2k|XX1p01hbAJn;@sw1B z-S;Y-+|P~*UNPe|Yn<~9by|TacXEurpzi5V$7zH#pH*dsvt!hk*qzS%h2ZIW7lq)I zZ(4U@XHQlv*U_i209(nuapk%r6x$eL%|m{}xtRCqZ#~1D^K%4X=#{C*9$vHR(fOaP z^wCZROJS#h=%bjuO9Hx_?;_LNM(jtc9j>tLdu9ut{m)c9GMevtW$qe&a|=vWABWyp zv6|CKLv1hFwN59AsKE1#vVCYSVpdgkGyYW0qj&@FVwtqI`dkb0aUJtl`W-6=Xv4AZ zySJT#a^eG-BYqD%jXvN_=lhe0z$JgKa&yHo85D7!waZRky$E)5Sh6!?&nFqf6C$C{ zS2h_aG?5k}I~dV_bo45UNU*=uQU6KwQ=Zi-4^UR z#i4avUFcmNTb%Qp8!+Cdi(h@Rc$c(%J}aX<98E-u)3#lOx7Qk-E;56i~9HP z1a$OW?gfln8ajSk!xY$0ck}%`R&89VS|wA~W3>NeO$FkZ`;h}=v~xUF6e$vq!!ujQ z?vD%y-8jb0Ajo@l?ej?tUeu9`<0*H}GqawBP4u!-l;O^_|TR-Pm9T4R!^ZCCTBax4nyV2=>h?n^ow2X6O7ll@!g8AkyGgJt4IuR+&sx~aK88~l|t_Zq&n$J#(-~~ z?J$C~;y!%{I;OKXGB64|4_=HIdt16gbwC~g=}{)CYF2i~98HasGv#?wafr{@=bF?; zwRea39XVrOXS|jHuOJC#cawJ*Ne0d2ZGA6UkB!ND-~7GAJ^LxjD?&H8hp4 zxi74CK9GsNKaBhhT;RVVR^U=B36-Fa-x~xq&f+dOBe{4mRj@|B3!l2f(Rqz|(&^2b z87GUDs!>|+`Cs)dGVH@L_aB`)*QF1(4z)fgjaPq2=dkFL^7bTRK**NN>n7 z*Jtp6lWHIcJHsbl@j5CSq?&>O%SiJ*_USbckKa+S$uJR@v_l^7M4K zsyYExy@I(spe0 zi->Tr=s-xEMBksUR0|T-@S!ick>{ZD&ndVu|C&qpe^LytCB>@t%&X}8zJBZKndFIl zhqF6KiR;^^AtAortxsO9FwCj}W6cszo-1b*OAY9=MHZM_ol$Z=YVu#l|434YZT-dJ z4@3Tlz$>i#Mje733D2FZib3q<(3p-3cbuhw0dyT#M>i5@bm#JT_c?jHqv=+^qIY@# zmhri(rH%DjR1xLWTksB0XLCdo&U$WweqJlN(kU_aBS$(O`+TM6gTV37?gMO{Yr~{pIN^Emu9CXpGnlEhnSX zdqz9diA|3aWb<4V8ab%S&`IE}yzXT{h>urC5}4twe70kc&fk{-7b7|}uCE*GZX1t( zrb=(h0B4&16l-?=YfVW(_SN8=B4V#vDer2^9H)$LJ&tpL$T~iOKh@%U{$rl1c+I>Q z71|!BW3!#PRA@gQMkYk-J9X7{ZUxs5c^yOGSeIv{8^}P)KT(-2>xhe`3*9-i%VWer z&yKX;KdNGV{%8g0z3-G5=xN~PDw(>&l80WIORJt5j9nw9#RAJdAV>JjvAzuLT!AD~ z&RqtlK{2v7$5%Y9+C%Q`mV6^E-v!7ss)I{ON#y09{{8>{pDwSn`;~v=Uf+*n_wc=# zNjiR>jXXp~QULVWMIS4c!d(mx2?>b|l zkXKINVs#R)2Lok@M|@7m^z19yTHC7hnaQcX4xPXTk#CFA9{bM15ol$5R^{fO8;nVr z@p|R|aXSo*2_2@~A!(~!VW=Y#f_}BGe_b8?x}vE_-2>Spp5uH|TGGR#=eW#g?vi(m zgrHxUBOqa(`I|!VZHQUJ&r`YCf_6Qw@}lZUa{O_~B65$9C2qZ_C8*S{b5>aU^$Hsu zil1H=AOg4f<99RL64x^>8lK2>zmiN!U_~T>07V&G_RTC%2c8 z@^-ghX;RAE@lRA-Qj+ASdJhk65Vg?T%>D6R;`i)pm)0TZfrrivpFJB$4BaTMSB!tN zPywm?)hqh=d!IE^-ao2hHp?M18&h>ckdE5B{bkUzz8~abPgjcmCRY7=u^doIv`{rs(qUTw4|Uy=;Jpy? zi*$0bo@DzenWC1U3J{%RR@rBXksm?j6%~b2hfNsK#SWo;Gh9ZWp1-0C_qyS;fTr5HGdE?Caux zZ+hKI?O6;ac*q8*wgB(d#9`}sQxazPDxB{w97WQB%eu=?@Eh5X|KhBSbGz!tu{>lF zdJmZQhG~R*F6u5INA~5`QzC#zOC;!>Y*nfg_Wo?HDXFuz8fxntPsvXrr!NB|PSaYV zWea-U39M(dyV>^@1|DJ+)ADS=%&CSPpIj9N za0h9 zSEyx8&mNZKPcmV9U>RS_HQA)P6Ke|Oor-OG(X^21OXt#{inVPX@*|mHbjG5!Ghm1r z%a?xk=_azqsIm4hIUny?ey1xo7DL`m6$GdTVZU&>nwH+uFocw@;QJbIzJkZ7FN# zdxB9Gsb@{g+{`H?#S4bYzYr^dR1F<>o AO#lD@