From 94901e8ec130e3ab2a417a1c72d0932f22362e80 Mon Sep 17 00:00:00 2001 From: amel Date: Tue, 17 Jun 2025 17:40:54 +0800 Subject: [PATCH] upd: push notifikasi Deskripsi: - blm selesai NO Issues --- .easignore | 43 +++++++++++ .gitignore | 3 + android/app/build.gradle | 3 + android/settings.gradle | 6 ++ app.json | 8 +- bun.lockb | Bin 391565 -> 407123 bytes lib/registerForPushNotificationsAsync.ts | 43 +++++++++++ package.json | 4 + providers/NotificationProvider.tsx | 89 +++++++++++++++++++++++ 9 files changed, 197 insertions(+), 2 deletions(-) create mode 100644 .easignore create mode 100644 lib/registerForPushNotificationsAsync.ts create mode 100644 providers/NotificationProvider.tsx diff --git a/.easignore b/.easignore new file mode 100644 index 0000000..0998532 --- /dev/null +++ b/.easignore @@ -0,0 +1,43 @@ +# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files + +# dependencies +node_modules/ + +# Expo +.expo/ +dist/ +web-build/ +expo-env.d.ts + +# Native +*.orig.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision + +# Metro +.metro-health-check* + +# debug +npm-debug.* +yarn-debug.* +yarn-error.* + +# macOS +.DS_Store +*.pem + +# local env files +.env*.local + +# typescript +*.tsbuildinfo + +app-example + +x.ts +x.sh +/android +/ios \ No newline at end of file diff --git a/.gitignore b/.gitignore index d2805ed..e9af40e 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ app-example x.ts x.sh + +google-services.json +mobile-darmasaba-firebase-adminsdk-fbsvc-f5abb292b5.json diff --git a/android/app/build.gradle b/android/app/build.gradle index c65619c..c83b335 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,6 +1,9 @@ apply plugin: "com.android.application" apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" +apply from: new File(["node", "--print", "require.resolve('expo-modules-core/package.json')"].execute(null, rootDir).text.trim(), "../gradle.groovy") +apply from: new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../react.gradle") +apply from: new File(["node", "--print", "require.resolve('expo-updates/package.json')"].execute(null, rootDir).text.trim(), "../scripts/create-manifest-android.gradle") def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() diff --git a/android/settings.gradle b/android/settings.gradle index a097d31..f4a9478 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -36,3 +36,9 @@ useExpoModules() include ':app' includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile()) + +apply from: new File(["node", "--print", "require.resolve('expo-modules-core/package.json')"].execute(null, rootDir).text.trim(), "../gradle.groovy"); +includeUnimodulesProjects() + +apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); +applyNativeModulesSettingsGradle(settings) diff --git a/app.json b/app.json index c4e2199..a620a94 100644 --- a/app.json +++ b/app.json @@ -10,14 +10,18 @@ "newArchEnabled": true, "ios": { "supportsTablet": true, - "bundleIdentifier": "mobiledarmasaba.app" + "bundleIdentifier": "mobiledarmasaba.app", + "infoPlist": { + "ITSAppUsesNonExemptEncryption": false + } }, "android": { "package": "mobiledarmasaba.app", "adaptiveIcon": { "foregroundImage": "./assets/images/adaptive-icon.png", "backgroundColor": "#ffffff" - } + }, + "googleServicesFile": "./google-services.json" }, "web": { "bundler": "metro", diff --git a/bun.lockb b/bun.lockb index e93878d0a131ab83429cf2af15dbaa45bb3556a1..424248a868527945d3c23fb96aa2133fe484f028 100755 GIT binary patch delta 71867 zcmeFacT`kY|22MRV3ez3R|G{Ad%>=QQbqxLj~c~3ARs7DVBKB^q*kg;` z#Mm(!gDq;*#8_jZ`R#qr8N>4|*LQv2wSMn<|M4zA?6ddj{oFe<*BLL|Eo>Aio_`?)t*Gc)*yiyeB_4cUAuDn54kiJr&m=TdlGoYU1SHP1;WgNQ!` z6(ubpqF-_f=niK^$!l~asoaK^b_j9+&jz2b5L}aA`CHDi%vi$(i}+rS|O3iciJ|STa&E9Lj4ZNtRo_P z`bQ-sCLNRfmmg=kWO8DRS)uWT}b+S*>9hA{CdS3qM=_3R+0JgMPfk8*jXI)@0~pAm}Xx-9Vubn-JmrqZXW7_vKo%q1}*W(a%C0>UBt-#z=lMU20b z64wJU?b4L(+d3VpN;?<3Rq0CJ7WZ6JDjUt5vDJ+v>!e7klc;w8y<06F{D$o5YI zvSpHi%-9ZOPj>DgDv+n6nCy-g9170({i9<0`6S0H9lj9pni91ME+tbPJ@-3OU{hoP zIa_*l7Ac+t=h)Z}WX?g7@9rYPEeCS8O_f+1{;Y{dS4AlUJQk`bn8<1KfLIRFVu4ty z(t?52*axNHs0874H{o#tSPOhUur@FW$WHDIWP&w-OdvOq@$Miatd(gefn4WSNbUr5 z1NTOOxZc&Yiwc$ovViY^c{$sDGaO1<0U!gKfSlI-6FHcZ5?!(EvIXq1!(!}7;R7y% z(?32c!JdTmpdI>vo$XkM{3VZ1h>M9zj8N=}_IQj5#U3lB<1A;@4mx_pqNyDNe z1}lnFe=+JDo%;-Pvl#qSB1OT@134=DhYjS$rp(1qW0y>n=*VywI45hgL_3g!rTjoK zSO!Y`8rX$3OG>DRB@QdBiVAE{^GJ%7NsOci`!r=F2h=@bM*_6G390?&nj^5t0 zL^yYF&g(FHVuVkFdP;Iqe_te}n4q(uw=fSe0@6+bnI8{EJ`7NDt`PD93&KOJ7&w`N zvt>GKBH{H~q5NK{id4lp2rj4nNL0EQYKMSKxL?F@dvs)+@)i8KPT^P*HxzU6>>}Ym z0azIN$i<>MKLA<1I3VLMT_W_zIB_#D51i>tka~ZFQ#TxSfBkD1+lD<=DyX7$O{vjx(I2 zwLc#Ay+vcMmHG8tZ-h6eeWBS4x|zPvh86Ux;Se5^%QYJ0M$l5RjQn z){Yc(OWk4;?V7$>6lo2rz#_NXBKt88OWqJg2?FN~cKuo`CBJVK6Y`S8OkgSaF9DVW zj*%D%WK*;QvSAwl*|1(fbXRIxQ8-wvC}hkGhVK;Pe=v|8o|qh-fH|bh*d^LFW;p7E ztIBQ>FKIwTY*hbYN@>YQB3#a%YKVd}o%p!KBrN_)cBZIUtUWd^svoAj2L=Qq%wI0> z{64YvEeHBQ9|GjsxAlNn({}6?D?=Npmj`lPJ4PQarEa51nNa4?WHZ!WPkunPF=lcI(f zfQ-KpSOGXuVi=HXn+;eFSW4o%6QboD2h*$*N&};5_QInK0xkw}I~gU>1vTLAnE$dU zSoS5+CF8XzMZ8j%nZ%GyM#r%|!ob-+eZbjXHLi&cT?pg^_yt%LI3385HV$Zvj9Bb3 zilQV%#Kimbi%R$s@u_dQA=-agmPqfvp1I)O9s!CW;CP9pfh>sAEin>a-V_{1q;Q|; zxX8E!JF-y}>rbKp)qx!P|GoHnLuUn&wJAkwhQ=dR7JF!1>>$QZlf~%;osH8P$QkP| zbN7*0K%yeC$6b-?ABfLpx~CN?=9YR5jE(d1o=EK>kd5QGCvdDDXJk0X1CVwPMB^TU z&hR^ctjjuyL+lB|Sl2_p2z@7zb#mO}tpi8As%c@vc$`&~d5FjWQzgd58~1d|wMU|t z_iH~C^D0~RS5eI3KxW7N4(Ht@0CQ6^v_i$*On0;@#cinvpNgJ!X_@AGPQL2D*Df4|H@~Hx3{35{OT-qF`K);tF z;v*n?@;Z;DiFH#{ynE`cR~BjUFKGW?AoQ6O}vG11SVKt-V^ zz7=b5!3-9NH+t}3O|}48@)Z(8-U)6Wh?O1JH{eX5zdbR@2WQ@f;H+^aAmcBP@umT( zr%80&5?7NgR` zG7CCeqy~^vaT40P2+%5dRH6^oZ`|_Y^veqDHkpic`tv^D9zLM2*`%a0gTip2FVfxv zJ%H;FkWHuoId$_mn~Xj~f;ehMq)dX&mU59bdWb$|fi6ot24sN?7NQ@ zzPL+jYk0&%;GnR$n2h7eZ@EQ*egZO~3qTgAt11d|44m`P(KYA|AFfWCONq*PC+8J` zQ}UWLzY?CQ7xI~m+@fM)_+&!a2hQ5A2C{bZpj81b&o2_qRY24(1v;BI0?1~41fB65 zHyeR7N!27h{=dB9?04p0I~qji<*q)>rzY< z)bX$?$sTVHi;hr6AU-qNitw!UTp+hDaSyC0Dd240ST~a>Fp%K|#|V!?05)$ZupqEG zkR#Ry$o@X;E(Xp>zD5uUah0?V@m$QEx@Sp=*OWDmzDMq`jDO0bBK<_lzf9Jl$7yZai@In*iu znNCEaamT8Z^46-B3{3S!^*O%=Mi^&RrGk&h_5hH{#Se<)maLQnXEL{In2aT|G~%(` zhii)ZF90(6?zKemwn+UeAlnV6eSS!woJV}NQ$$KcxE*V>;!#KRiz|=`nt-hLo7y77 zXFw(#7aNg;hv^EQs7HnS^p8D&gxJs(>xuZw!5M!ukQp|wF9wR^$yPmZ_J53h5T3|K zC6og%#5KAI9PAk{tH{^_&IUeQT_pG%x-nN%qELQC*$JHmjEIR!!b9p|^N=CAUqg{j zHHnVLmW5ESUjul@_yAgcypDCO@bQ?YtUwRwHjajR-;_eLrcH9_QR7F z#{-JDOK8`1MgE0*lV|L2e5KUko1JzZU$t|=`cgM9_L*So{l}1Z!C!6qJ#+HxbeH?S zV@wUER|smgu*8W!e$D&V=38@VUH3+_>vinWZBx%b%0_>2S@C`}VcMY!3-V^YoZoGC z-obI{;~%aneK>o6%HxjLo4vPfxYBLIiD_R?e3Se1kiNS%bsMp=eJlHxa|1G)tz2@d zdi_=fUyLj0Rxz%==3C#lThN88&GUWZp1Itw&fgU#p7$H=lQ4E=uH1>Qs;^%ED)GgL zW6l|V?dsOD%w941(Uh~tUw^+kq1MR~i=J)U_-@pLpn~@UlIP`Fa5Ct^tM>EqH@?}b zNhQ~`6FsXTfgG%%v^z4>V2J zvixnPzclv%o23OtLm$mEz|Zm$u14cr7&0W?H4C2inxP z@M!@bla}FURU4x#0}aN^Mr)xqo9U#MZnLQsF-rZ76c{cHEW`+B544)rXrYa5>QB&o zMN0lwwK%3(y^kSUY3@yI>iB=P##YlFExn1&Y%ZYPXcB0yS3vU!3RL@JXjMlnGb^jk z1!Ed!qtxGPSwS|lT2S){4pc)itC?8|qg9q_>A^PBEiDUwn`!PLHq#6(6o2n%=^-|? z4A!JZjzmq}HTR}A(_AgIsZG5PpT_VpY1u(mwE~t9Rvy`*^5L3$Gn=~jqs9Wg02ATa z2z85!GMM$Us>#;{Of(6aSltR%%aNyg8;m6|X=pCh9eWO@O`1u!=QsIk?k#MlF|()mQ7~@27^tRZnDqn(1IHZ*DE4iB&xb#%{=^WdvF+ z+!KPdrM>;N&^9*98n9rkR~tXe8@SqNOa1*!!J2zpn`I2n1ObN6k8m}mOD%(Spcztf z*2*@sTKa?84E;1*tweqpES}iZ>lmTX@@ji9Rz0_t-NI^_2G&mNW%IM#g{v-Oo7!pV z?QQDb(jpBEmS$G7lb7bvAy93J0|wTV?@?AgrE6riPlX;b%rv#3s*y|dNySaa`c zvka=FC||JiEeGLh#YQ#fuB_eYiiwBw7yHSW36@P@7+`IYY!yZ6W@Hcx7nKu%0wgm#V_H_nnX^g>+wZ(%ElU~-%qgxQEz0v5swe&tV(|#?hkIh`9uIAAHiwW&Wq!#|9V zY=5iSxt``>545yFM>jXp)8G=F_*l!b+suvXYc~*JRDH*6xds=91=fj9R&&t?+Kn(| z)Idy4tOOmbYAP7VsWXG9$H6!R&6>TZRs8_Q=uTQjh*kBsijWwdmXpa9A*VNUtZmJ&(a17V7ch;XIiACN7_t3YFUvswF)Z7 z{iv8xhrwX%In)+Q*-9{$4GRNi)h}As0GsL=Ai4o9fEnHcOfI{q^L#M2m7F*83d@%d7d|g1~Na|!YJ$RQxJFo50d)%)+A*y#JJ0e9L$W#4s!c@i60_5)+ljESr+ z0Fx;MSuL-@FzL}ft+3j3Lnvd1F|E)-W3jtIV_0nZK~{6^VC_b1pgJF=VMVYaq7Bb# zp>Z}#el#kkb_kMz3*|^tbbAGCX_ARP&z4NAo@JXl+8xtPjRg}^k?bHChnI-=28^Q; zTT6SZxmq)A(cnPK0)!6MmJar_WPNm%YVJ6$B*SG#6r&9-SHZd(2O1xYj4p<2EL0k^AhQWOWtb@T==?WM!qMyjRf_^|p2Xndh+KrSzQ-95Um`z=a zx%P2%sQ1Az=4A^+p{QRN8F4wN&`~gqm(Eso5*WMP*pAebV9Wp$1%3q(Nemb;OAoL> zW5lJ?^)b#hFsu-4L&iZjh}pss+!U-1{IL9@wTFUna9E5{zYXk5?iFh8&SG=M+z7H_ zFLWPeQ;$P4h9ge`sx#IOvRvFWO(9y=D4XfL=04hH_WV-oK044eNJ}4Wv+ViOSidom z8g*5a0f=B!66-~1s?E}|I|Qv)s-OA;TrnURmqV>;U=KwZ`jPDdi*qn@`JURMv_N%k zPdw&yh?XL~6lJ`&G|f-d;R^q#zXJ=SZt2+@-^0Ctp!r){Z2U^XRFwJ9ppc)(|x&dok zC#z))81@<@atf}0hrbuf$L_(5Y|0T8I>Dwck(!gyxOc!X!NsUjEB14AdfD+-wI>({ zGsa_gOajUBX&J+PwXBIYHD81XjcpIz9Rw!UU`!HpWcnnVX|gox2c>lgZf_BoDzjxQwn=D@KaJik`v%ngrGiequq)24g%ikZYs6nK$M}2dinL z=04S?K7qzzBlgegQKGE5jU6)#EC_za@l;(UnX!nf55QOkv=4HvF;Fb>XhH0fNs@^P za}*5o8X;M}{DVXp&{`o@Q=pbU-DX(;4V`H7Q;S49+8J%do|s{?%z)NT^X%luJ#dCi zEr4MuS`bs!WYa=tqPL)Nlfm@(&DRA)F0h=-v7&QP!CnT_W z62RR`Ni6Lc-3BwxuE}6>_F`SzEE$$0%;o!F%nJhyd3nV<@oB9+! zqM5nX`wYfu&?s)%6TU7W+?=qX4YYEW&b6suB{9;Oa(~ zsw64K(F(-~#jO_@m$m|028x0E*?Be`OVjc9zLqr)$KzzpV}77IFjlmG%$vA((Nv2aLKTBpp$+F3(;<2n4WI4v>d4@lZ})14{!}PT&+jp!#2b9%|}%JVvHV-3b@FAAO8A ziye>Djgphy1H%;I>Vvv3nZR7QpyipUC@2tg&YQVl+?28Hgjy{>fYs4@1^TH@lSB() zK4D|^1H)3qjU4xB%fN7Q!9DQ}xcagr=0=k>kL7`uMU#26!{WA^;;8gtxWw&J)2TAJ zWi?zzIMW*~J;SDsn&!Akw8vUamo)bkHgnnOTK5%!s(t#$yO*(6br%@sA&zgTmFhhM zGaL-JhC#SrUum=a1?5ZLud5wriX_pim|knau=VgJ0mm}aEUo)0KFUd7WmB_eVfls^ z2E!z)T4uHwlwu$L608>djBVdEQA=NKQ=dbNhlV45U#rQkxv#OAPH3TPY-;Vfj-s+@ zCxEpu;&NbK2jjx#td}i|fvGu$FwZpMU|d|q(QP+akP(knd<$j_Xf6A=ugg5grp|Ns z$d3#GOv^;Wgx0+Bbi zhxt}j17kcFHCT>lxgRw0U(q^@IEXJb3Nnn`<7w(ap`@6uw@`#0M9%wF?q21UXsE)}HX^BnoJQ%}^rOdKIv<3W9 ztd@pg4K&Yg{?2f8*Lt-;A>j%&g5%7qMywPouxPp+U?E0@aR;Hk0b?U$KrQukStZ(E zH_>#|w|#7KB+5FWSl=-D1T z#!{nX7^M!e z17iqmd{`x?fz>c}o4qm=2FoK~7mzwezGc7mb=l|`BwQjUf(b9~&U?Uu5D*JdPaHfq zX*Ui8sv(<1g~aN#Kr*q7{Q|}jiW!M{;I>(`VSeL0(Ho5O$JN***Mo6oLOdLYo@?oc zY-*1!;+{FLhQp_6ndbhDO}zxI3BsXQM&oqxwW36QWDCH!B?!Mi|AY11ChjDK-$AfG zA48Vfo|BCL>-Ev^I#`d7tnLmmI7KSc!MZy9%x`vRi$Vg``a8uUlvlIIS=HHKoe@MV zqxZnXvVit8HPzgY*-RN)=rNo6$1cb7?(7I(=iL|w#$*@`R|7=H5f@Jeb{aZo@*i-u zGIHi44F60=vSlNDT|nxILgD1QK@0uXraptlelwnN;3S#_Epd-X0wu#3JqX63?`rI( z*8MytaLYUh*GR+F@Bq&VJPBNeE81{1KFDpX2iPT?;>%Pe5{GFqDUcx2LSYh8gPEp?(E<7f+G`fKHF%n$`*8n~`RrCFT zU!0)^#(kztqEB3w-km)k|-(d#LHXE?%)=(pe!&tUy7Ib7**wJ?1BFSG2u zGW?z4F#6flSWCZTQzu+;EYmprsCy;D`3$QCNDUMN3)pF2(^YNJtbeO9XV^YOb2UZ91c&wRR^K4 zMq;481@m>p!DHRfYc}=#4Gb1&*paZn`uyk^3!F1iV4aM{IRIBEU23tLVt-PNr#E)V zFgb9T+YHtmX<@;{qsdaYxGnMV{}8yELC0o;W6l9EmO|X5z64{77$wAKAfY#G>bRf8 zS}xYXBVZh#xM}O?>mrHxD5T+Sco`KP2UiFJiRL&7*1%xgkl%wbL$TG@|5^B%#0O4b z!jDIfm0)ZxaS*uzCKn2<*k0LM_gjH#$Lx=LCGO-Vfw5-Bc|?5-)&>mI1oNuF9pQ(L z$ND`FjBNuyoWyGivcTl^4F=rzc%X~0D&2x>PdI2uR!3aX?g&#P^K{g(6 z_R-w$-~#|?Aqb%wA+CTi9UKa=RaXB+lntY3xz#d|OzXAT-vy3Z2qc>4PZ`K~IHg)2 zIL1e}q&04saHtrQrtzW>z7RW<( z&BtO<7ta!+z}Pq_9FCql!8kUs4W;lio%9Dbwcf9eCSvoA1!F^_De%$RVK96+^T1Di z3m1nf#t|M^SA3E)P7;{x0Ce^yFggBEwkKfhROE;$R{5!8O4^fsT|nx?3umo0R&^E_ zGr*k)&h8h$n20!exjz$&icuv?TQGbAi5t5KA9YrIFBr!o=GJ~ZR(gz2zkWlnX}$0m zARex+#vDEg7yAwsT!VS~JMZ0iD;WzHV`IeP1L>Vw=o6c2dM;KLoHVZBu@o4a23`2K zugf1I8BFUdR@0YS=u?||4q9^rz&d-`sd0 z7cqu&8W;;`e0Zt82kQVP`mgP)k9#jFtb>KX4rfJUiM!WHQpxXV7NK9n33``D#SgYkGSVyhbQ$N+`t*C}c&nSYEF4&i% z0620N`BP+xSDtXng-_gu?#1`7$1jTOxJg0#+YgQL982CkTLUjf#Jz^Ge7kO zTx@RR*rZ1NMp(3@WqI#9hCbsJjli6`OH!0LkKF&@+&0%L4c1}lguzi3J^DTBaz z!%uA0$H9U`Dwz0%3!ux5>Cqc5f9Uwc7@vv-iWr~W1 z!-9?*zV2XbAaOid2G$7-jquc}T8f#B1qV-jFunVNVFSmOunaC6LY36ACtB58U=6@f z9L&ig#T}_6l>E5{?;$j}FZ7CG_rQQ=qyRY8!+{pJM^B;H$A>$;ghinlHKQ9!{n} zOA&m5HbnPyGWn@?I9YxyR->#I9juw~cnl}=!brlce#Md|rLW;(nFwb$5#}d2#e#v< zEe-K?+s-1)E;t8@Fkbjhtz7lc{J(>VRU9$Y#-&Zh5e0dGP5uvd0Zc3=^z-%-Lra8A z0~6~omPPY^FTHzi)Vx3$q2eh@U#r>*jAg^jLN`qY>jEY|J%0qoHZ5vAAZ}1r%uh4{ z4kM$$*fH2>(Z<`rxNaF=-%%fdaVj7ljx^7_P4Z*F><7Ls>C&W}|LNFkHN8H~<&ZF-D~N7L4aR zaTw}Y(PTWC5joBT6Jws6Qlftal}+V55`pty@Rv+-(dJc8LH%8<>Nwv=L*BY0uTz%Ur?w_uv%cE z!G4i`dH5*X(!MJC$CzwW;1bh|_fOvl9cR2h;bLq|W2~uFs)=4gX|NjF!RlzYy84;5 zYWku=7#XLiAhdXX_wL`&XpTDgYA*dyW#rrstb=wd$WMI?7q?L{Vn+IiX2N=lI48lx z0?C?KYB;74{rteJALG3R>+z9wswoyvk>*7(?t9|f2wwOSw4d%-8lUCEg>Sjx!`97k zapw>rUV`BnES}dis%uO^8qVp+tw+v+QZ4>}#2a3t8jC0qyA5YgZ_&#GqshhJ-a z?V6cm60EmcG%)einyYY$?U<+Rf{k+4KNO79NYsBG*uQx_027NNkC3(eIP5ub2ExTX z#)xA+<)?diVHg*~m%0D#=rAzu#3J1tV63{aXItKY;R}&N{9W+^%_QSoJO95V4(y#rj;5enyZ-0O}6!)k7w8l|FZ*}cX^tMu9(*INF z3ctPlAqFovjEwdf48Larvf;jw{Qm~B0*9GD9Ync^I#p$QJw_ zM*j;iUPKqzbr}6`zYqY-;fP}7PX~WFqF}Qz z#x0gxqZP4O7#TJO^2&)8@TO8HGQ;MQ=R_8`mDGt0*GBR-CfS{BAuwPE=|L<2-UrBx z`bj+}vegGbXS_ku|5He>Xz8C589zQ19xPFU#3UJzNPURpIWZ6PG^rEm9D_fc@sogz zHwDNHW=K8@$m_qceolcA=O7@%&cz=lut0L1A}*q;FRf;BGrDdCD5I^C-b6ZAOI#yy zEk#^JCc9DUo1~r-S&!{fCz9`xoJi+h6S6hwOIu<^0#yz`WH}B=|8E!w7m?1x5|2nd zCsH~p{f|jJF2m(Srhh`}M3(Cu@2@xlzLy^V8)O4qLU<;4MaCo2c~x>E{jZbj0X}l& z{ZV=o>AWfNmeg}1rJtn#ZRt0bxPgzHMI2gE<60sb&tLtsJOv!*G|*kdE4 zcO;MvH3-NhX*iGud;fxL*!_?hH6k>UT~oMQqnWB?)~yq5T<)QQypmYm20D00je z0Me_F#3B-l0r5{MA-RX-oFpHfHa4S-x#{3%Lg z0Rkn@iA>KX^_)mOwXyUdax66mGNG10X3!ppf65n0B@Q|AY*}*KaZYW+!=;gu}>iE08U@QwG=tB<4rN+{P6BPh>_abS9h!$RPRghfxcWNTh#Z$%*8tMWmys^dK^# zo8+HDX6P>cKZW$?OZJ#fX^CZl%+OoLBZ8+Y<)n}k8L=XCVioC6ECTKiWI_Q_Cvs(O zA^HCqqW}Ll5qP81MP`r_*|$BVPGo`m09nAk67ACeQ)uD%>n|fl$$&YL2@QnK!IuVP zkn#A#CY}i7Y?&tc42gUjB>m?AS)h56FOaxU>WhKKX1N3o{8N_W4O_Xy1EjteNUwwZBhd%=*jXOLpTdI~|0V;zkoX43gx*R2za{@i zaucc#r(yvzer}1X#Ju#^0~*SMxSN#Sfvk_0#0pZc1Y~wqCHer_4)r9*Pmzsm8Ui`w zLV&zJg)B}p8NP)D3&0ttBmVH<-5tmV>Ot|pka|z4=R`a(Rnnm|gT>OH$O5gA zoXBCeM_B-nol|8kQa5Q-g?=|7a||0?6Y@2WIbNUaQ`RBdcKnJa-e7+3hcnY zWPqH=jQ^H8k^DW73H}45mop7D;knzS# zJ_*R0PXRLH89@9?RW#`_U!o3V!b^Z`iIqSmvbwd{W{mAPasT$O2pd@*=VT7lAC` zRUqSC0~#l|8+1Up1>}_zssAkXoX7;Sp>t3^lKw>Mk0t*UvLH`nxTip4{?WmU$PzvW zGUJy(Cin_i7?>OVK|K$U3FQOAODPO20jvt-MWlaq$%zbC2gvm5O01V#2{ID2%7FhH zWWo()c%n&f+Z*c`Wxi;d7m@h|Nls+G!IBfnLnQwcGQDQ-XMJ1Ba6~qEM0oh(% zbE6&E^*v=kB0c&_PGp2IiT!{qKm?FGX)KT#4F>We(mz3RBA40c|c~Y%Xm4F;nHQeMLm?_$K$|2dGQG``=S1pTq@L<<5ZOn&f$Wm~KxTXp$OwldegpIbzbXBH0u}}T z1IPlsmiP|Hi^%wYNls+?%nSuiRh-~pU*==(|Ama`D)pR5J-^h6%($@RL=NH-KzCqm zAX}y$kQq0W+#hJHV*zmRBC^Id$%%{@B=r!f=R`_vq)z04Jxp>U<3~tNWI>~V%x4gg zuWeV7;9!lCfxL*^Wv2oekpJ5NaVC)AW&wE-xqPezGU1IBTtp`L|KF#q`1G1rj*nT53>HCS%|G?&D#KI%{3)xV9OeLGj~rpE;39G; zeM^Fi$f5N4Q&u#>r#@YUZ0Kyn&!4h>{*;yD0N3YFSxkIxg~%8 zl=btctQ-fp_-QN8ojE^UrB2SZh za*O!krra;_ntKV|*=DeLD? zS%2mf!A0b(`1~pB=TBM1Ncj9I>*r5djZas(JbeC?_5Z=AthtPX+>=S6c9R}zH&4g+ z5}#L{xb^!y?+|5C6I5sY`>mRrOoB zsPM9rS03J*owf2^#~GD!w>spSakrei|7vYgh57UQp1b;?TZ`t^L-fU6UjDZ6@|^qn zs4#PhRJUec9ejUlf7d7TWy-f%L;5r+;gXnd@}e0&H=7suZKZ2qLQ<0!XVx4oT{=0~ zbNr9JdW~5$$bVgzXGb0^O;}&!*P9P=6z?gIu<~-QZ%TWT>6K^Rj=WX<>_nI#Oernbu*)e)@^+5=S5vEf9-uwoAP1Vr1!}i z^`jpO)DJn>VZpV4-@4@*^LqS~;2g#KEobqTY(CKKabV-gM`l}N+l&kOIoi(5}i^Xg3 zvvbSfd3E--==saZYPH_QYR`VU>T|o~-TIeX1ZVed-?DAo*aM-ZU#iQWPrTcAua90b zd!<&cmY<*N{d6Di$n5GliuXKc@t&)*t7a%IGKYQTS@g2!fZ5wB#I)YB`(mnjNX4c@ zevIyWb<)PUKel&vpC0J8Ve6?k=KcFyzw>MFHlhC7%=u3X?Hrz8pV1G+`(5C`s_-WLb z*1v3ws}Z(J@4F>O@f^Q)VgEXBDpIpt!zib-?~2@;(tm2;+xQY2j{Z6~|GAcbcrQ8j z?Zl|cTk~K0^OEk~d0zEDo!`Bwz3SY#ukt74vqr2K+Gj@e!Ao!TfCv=tuWA8rb_G0M zo;@Wj`y&Cli)tC*+b`zUxzJDu@4_!ds*Z3d6hc- zl~B83$JMKr&CF4}S2^AH^&3ZPHpVsTo$~eW;}gR6JRLuy?Y3DLJ zq5qJsCo{X(ELv)DUzld4$dUr^<6Z(4=?{dMNmX7w;?~*p$Y&3lM$PvHgFVM7F zwN{pzeqT(#nH|5}+Rbmu$$|y?)O{9sans7Z|?p`j}9kosFA+d9hB1bypTFbMNtU%eMgm zKRhd2W@2m0@nfOS@=cojTZaZK&+D59pm_g0>r%{GwtS;vvxa1^Shug^lQr=H_44H_ zc{L$^VD$F~23J3~%(ANY+ ziT^Y_=AMyv)pyz>=k~EaU+fs8_liRCmb@}OXu0R&*51#XpMS46$i8#`{N=A+{&FUF znfRC9p2x<#8e8sMifjHdi+@ZgY2H8O(a0IIh?x zpRwOhtTwe@?ItJH)by!^wtHN@`IB0t#l7Yg-ao21f8wG=dfV!+SG#xhE~RR1y%K9K zS{^&5cc zuf8+k*|JgHX01QJ|8Dl+e8>8r zTEx!!yIL8i9dX~*A9(KP*UiIju1w8aq5jMAr=DG?95KdyITkIK`j27~NALNoM)$;* zS?9Kl>sDd-hC^-JFLcolqImj!yScU5;-uFJGk>Y43^Kdw^TVLzcGB-qsT>WZX*d+s zNuL`I_33Fd?&q0us&TD{ZiTb;Q88$&edj}NZq1y&C@Np^%yzx< z-aIyC@_^o#Ys|Xz=+r^QVm}a3D__#2^S%Ad4>~P-K6cf^AwM6pdH!)fujlkP$M$FU z#S2$HHkND7(mffF|7M}pMbFoNlwRf5_dPo9$$YSQ@w#;*Bi~NS`{hROH{}c0`n7t< zX!keKw>#Dzboa_xZD6D94X1V$Iepsv_VsMrMBOJA#j}=d^I?O}{Sre4&v^4wx$!SD zgU59~kf-9+KL_mzz4&ZUa=uwL>#rVCSLvHx;?lD4y#XFt({**vyC!e9RO$En;QCxS zidP_K@mzl%J<4t8gvQ_Z_h^|tx@6JAF1t21wFKWi_VP;0?a@*1kAM4M&9tW*++()e zyEiXVXJT&O(r=dBDHS!Tc(1XMF7v;;q~Bukl+2~}$9F4UUJ0;HuhtpFUwJy=1a9(R&*WBI5O}zcE`>pNMzmDtmYM#$u4gVVP3*VLC7;5|> zsN-@zx2tr;$(63xcn;x@X-|+Cx%EO)NB3YChlJl5i%Q^DW5-&&KSc*SxS@7eZw zXMNrT_gwPkOoz+0D%QB^cCCHWr**u#ciCmX;orSi*tE{eN>^IuKB>vck#DADy>P3x z>E(`-OR9d~XH&Il75}`IOMi;u>23RA61q9*i~3;_t{aR=_@0Wplin%dc#-83W-wh32|@GK9)wA&g3f&{985;W`DM zArM;Y!-hbZJkFe7|7nQ1m8q>>WheyS@dzJ(f zHyj3`#Y6~8he7C~KceuKLfhdGy6Wk}A*`DO;XQ>=z2yi9-6liWJOV-w{Z9%mQy}yj z389z1ek6oF6kJC^=%a^@f-qnzgo709x;h#{iD?jGMneeK_fj}T!7~*?gdUX&A!Ry* z^AsX=_cREVXFwR01|dp6P2oBPpD_>y>BGiAm^>50EebJum9Y?fXF-@T7DAk!Md2ZZ zfN>B8>r=)-SU4NPQwoWC!|@PW%z?0UJcMNZ5rwxD+D?ElR8OA(VclE^?J$hi7C?xZ0%4rK zm%=Fuo>L)A(4(e8NYNpjr!Yx(p9Z1wLI|U#L71YSrf{8t&vXdW^kLH>OiqVzi^2@O z$_xm;iy+LH0b!P&Md2ZZfSC~H=u>7wShyI%Qwo~ia2A9XOCT(r1!2Dah{9V6ZD&K! z_4L^g)-8qbo7g2g0m~sA zq>!Pj^B|PSfDkhe!b*KFg;Nwf=R;VnN6m+jvI4?+3Tt)u1rRE)gfMCWg!TGq3fC$4 z=nyvQ!*mFfS3$T%VY6Okp}DJRi#~?1RnH=Pt=CQmY}2O@w(Hr19eTq>fSvjr!Y=(0 zVYl97F(6Y zo6Wi+4t4NU-2-vx_CX27a!=&?BfJt+?3w zNNbXQWUINk`V>DKVOh55g}yddvUJ7^-HbwaG6LJf;}T*K_*CZ7ugyQ2T^AxWen*#9 z2yap>lv(?NInI=4V4}}3drY)aE?EDt(|khYm$@z5ywZ|+_=?%ZY@{@IfblDav}KuN z4x0Pq@+>*t_?c|l$A_J`ZqSA`V_hvjjR^kDl)#CY5Lw=&19;T z>2tw6!eq&F3_8PoV-(o+E)vA=c+(nOL9Urivdms4*IHRf3t9k?Ve5*pK6uR-x;Jg) z9Tb8EHd?Rj{kz7GXwsem@e7VLQAbB>;m0yMk~qt{<=KH0nOm`6G6S>BHO%H*&oX0w zG;eT{&53{;Khcl{%xHn0=CcL$-r44M=4FL5w`7}V=5jwqNy1iTj1xEyckz-PF8k*9I-jU9}~ zPqHvNjVoEE#~(3-NNor-)|bCpc_%;iN)d5W#jBO1I6_9|4?;gkZKTxr%k6)lF(JMZ zgov&aKbHXT9TE6vylu^ix#Jou<6^!WKe?sG*M+bhFe>oE3gh=Y`1L46*0vz*8dJeF z8OTg92bCLAn+jxP{z~zt)TYUBeC@(5sm+iYe^wMPD>4fj?QygkySqZ-Wao zEJ?-}30W8{_DXL~A6#F{a5Y)~K2qE+GvSo8OKpeLIOU?G=6LT5r(CSm`0f{Gf;Si_ z2~yiFwR+G}q?QSd1*{Jn1IFgS^4SSn19L9@pvB5vS zbJeH?!*TgzMH<7V(-YTeAoFMf+YL_+^v;{c46jMk_=wn}P$NUa~VGjip6A+-o-9#Z4$l30=cu$M5-mRC}Xg!>(g*K4T_ zfIIasLsAsSmwltae~=nquf(y!&4qgduXjK?2f<#-f%F~%GmeJsh1LZ4L25B@JAQ!i zkJMtJ@i(-%P=A!3k>g;E|sG?c+uw2naIU}Si<;0V~a?0*h2$D5``!o3E@%kk2wQE<;gZtO$8c#0X1hW!j< z9~P4u({j9|v$)jKp#6Xd>{h;{igCxlxP`M@Q%gv3EC}~-ihNrY1CE0&ml_8dwec|S z;k@|vDrys84W(8}Y7?RHb%yMJPiSm~Nic6X*sWe7T&gk|gni6DEF&XNftyXu{wgcA zsc^IDsL9u2DbwI)%du-Y8u>*7n@d-T0ySkxDIpG(nlR~DyJV_ z;pCjzbBj|xQ~nV6G=(*THCOZ@Tb*j8_CV2k!g|4a!}xpfUtxUfA>Tic3EKnP3wxal za~bv)_9u+z?Z04u!`{P;V>QB=U}hMP%FZyplj9leHyB^&F#v_*%VOH+!W`x6YHGr2 z!D_?m!1#T&JFvU3`>+QvewU4J6}b)L_Q#!#wdIb)-R3%sM`>;z+$^{`a5KQGpN!X? z96`LJuw$^}FuoF{BKwH%P8kRr1dE2n!s1{&TNi{ChVe{Y6jlsY9Oeddhn0l!XzdJB zU|W$P&tKbMJaX-T@m+j8_wk&^9gRC!XBc)U<;(K;!%5HGg%g%nl2K_0v7K zIeDdWv~zXiV#ZO(MT_pnPa9`mojuEMflH()!F{%%+%j7R|^06g;BVf|r| zFdpp(!D3*s`luaFC8LJGITXf|`!LuD7*Fh@VQDZP)W^Zb!zRKe!FW)g0-Fk(4&xzx zHf#=T9&A30hxCQ809a#KjBeVA=K#rQjv=t2uoT!Z*l^eg*httY*l1XFSPfV`Sbdl; zjQc;gac-&i;pWkcN3HKrYrd^088!qq6qW)T2J4KhyTHDLb>j=n_@*h|81#m9f$`|g zyBglb@UCSiY#H+5Ef#ORzK44rY(7kfErcD!fN+K7hZTU~S&LE#Rv1J1Y#&U==v)k20b2<>3GEcDAT{7nAa7{Kz$U>GVI5&TU_D_YkzXqBTE@aA!Y0AW z!=oas6091mI*fNLyg`Y9KW|Eg!FVIGADQs=yL)3ge9kZ#;&>c(XAI z#v2U2A&B=BV_;)p<6z@q6JQfzlVDR|Q(@C!@vz^KPvP8nb!ZWgVzA;cH~sW(r;@2< z;q-=8gz+AvGK?>zdkN#~)!M)UVK!J}SQFR*_#K4tzT+_L73?+aE$mO&X0+QD*jCs! z*ml?s*iP6k*lt)RY!9lVe2c;z1vv&g{{MCM9dK10O}w|9Yezt--U|YX9i&~rF4hfk-CcAb|HL#{nk* zCjq|!P618>&H^q0E(5LsZUSxr{s!Cy+ykToRsdE476BHpJKvj5{*1-79)8vbGypUN zu$#(mDf_j&VdD>_@aNzr0j201SWvfIa^7cdPl3oskNpTzHmv>u>7Ppt0& zO#n>+p@8Oq8h~1W+JF#15TG)^2hbEE<_ktt0(e`o8V&Fl{89l)fMftih86&q{}RGAq z_eG}xi%^yd;4MrbAP5i);O$FQKs5m0(0vF<2mTVkJ^;R^l_iKuXeR#<4`sM zPzb<*o+$tnqWNm0fr$XKTxvw zo^Iu-xg;Zz{cq*e)IM0 z=K%iAc7TD0jfeFDfDIU@oX@{st92OXgqp{=OapBsiUznbZpaRN>A|-K@EOnV0sjCj z%zVIazD~>pcmwwl&z}H{$INmW=W9`)pSe-qvhr_Bo#V*kXU4nAu}$cckTSPx`OSM; zmP}44qUIGxY74LdSObaza^l(HnO9v49+&aVE2iRE@a^$@oIU%$f$%5N8x;13-q^^5 z{9lp9{<<6JltStOa0eh;kLf#gn97SMXk5`|z0NzI6KTT!)&mZ`0khTW!pSoy_ zG!#%5z~+~?D0TFRM28@wHh@j695AM@qm7SzJP9k zK7ihUUVv~wPe2bqS3nm4H_murfbIY;Yl=oA)HD*Q_>J}jH&Mu7uHum1K;zL!`vYPD zF=`$+G7!Ki(lr34xd1Q`upg)g0A)aXA)eika=Y{J z`wsG_Bb@-?CK#W~n70)C{sZY`ntDZF%61waInc&crsDS`%De(aos6G{k#zvTwJg7< zsQIi1oR?J%`7;0y&g{ncEApzotS^_P1C|50mrIc@0a$v<^-=-(QMMTABFel9dyDDXXqBCeo&B`cnNi;U|w9v&ItrnmulE1>kGF*oJy)^P)vdYg>`O z1@I^8%mT3fT1Ip`gaJunyVsvC4lL+ z05C1fY&w8^o-#bEm{+dKe66I;H}sC7TyzM)Gm+!Gyp6%5W;fsje*6kJ4&Xf%!*BQ< z1)Nhzd0-A8@3iVW9euKW{|)_oUAQ%7{YbC4QOok>kJo8On!WwJePHHLtuRXJoc_IG zk-g5_Q4-|s>m7i(g%UfIbo+jgKIv-RYdUQgUw;&tHH%SVgOV}}NB1kg{r+Mu2}X&p z&jwmjS8+CSbhZc(_TKOGSey8K3W)j!2&xAt^OoLOdyXz6G2T_1NQn=#Z8NLg?rgk| zWc`=kIg$f&#XzX&u8eKR4*OSO1ZFQ#1eI)2GO@?m>5Gb=nvW7c?*Q%*yX9ObQ>j%s z;?4OKl=yi2`+ECpYM_MsdbHMFbH``7L`byimO z@ebDXq8UKIE!nkzm@fW!T@Kw~K}$F|uRn0Ce5pjv=8JJ6Z!B$iBe8N*O>1)M8MbfbjXI_o1zs z;d&r2=e~ZzspXL^TqbVY)3T)^P~zw9=L12M)6=KF^-jims9ORU(H)Ps|9GX@U0`5* zz0E1sK`8n_C%Gyg7c&193-%v#vDby~Q8m!ppR4+##1$n6 zGrEl4bM7-FWtPLJX+g$2U@II5tZW~SE!1k48%#Q_ui4v|Ws^Y7fM8Bh5jOO6vfs8$ zSpeD)9!nq2pGpR|d_2K)mBK%&oO8;W^jT z{_v6LQZP^Td319L&{xpOj!1qY+wn*a&{eL*$1OaYY|fS|*{^ilVrpBy7+SJ@0P3$O zIltm;;;nCS;2kT!WmAue?_Gfx$P*tLR)D%a&^wtqP;3v3H&N|x^}72SQyLSj3Tr;^ zr@5rS9|axPc-$_6x_(u>gTPr^T8}o2u|O~a;mD=iL9P8aKg_N=g>Etvt0{T7;@}Ee zM}S(AQNKSJyy;LMT{f-TRQaLaS!XCni#sV!x-tc+=R^G#j1x=SxDujfnO-g6G+OuW z=yKG<>}Kg~qNb0)!)_p$fbe#}<2Lsu{X90Chl`Z_NS~|{vdF$6U5H7VEhdO&YHJn)t^JHgEqXxq?MYfxj@&S>F?n_^@EonB%WAP{&^0r zeuIf%u7c}_FYT^(?5NYS*@XgVE|TvHeT4QR&3l1%@6gE?dgp-A5CoeL-G$gB3h}F$ z-HGcc;pXqInq>X^@A;tKr;x)low_}TMB0)0CFt~|$d?fNm%RK&C11gasy%%{<6i-D zH0|PkOHI{Iqno=hBMZC+sRi`;9ZFVGjn_z~(1Q0!?olj1spx95hxT&jNlIoEH8Y*8 z-dLVWPze8)q;$niH1LhSiO#`=4!+U*>B_pyPEzb>`e(hO3v!{SYZW_#84FK6+7zbP zQ|-5U1-cTeSL{W0ciNN>JPv-VAEoV2AKqFT;mI636B;s^TG%UgZdhC4d%8%~t=8w= zxOrESNR=cegR0w0fxsg(t#iLfrTVR!Kv3t`dfLSOS39?Z)_%g1DwNZ79Z$wh7z!Sz zl-3ImMQo>6toN7~FwnBA#_OQYOWv^L6A^!`t2ZqhK^2xN)&q13hC=&@PO$_(k=JLv zv&kMtmS;qTk%NmQdHL+gu3XWTHr7_`6~7>jG-pOLaCt$Ct+BPpy_lJz8!$02d-Z4u z1WJh?^h@v}iTg*;pGwt`80V>VG9uTWKT&*-19u%$#mviXG~@kBDQU1A5aT(R4VKcw zo*mj;t-h}wP=n>Hx=y>9Rvu;-Rio%xHZ27if(Zu&tYy%Qsft}bVVy;;T|U9GXxCZ$ zmZts#(hWW25T0qb=5(W%sefa}!FIBc?^7lav@hxMKl-M5s*%(eRV``yC#ZI=gPB}f zT4~eWeC1cPK0Pa2-0JAaVNs13b^EL@k+V&09_p%22RTmk@v}Za+kLjL;%rg%+1(UH z)^$|;G-56|nH``vwvhMtTR-2p*6BtY$UDf}4?djcTLU0`BuF!Q_DQJF5Gtw5CTvA}-&{Ssq;=?ju@@OZT6kb6N)sNPzogt1CliPf!9kHQ`k+gt(`d#@nh zoX%(!N0$Iii*j;By7}qkhH?Q`bAbZCf+w3man=fYjCmWFyfk?pTG6Vkv5%773(2Jv z1QvjshHRGep`#j@h6y@laKR20T_ZHaMkadhDeI9FnvjjQs28;}C~ndyI=c94l*)4b z?Q-#{cW7FPi56abHB!(t)L(Iew<#rUspqTt51nw-2S_8#0_Gub)CWpI+m~bmT^3^w zIVPQ&UZL-uQ>EMKv_+7^BmTvlv#kEAbyH`8Uw)+ohRRSMkt52x~Fa)b%=dto8&9O-e@$bB$K1>Jf8{Aw?0e@-G#(dto_=A&u ze=!8Y5DD@QuF!=4kd9@gqt*qp8JBBMKC$*lesx}E+EY;R!^>OGFwHDIRM#ripUry} zI*ADi&nW3Zzk>_f-DzJkJ=hOk{RoQs8r*{zD>W{ zn0pI-5Dw>Hl<MnJJGcYp|oKL`{Zs#6j$ z@O~cF66Q2^Fjl+0QxyZ9uu=lx3}}lgO|@63Sy4>;idgbknw6m_U5FS8reBCh zbwd5|rsr6D3}a}hlyPRUYOlIBnaQ&l8$2Gyvvk%T`l+(-(VTpiVq*9fV2F>jl_Kb}#@get z+aR8cFdUe$nm;KK21u5*a&q93Yir&0ZqSZvh!can~jMCZPo zxTU^8BY_am(TfN?y%HfcZ8aGtEz1Emc?Cqs2bi4X7$vhnhY5-;q zZF0jpQ#p)IfS~aSDDgh0vUP#(C1?C}ABZrvyxP8}&u*BflB@qVN9y{iuK99yoAO@e zWk+;YJ;>Dqnyc2{MSVRWmvc1M10oPxZ|snQ5oudZXOU%mjN?k~*X_*Sc5$ym$_dpF zt3v|0mqJz51=07SA4)0pN;&qD{?KMbPC1G&%&FS@$nmXv*=Q{#p|rac+8RvHxcW&d zTv~B%7S>xzCAnJuKXwMDhN2l6($++wgbhTEV|_-ZUV8coC8~MJJA^TWVk;;PG_kbe zVjPG1yg1EWxqev7fhDe~_02duqRi6hVd*|{d7J(^J#D9peiRV=MD$D3hpas@ARDPO zC(miEr{b?OM9~dT2yhoI>4TNWs|@Do#D21~J`?)2F7REgUwL0Ad?B<>cE9|F=tN)$zbU|{u39pxeEh}V+HARr5(uRV;=Il1W)*C5 zMwQ3Dr#&qx59vw?nI52y6Gp2;Uu|hWzfs*p9buI9@l?8k;%Cft)W!LN7?i*?Y;8^MGa4u_DIfBC2wLe(13N3ECwymm@s}ekE$soQg zF~SQ(WScTm>yK;bLDS&CMsYcj@?9 zHi$!9^-|oyB9CzCnl&)DACyiZAD}XLCnT47h)=LUYIyIjew&g;#FT%{+cht zXzJEY@u3)B#iU(D8UC_Wn_h|!w%af1A7mh$=NJInWE?|H0x)=G#z>#RrBiatKQ#mQ zLm;Zl*^m+gAlcBd(iNy;ccOW4rx6@(R}qHLPoRW=7t@_%#*Qni%c>;4>^U?`#4zTX zm0)!eV`GsSZjrV#zMI3b3X?Js*LpBWcaC106W7LF4w8sBm6=Gb10gJxzKD*fQpggp zvCJf?Mt$FG3#j?Lj#L&=U5rfj_z5amLX^sCY&Th2*3=Kx+O_M^zrNaE-yobHS_KOW z7=lDsYzhqw7RFuZi)yF-2v%H;xlfru?75zkZ56B|Bd5x_S8<|!>l(iu``Iqb`;?Q9 z(t?!&+P~;WM$VlYCZLaK(_#eY#xRzUBBXm+;|Rak_?&a-hL`)x;LQMRoM>%?w#@ zUkT5AySjF}0g>~H4!e7f!kQ`$Rp9YxW=h*U)}~Wb)EKSU#j}O=)f7gF4Yb9%Sh1+q zrL51XwPAXVGwE@4%(RnKxgi#@K=zy5YhY@&rsx{z_G+3~L#bct(JX1ZYs2GZKji7b z5itudoWRL(7dXXGb`8Fl1ANOVjWJ-3^fMN(nfbuM{(obE$fgqfhET1VFl5Qt*t5<2 zCrZ09#-kp`EfG*-guhUgnSJ|ySnvJqW~J-2Cz0cboL}klFPLrxNvdDZ_6PPawoWtX zv@e0cZdDXzGVO{$U?<17(6a{>8rUI>>4+S*|?c% z2&P=(>p1;m_AAV#nYCafBk4L5+(YkbVHgKeSZzFwrD3%(G30T86Ta_LvMzFa(V03( zqUj&T8BUHN(5^GoI0T*Tv{3fl-RjxWcllh{YO}+JhTHAo%H9p2hS!~yTVZvdG%s3)u;!#jRAr!5R&&?3qMu-7$RyIKH>e% zrdS~8O6X`xJ!t+4O0Nfj{7g@pqnhPYKI^RN{e7QSnEBj~-4t9%A*=d8_#1TDi}5u4 zW4f?x>?xgAxBy=Mn$Hvh1f9(i>Qo=A#@DCv*%l>-DWU!Kl>pO5_{_yXb9seplM@=1 z|6a@mA#0qk7i*BU;?kNXN&u~Efd1!l;EpgnE3z6F2%*GK2(Bfij6))(x3jT+OKBl~ zXmLC=%x23GG{kC+S|WZ>iBcLW?z-aX+c!7Fq%p2cm*~gRZ=cq6)W-syPat4w)J8T_ zV>DvS1RnF>s(kU7vh!ZD&u?b$#vj2Fmqv=e>D%c3NOd<|bR|VK!YGKaw>`~oq_~>@ z<-`OIP9ZcDKk>UyThdDpM?>oFC4(L{0w-a?(lpdR(4)u6vM=J86Y29`BlquNN8e)e z&!(Y!Z0Q=c3tMx5#MiqDOQ0b|e-8@PaYcYFT-%llHJ_fm=UoFImSBl!Ntuly%1*Q! zgdo^wOt0ixIe{)ea_M(_U3j=a7Y3y-)nfD^)V?v$MJ;E`eF@YSwBFNY#+g8`fMeXC zl}$%Z*VeqJtoh9*$C4*jnt9Z@iE(%6p{wQJQQRd(Ef$i zRzKwLrem_Iub0Q^11xoYs?h>EFq~prU}c?3dt0Dg*KKlgrN18BvsKZ@; zSHUIf58Q4`YSsx!ELCm|LIzAB%(SFR>s?$5U3PkgmSEqpz-wlr2`(vG=EvD-ixpNP z=q|5kKhYUbFrEhj2lqC-X#eAtnkzdxPrOS?kTR(K6#Said2KD^`-l|JH(afOD;vNDtQq~& zAxD$q@YWfhFm2osYzcmxX=F#G65mhkh;6uf$1CSK{s_{t8ZICs>r$?}WvF2Qj5(`o z;Euz%7L4AN8vJL7?Oy63rHTVb%|(>3o(`WC9Gk!2JPx-&-dv*IxibEjChL@m^bnV` zOz%O8_iE#ME$w*xZU-1)%d9dTA-B$m`qVmt%hGW6uhAb4LX>fH2r4C`*;#CpwVsa?o z{o0Ka>LEO9hqMc3hvB%m351^YOLRPR$rO>ztmiTDC8VS`Ejl}myjc8v-R?#LP;HK?yPSg$C9{S8rl40Yopw3?R@=12X8`#~GUboon55ZTufu~;D zy+FzQlw-GN{0mi!qN?|_p5=VrAFBYy*o}isq=RjIt|Bx(eP(i(H#7M}LUqVC6FYc1 z9K5^6zzkbol3T`c?@JuNVspGM5P4yO1#rDY8wbGjcu`*riMBeqZ$>NxGhdF8MbPRU z;T8DkI4!lP!>GQqmZ9rAgqTqcDN;qKQGqV2s z3O&aa7bW73`8-M;0dePXK^Hu2pl96DVk#VmM7>i|GfwIK)x7%uxwGp)?cdVr>DB-^CNIf10i&V6N=*_V>)I5afNKIC z*Q7>jM(tU3v_Tx-T~}59S2_uNVG+JSHPYSQTgD~6gQboQ^ z{u19?2Ptt`#Tm}``?uMPM{X5Z1u`yplU5A3>jp(>aPTi~mh;t)1;fEf zwy`Rq%m0+_4@ZAx9=LiE+*|xj*r&v@-bM zqrSJn2zMKnWhq4iA#j6=aCiQ!_Til?h&Ke}FzrN1F^sU)n-UqN2ajHhs{S&RhEU3$ zk(QYt)|G)@Y^l5 zzwD7t^M)Rd2H)~BFMO|(kb=3%8%aCAU01td_v-Mr7wZO(@1;6&g1+uQXOvx`6{SRp z*k=m?cFm(5W8RXBr&41vLsBSmtm0oVcy`~VGkf;V|!`!IHhYr=Z`XAsJ<~G z&3luu`1tU+0eDY$efcsWbpwZpX2ito9@aA=5{HU&3@#P6dc3NQ5)QbU;Y9x<=R)(@ z{md1fCo*fi(D+dGTY8iFMvBoNNH*x!qaLT~OixH#2Rp%$XxND_9RpTHfkMu2(&&)t*zDN`M~#eQ_+fG z1tmdhNwPL@if5hg=Vr5C8zsD02R0d6(L42tH%i!`CNgWelY`EtpoAlHTjs1bUHM^5m%Hxkz@9fxS&+-4 z4|%IRnClfC=M^5-qqoN6-q^`|PR{`~_2#}jgh?C@9kB){t$Gywz2d?ye9X_yfs=0F zg!Q}d#h0_&Z7VEo2QJX?mn^g*Hn(f={T6>T_@|ay2g1ywU%r8P&B`cA03h^=m!%O7akElczc6o3y)SZ z^AQIm&sHF>s;reJ^)SpYFC=`jAP-Se^Sap^F0mhz3y83#dfR+jx;0)&bhi9yh_q^c zA3evNtOmX??B4$V)S|9pOgw^a7$gFOTXOz|ARZxEp?OT+_s<`&rNIJkGNgO z1|idtumU)P7g+YWGDS`6DkaScagknq;<40OB^~ZmaS~6m0O=0ovD`vpa=EqJi-p?` zUA;J=%%_?iCx~|`$a@j`8Q%nZi0o0~Z85KY`oV>@q@AcZn)7(w81kD?SdPZDomO|| zFH5t{)=YUb&y-$7+KXi;8XXOy)$Ij>SOazzp-~f+Cc4u_==4OTp6N0$IVAWKJUgC= z88)A0|9F4PDm(3mBIGkkaSKcU-974j4Ev!fm^XhBh`@jjMbYHy%GZ7(JTWOosn0UW>Ii@Z^!sw>q3U zTU#nJ1wN@OJ_yN5yZ+ZJPIvb;<&y>6cxU{Iwp1G!>PC&?rr=G4U|X7oyuc=?#mZUX zrfWkNpG6!cS8H`g39p}no8@nLZu^T)thP8ZgWe9cr7KMD2)&vD?^KQ#_DprB!p;2l zg1>24F|9aU>wMu-^ul^t=}loq;R^x9=*CoRY*LER`>9Hkz;7=+c2V2B1scV{&HO5X zg+8sh#D>csGZq%|buk(~4K$>SXm9W}YxKowBeG2P#bp;3zgSquvF32~Y6RRGjaPB{ zYZ}C!<4qw`Ltqy}6DvOcbmVO8G`t98G0*LbQ&M{R}AvaF=t%dE;$4H3(>5D0bD+_ zqt-Lve7CWe%h|cKTK7Y4euU~+w)cBz7gtd)&dS$T0&_XORo_|+ca)kFw%`3w!@15Z za5W6n-;rw0#Hb@}z6iP~-qZ2dVdOu~LUt=>+Q-Fl&NTf;jNEKzspc;$?Ap<*;LnJg z!2}Cmd95=Q1%_^)Go6?X%(f-8!lfNhq|)%|89NaDRZX1cY6n? znh)8uEUo2D!@}286J6t0E&N8h%$bve-LWqG(GpG4g6)Mbr1(BZbPMdV-fC95P&afi za1Sup!UQe9Q*PykPph*ryfFMFP!hjoX5scuj=JoU^DeZ3g`+n5FJ1kLEwxco-lQ!R zEE4#?mbZl&-Io&3sZHv1ZWId11ipsK^3`(wgQ36se~s^=7^x%=B( zbmdbRUJ@`BJw2$%Jm^Z^YnQhN)dq&P4?S3fn|;9`#p_Pgo6d&FxiXIqFVt&ec@~l>e`}iY}HottGce+E!q{- zai@Dew%jW{$a?`A*#ShhJL4Mc8#dlQ3h%rNX`qqcJZRl~#ZRZQ6ZjaPAmVM~v5cBK zd$z9b#z$lPY8H0!rDZ4IS$S-=ubuW3vky5oz?H4|@muK|7hp-Pjj!72RVZ+YNrI)3oh2XqWIcc?@J@wqX z)IX5N5mue2Th(&3Wg*rH+0{9V5R;KVDFDA!>(d0sFN+o-3YfQ;#V9w$8d+sAE`o{I z2;|E%TPo3n#SqQDO7zQOsDr#{MvoUO#Y&&7Bn?fU@c020=w z!stcacA=Jh?ZVsBOG>YN=jBJMb?RnuQ6QKmC}9;@ytLTBjNOqAc3NLA8k4HH8Gk_u zE8dbmL0gZ!8~QnW)TFyff21m-{`-9j^wx?0A|tP5TL$uC}xRnCb@+ z)B^<_oF#tm#Izm_vf7`Rp%lDOsg-3f?QJ&g8k*7{GXeT7F7ualp{V6q-O_ESOlf#D?n4Fc z-qLsHb}YWUrB`+*#5tT@e!kS8DKm*41DjvdDv%BhRr&t!H!J&W!cDdR;@;fBN6xu( zHD0av)4jMVnP4lBcUASRp1cv{_*put+gF(etiS@$gfdsaF?#GP4Z-iB4OTu#xf#Gs zN;~<+muyx-Q1Zf@dUn7^L8^zM^^=M?u&tlV)Zw9gJ&dEhFc4NK;fa+#XYoUWTelEF zQ|#7C_|dwRXk1PSoke5I1d#VCh!wBQez!{SCSK(Ia^lE-(8pCc-%($%`j-jzFE1=v zT7`Krt-*{in5EQ3MFiD zKX%u=uk+b)7D}+zamkm{M`!6`fSDemQJlN%S_`M|B9%m9YzQ*EujmmovU%8qg~vcf zM9%pG2mF$kU2ZdplGfrydhyOTpSppbzj}#{w;_0|QXJfg*BqUx`Z}0t*(k;EZ}n~C z)OAWpUCAKYw+`~RFee)2PdZ>gimnH@>N^?Fg5(+%>va0|)Y+FbU=zd26GM&!4OkD4 zKpmVfM^Ck8s?06Mh3?uZj^wo(yWKAw5~BzHNIBm<{CURk>vhrwP0tp{mt<9Isv1d? zt-9ZHXj0_KmOaD7q9u)^#o(xB&|)Yo#;#%&Isq$dtcG@Zq^)nwF5}_TmS-UM5bO09 zu8)O()i_#4SG$FhH)2#JSJ)Ep*jaie88!_( zdDW!;{Fb@wsWGsooM@h7kEHK)JGBR-)qBuiOf<{O>88BZS9MS4-DH>hMQQzI*DQl&p`VM5Rplkz zV1FFBi`QJ`=c7!&g-G!pE7&>Xe%FTxmkROX?Coj@E!+*0R?k(QNB#A1XNi4o|D55C zg_*y2r;#6)P`@uhx;;vOu5Mil-UI0isoLW!+=^1j=_%rW_&4|&P1~c?0cl)djE@P6 zix1bFs8e(2hlU;Z^{y+=@QzN}{P95Z7ApqhnRhd{28@cd>DlP=DAMj#Dkob0n(xUL zEe?#EVR!Fws*L_0^85aFzM}l3Sj@cW}yrvK9_j|n?5q^a|v4<0D(PPh}KRzoESqtT2jp*9K zvE1AS|6BD;%4e53-}Y+zlm%M5@PWKF3GY83d~i&(SI_W)kv+ocbfz-fwO@44gsAX% zFZ@C0a8cMldO&2a$R1$>BBT4qZ|}BWiCnz>Qa3~EPK~}Osq9txTXZiRrSO5;fQX^B zBYTEd?jF{oZ*;F-0x>KmCQ2nsXF3~9bN1q^J2^5f1aoA01ybx@Ln()xw1B2krLe08 zPg{A^D{}eF*UOhSJus9CmS@ArmOs3Br|83c^$3fK^6DPhzh`v!KH)tEctys`AKpNW zjOb4{4=P4VD{sixK+OS-FEG6Lz%?kFRCGfBo;|~RMfMN(iiwMk!HINaxJuKjZ}<=j zDP=G*!Th#(iqE1Z%EEqE%C!HcGH|}h^AaaA+^SmCGi*SZrNJS+!{W1kV|3$t#6`vo zh^EYf1{eR_%i@@myozY=NyW25ZVhF#ma~1@=Wi(MAOy?O0Fsn4KhT-q6i>e_sb`g8 z1kfjZ#)kV8A3ngVS3>_DtaDyb;r$~9^d?_?aHGPv`5=%BHikX+l%bT6bFs)AQpVX9 zmL=+TNpZK8NAVyaf1plgx}j7XKD$RIC(vI$v}cxp6BZYd&<}Ga9={{P`-jJc4Zz`{ zg->J-7!niS6KHW^Lk9JZ?9n?%25tIXG1dP%cL>_~CXX59m&MU&*ub#JsIcx);W;P? z4RR@?9$SKdhwmV#8kHo7OB9zbO!67R{C6<}5s0@N?#&_uNQkgbnrfSOe?lxA^kZ?o4BT=o9|L*+;K delta 62674 zcmeFadz?+>`~Sc8p1qmnd>)bFgX^)24Ipz>aj>%y#7>vPCD9z}IQdnxKD5NqZ zsYHp=kxHe5QYoE{QuOY8{5@amzPIN6{`7r+KflN0_xsO&xaM_Vulu@B*L_@Tuf4qa zb?wFfN?Fn(wd}ERkF34%w#^TxE-#2KDO&x}O;z7Gy1c=@-xiF2>gkH(FaP7`sH4xO zr9> zP9w0$b)3_|KII&zKG+Vd1qicLI_s;d@_NugHM0+mTQQ2ZTLO(9FYEuoao zE2|lHDX5}za?-}<&M269z125VH}M5CvuDmK$SGKfUJ1K#In&0e?n^y4+_FQ9vZjJt zsf+5=gJ!C%wV?E|`BSIn;JYTcO{LTY6~EM*9&S?jSZ&9th&B^bu@{n?^z9(kD0-ld zDRUC>a>J6-j6NS!%SIBfT(79>I5dvBjhQupx*b55{X~#z7v<&5oRJSdCws<(0&p^& zhy9qMO9?2W{-7$*&Ei^mO&#rnDqu0F3{SJo%_$h0Jtccw&e$orvvSF>Wkb{48KCTU zfNDrNZ%$JE!m{M5)IZlVrF{cR&&$orNgFrDc^6&7V>hT$YgxO4j3G6vBSS>Psx_!| zN8#1MljxSQls@ci$H5at)tfjDEiU>UUHNn|SXfk}spHgyXiUaxW-+=9e#b4O~lI;IAf;$zh$G3ICFut=um7JQ1G`1e3HZA#8%IqHKRq*DzxcQ*O_ z05boJa%RlPpOKa`dzDvGrhegzT}|vg#HwDt#TDI*z8F+4jk=q;bUCO}3Ucx;Q;+Ro z32un~pFLX)ukp9Y;uMf+S#%*tQ;XVyOo_sx(+J4XQLrXBpqFv<|E?STl?d0k_0C#QhQ@Wc>f_Y$ad_kygIMT{qIJb27V06)jPB03i{yTAm9|eL4*vS1GO%UFVJ9~S@1gBw>*$N zbxvOP%&`-FmSM$D%bk%ull7n~eW1=xtV4g5G5WL_`FXhoIZk##_B4l2_Ea++2SiMt z%nD;yNWy}dbEf1>cbpfPiyC!_&fS8pQIk2rRBQ>T`0-;VX=8H+G1Sy0y(}gQ?1-+x z($eBtpa#pAxn{7WO)^*j4pPfz&S=Y$#tNHk=1B%M)L7Uv*|c;@{i4 zkcS$#4qvHJKXOjfoc$224bGa88DN7*l+*CGBvP}&NNOrfPNOHMUTxgja%vMr#jh}8LiFbrns@$c{x*Z=jJTMO1?}q zF435A`FXQu=1wX2&qh8?_O-Bo095mK(VPb0{h&tY!7Ci64Y&zB2fP+c)wCFH0!2U0 zbDY*hv_WqQHekdw6Bd~SzoKi}d;rQ{PlMV_Dq!CP{Bo|D9(%41=3CL^YfSsgU2Eb? z&>Ldc@jAyj6RZk0*R=SM2(>hE@R*S^VNwA*_HKABqT4_@cn<~C2Oj`c@N!TcQL?~P z_(iah^o7Q5GrHoxV))BG^+w}~x}b*1+hAoHQM5G4xGo=520Q6hwR8k}HSqq$CgHj0 za%DqMBcUvKn)F+Y-3Jt;c|9h(ASbPTTW8kH@fl?0JO{6etOgkYMTVkLi>bC3>vQ*)}ShzB7h+ z6~M71|8nNy&3Bmio}m00ztc2lIjDxT29C3$k_So18my02Pv7b7oJ=m%krhZ91;Nn^U=d`f4e3m?xrCR7(!9Lz>mXhZ{ zP00H#-UyzKJ`Jo34zidDYF;z~<=Aqd#{a*_kM1fgIzm9zI){Q)K)*-L`0oy?!wY7O zoxvP(vbP!^<;|r{eEvXJx|tJmrsj^H<9uiJ{$S~zs!0CIXIg&2OcsA<>o(J{so7KW zbH_2|b61-LLoKd(!mNEWL1tu8Z%}LBHBXu~?S{wA%Fw{_Kcj1n9J9-`@O7&fgIWv6 zgIeplTP%FqEJVz)6k^BJ?$%*ZLopK@7_)8ScT*b>wfYY0{XU&F34cm?Uy z1xKDU{79?2WGw#M?Z)+KdmX1O`Y(G7?g7)Kzl8s_wk>|y^w}Lmv_Q`Xn}gj!wY;vy z?_LbHiK3Ulrts@Pr7r{2ed$2|0i#nifskeCFgq!tJg2QHe`lu1|27Vj6s)w8llTy;de~OP64%~>;P+k zqd|?dAz&~vrn1L4jx#eSZ(7>8+!=L9FaGNHjQ?jGH2D=lYKYr=E@O)FFsKPJ)Z%v- zsv_@vU`E0oP&!AXv1wECC*;q_rWl6pho%A!s3H8Hi|>zzOo6?;g*93Z>qhRX_T~9g zCoBCxTb*=xIj26T8CwNZX(5ZB+SG*B8*`rtMzUnkj`F(d3*xpPAgA1m&E> zH9=zaxXaolZh$oU!Z>#syzFlP)s`zQUY0#$j@r8HOT#Y!)hUTO(y1XP+c%d1)|CG?n=S}R_- z^q8@|T-o#K7B&q(dEi7>)!+ZtbYm*I9GC*iq2+D71FEb~7+2pSowRCa3`pqd;ruEbr-0fSPrV`Kax=$a2^?)29C|2l0SorzxAU@ z-{2=>zp9I=5FHv!^wm^I`JVr?8K9r7R)siC-AqI^BCZBi^UEyO{?+K&lUUjLc<9Pt ze0IUiG|s#g(beMLelh7M*>s~o@dGU;E{VUv6DsFbQ29I|)XXm?P!&A#hrw0os>n2J z=(VcTw6GkGlpB8i%k*?po2WLZotpJ9X9~CY282RE>A87%x(;_bqT}bHCZML_a=28m zQBo)v(hEQpHXB~<%>k=}lOraby@V<(x|9g!cG2(Akny{{!|@rqI{5OOG1IcgPUe~` z6bz7ylS6@h8Bi6^0#$(mHxxAg9Z+sc+?tu0JuQ38lpN=eGA3O*_L_4wzug4MRZ)$&X;d{7tnfa(JTRnMDA?7{15?mbEq;Zamc+8?jlkL1t7SQ$ zTzzc~qnAOKM_$FFK}BkshTaPn%5YjXx7*q|PU6aDQUTXCbW8t~kkf$pOi(R4TFZ37 zGzN!S_5vu6r4lbs=;~5f8(jl0ao;v^zcv|Oo_ppr6aP!CP+`!ghsanpUs2a&ydPZ| zH#yzl8KAo2NlELn1{y}DWMTu6HPDQ9-h*lgA+XXV+Z$8G_Y;WePzKL=ES(?DgMKQ(72Hdbsn=Q< zyK>fkNJ}c9W7s+psD*!7mnZK0X0$S{Y7VL*P0~%pzPEPIqO0o?Thn%Qjey;)jR&@a z%6GHHaXI63>Ew*fS2G-Eb7%Z77pw2nxZhvU)@1OXEl=F%OKj1J^=y-E*{JrWVu@ST z{n6D0>=wc5&>obBo{yO>YmTmpa$J9;eEmTwUaMHfBTvVgmI=-GN;<_uk9etBakq2S z+$*T=rQaM2&Gd@1;^FV2-qEbA(1l)VJRaKR<;LUD@-%Ujmlw~BZXOp2UQ_6P;pi67|apG!@p_EAAW*E%Hh_$K4WQ zItDq&t}z|aEwI~iUM!UB6?cidYv3|WPFXScAX?j#78SkRu5tH##*^i`#6nkiC0*m; z=PP;5x@Cobs^m@TmgT16uX9KhR%6{kXtED`)9=mjQoG09S77?XM1uI!8Luj_cHo-P zUPkd=iurr5SJETye##^{H<5Fwo|k)mJT%BFK0ofRXC9tMOvp>` z9&?YN$ph4&M~o}F+@5iFBooGR)ao%bV=qtqh^9J(1OK(Ck?;$Cc4wfqN|YI0i*~M; zwxwe-0mgy~q%*2{xxM3|ZeB5eXL=?4UFW6tiAP^&x$WrX^~?-a@QTp~ux_8{<#o+; zHxg1)0w;t&ujNg;Aj@sdwqSZrwVH-z>bRwI%zenlh5hu3p$=tFcGD9X$!sodO;u>w zC1|Q|S?@&Gn7ar~eNo1nJ~}XD9GhVhih9NU;?Z2rN?pCQ?2Zuv7kJ0AGDBs&+zaE; zZtR7fyiNTwqjwSNu8{jFp&n!q@uv5TMN=8`@qoXHP;XNv9y^TII!Q7*%dyT$dbZebH2C8FgrMp)~JUr%d;GLh5MJ9Lh*WQ9YA` zUe9P~I)r-S#d&Dz3A(3S%-w?~#|7gfRKv?16pTy$7I`Iu;?d_D(F0!E&6(j}8hMij zXNB5%#e?IT9Q@txr4ETlzvU!1C~)VHvm9qg(C`Pnk|FW%H)naxhGs=aa`89bOB%s?H11w;wy9^5w`FiFw8_gI7LT@Q;y44mO<9@IB0|08(eO)6yk?hVMN_$| z?BS(7)-gihTrclJawIe~$U8kXaK+HfP@b1NJWg)K!{gD0Vr9U}yKc*lljhQDs^9lbQmoyUM0h&LGeePZGF&haLV$YL@UkBEozy^;}e z_pvnN%BZ^1J&vZCk|a&b*2rMl8X1p%+QM-zQMKGoEzQ7U!s700&@KqvO;?0pYw1n8 zFe_BiOC23|2QswPXY|B*vFP<^y#lA!Nay0#%j?%MLZD?p%_Gz&2<;(sVc_wGUP*R5 zbd{GnCLTV}+M6^c%dOTXG3S_NtTrWM;_h-d{xLGrO&<_*yP#=+Mm$X18_={E zguN{zWA1J=B~S8BFn|8CmSw%^eKI03mZo4N-$qDD%y4}jEsj>tn|?veZOstZ!cO&H z%t%JjkT6VGROxfA1|0| zrVomRioMjlxcfOA?zFA1i^rsq`jVJC9LgwT-F;?sPQV zRa8xV7u|r?RsL{~5mE=035IkNRx#Brn8WTcG@Apv)#GR?+4N9F7Mh`GA+;iu;}uV1 zcY~8XJAe0B`1>wiv*}sxQ0k}Zvl@1ag>LqWr^ns>aLOv=r#EK3#Lv`1&SF^gwVLVr zbyhR0=Vxdtz{I6@KRFv&3X9Ox5EJ(Vng%D^%SEy9H{HFX1zFKyYzkeyV+EPfl_x_V z5i;kNjPv;hjU<6Dqqn0C2~IZ02@MKD-5D$w1)B9%L~7nAFxwhxWy zqH_N93N(|ghYr$wVb{z@Q&Y^$+Jx5UWV)IJl?zSzDkB-iv{{3E1zLX-MVpVHneJi* zik`+e%Jeri4|Pl?bg~-JJEW#iLh{3u`yi=np~@$uejg%SG}0c(leP5ZNxWgWb^>qwcfF-Gu=x@a4m6?--$Lx ze6;>Z$C(=JoQnxfQ=#EMMtU2r&2lG=Vjw4ygm!zW*Ttjfj1G1N>U|9%=CvL46&U}Q zdYcAkx)TX8CN(_Ii-q@Ody}rua?6Y{-N70+C>HI8#zsRXHxfEI+}uyl)H$4x&eupP zz9H_8qSE3RKX~_EG-k3HO>POA`j6Av^)a{pIJ4F>7%t_MXtfH#nc`M2bz$6n4Nmr) zhv?y)#3Ib>pesuj#zPam)I}`r#IU{>1=lielksLfU}>TP!_hR0Sjw1F8__h%g3fkJ z&=^tbE2e4h31*Ek3*tI7r3-r5{T{6q8YhMUvCvd6_oleJnL(hn%xs_EqN%E7gO#mu zt~s6s$5MBK)yRu&pcqYcNb=L`uvDOFeZ++q#6mGI_2#&H-6XS7nB`+Xn##saTsnlj zlAGhvVUvU2>zwHxAk0e`_pO8H{o>X}92X zeIX}}HE1x)2AaxZWN~8uL~-7+9UZ-5FCMzsEAis)L(>wD)$V>AZ5;Mgl-+jVbh8)H zfq5}a&E;`-%#4J)l>bL)S`~uf9IaZQ10Al2P9`)|A@^BAZA=Y@bESo*WvsGyqIYl@ zye-a2w1mIwy;PsW@Jw%#pXH{_GSw)rV_tagEbpkF#dSjJinu%Tvc&M);>Fy}Xc`D+ z{C|$t&uDm}J8J~FOx17UwgrqSixSP;=8I2+MHky{Oz(=7@Udf&DXoV{sXF;&8EGIPA z%iG^EG|$_xKOULKcPK$b)2sAYoh}F-Bs3!k^)BRT*C2F3k&-F)1wv+tYRk&Tk$q%l zbQz)GWF7sQ(6qqr(yMt)BnbVB&}@a=%dat=&pxs(Bl%h~4{EIz-H*mx(1>GPj=D~T zXaUj8ta)@Ip#fgr+a0}=8AHsv zgH~fHrEX_?rH^ZK(7Iq5oG9EKXzGXH;>)eLJh6vsX^fxLRJ-Y3>c)8ZrRCnFjahE= zR+EhNl_Ps6G%X@-aOrY6S`Rcc0Cw6q3fLHPYusiEXE#_8a|fd-U9x}TY}Vd{7Br!q zZ>Ah2(4gs7GmF+HG_CcVE-3vsv~Fm@Z7(;z!Z?Du6mpqvH5Moi96P*{2jk)6E4*f# zv)uD;Hybd^aA7QZGg_vX_j$);0_q=j2bR0P&{RYAD-MKrn5~Q+$2)hT$&VOzjztfl zT@Z}_es`MYo9*RpH1!J_N3TO@UA(kznQs2dlU6iuD_X0-ijn4ij;2Cc@polJR$-_+ zMA7MlxV1#$jfBizr-ASl+F(-z)#`j#Vo_7vVl?#y#d8_?F`7ITY$a~vyAxB8rJT#N z;z#4*FYoq_KFW={)n2o$S2@MO_XGfyRhl~@BRCl3q-F$Us z_`CbOW=~|fZSPOa1l=VYkJcY!bGUd6ts5G{kKXzf&CDPb(t5qAGP8>TH_a>F5qBSk z>lmcg5$GE<*)v?(Gqb$hC%J=DoY?i)g}EVA0{0D^oJ_lV$J|C6j0GDWH>^gXwFq{Z z#e`&Kx^y?1c3T|tbw)CZ86{dEF4>rflACTq>tZq=84DlW=rwyP%dP!@X_xWjB&)G( z(aIfY8lkKxoHo8fJ0Go5;Pcj-%#K?z*d6Dg^&~DhiG-f_N}i6pEgv*j%jI>_49)Oz zcgNlP;W}f7Pm4I3Kg2U4C$&jv+7C?JzJJqNZ82AiCT=Mj=WJ_v{NJ<-A9kD(C*vMK z8-7wN`-mBwCYRA@LlSY}mml$t_Q-PGM@_et_qI%rx#Q3VViIh3?shbd*x*1As^jH8 z9}ms)il66lZfoM^HYdnv@?#8#U^WaOWX3GL5nT}Qn#(T`>Kzolg~3r}TO!}-8#0nn z+L~H%%)QDhelhMo1E-FozZqZEywpA1ao=vTU?p3gk&My@gNngcT7F03jIfl@mBG$g z@kyN#bP8BcXi5;Ou`}31M|F%4Fb9a^gg8{Z)iJV*mIoNwr*tw&B1|jYph938FUx`P@Ji{LA<-L*_E_uc~`U>|co~3NlBqq=< zG&5NkD&b$B^)~Fwa^ugLWej(-j9rJO(ZLMb7z_XSoHyy!tWc&`{Hks*mGC$0rM?!A zX76>JMPAyfju8`}ReL6`|k&6#bEq@yC>XiO?s6 z%n@wxs|knfA!H6&?O#hAqt*tYW0Y3ub(|FBJe$x&-7Iwv6PiFPf=kor`TOf$}cd^yXSl*4+f{L)5ahCq}ZSUxTEVsjf#0+P7bc@isV^Y=I@@R}XUHncwRNX6i zC+^O9$Bajl)oW<|u`^ozcg+lEXzYtcN28q^?2va5YK;{~0@l`7&@vKfLT7lz2lu-w?-fY%|(V*LcNW#H0JsxrE_b zKdHo+aS78k7L7{_E^V$Lq^!A3!tmaKX17CDx1^(HeK(hmozUbUD#%%N0h-1KThiPZ zU-*_BiMz>Pojf(wU592)XvYX?iwfEkZTO99 zq|3Wugbc4k(PA_WNV<1CU-2G`N1bo!Hg6L*0=f|z5=`Pd390jF-FhY}8ed>>LD}W_ z$sx-P?*(4*H*xoEI2|51a=a6BYn?EDVfbGkbC04aA13xYu~0Lw_}jR<`a3hwS!@q* ztLtCJtMnWv<~%gj&fFq+1g&e3`UJNR>V9u--d7I}Is?&6&N|5LN9&KJ>Ai+OBsO8S zcrscy;(}wpyBW>+`NWcpWE2euTuB$S`7x19mq%;S)CIv8nBl`edd>co<+k|A{Zw2Qn=-)6d@pG_;wda@L4uqmJ6{Uw@;WLk8IMO*%&Q@w5>T|r3gF}2)b zH8YjZ`qjjdhA$Pzc_lw^WP?+SDT6ltgr?C;-?M_X{LR$M+|}Zi&5yye4L`-*KWz-& zX5H)fd!qi*=Avnw&{uq^@*rAYw5q{`{SECRG!B{c@dbYvjT@3^tI+xoS4F3H_ZKv+ zi9uc6u78@bQ7MSK7EQUBk@7a0`UU5cuFhZP;A%=3h;}Y z;0FD9XiCpItgkoGG`NkMpF()GNugjxBp14JIT~v;ljJa=j#x#58{MZzLcuq3 z!FNvXd^8P)D#5pv)uMj0WNJ5*2U;>=+j;5VW+ayh1-ClPPBjC~tOV-kb!fVd3-0HJ zTa@)Dxg@`o$Lh?i(bBvYO}=BP=P>^PntWuooCa;)QV**QECScor(g}4$lPkFcDJ-s;FS1M%SZ_4kDt- zRYJ~CV>6nd#tJsmW6>RG1C33LM*$}pn>7SA=mQ&f2G0iCsmaC4GiaLdCazrd(%JyD z0Vm_up=op(%P>z8YD@&T3&Ndh_(!YJ@}-vLQh5yLH8j~!X{a#vdBFy4( zMdioPyfY($!l{~jA8!)s6lAQds_^Kd-7U}tqiHO%udte}MNIv2Ywxi$C zRL$~1CLPWQ1&0vhw_G&EmD3%I=zcV_w3V-)m}YoB+8GU=?fVKst*~c0Q`wDZ>MSb6 z!uTm#YcK7R%y7*HezSUvkKPT;auM97aj!(P)}(#Z#?eQV`~_NnFRgo~JB0@e)5+6} zn?KRiE^14fUX2p%QY&vjGZQKO`;26i*vVvb&kO~Z^d^(H(X@yfZQxmeN`o4ZdEYL~EgPoQaEGI?e3kfv5gv#M-H(?Spo$><+w zU4r#2-XzggCwQ<5#f&TslO1Swu|)d;P3>cOSKC4VFdq1B*c!TC`m&5<9vIco<j&E7Xc|TIJu|Wd?eAJP<2ld{ zChj(lmuP>-?L#xGmkygXd6d*VF)@^o{APC0WoR1Hrq%DG{oTQ}T9Tii*MKkN37J(= zt$G+uIhYoIjTTSj5boW|-_VTF?6)f2*`J~PJ*e98)M>Xw4We_<;@+{@9g_*@G!j%L z+K5L``Mz&t$7BL0^LJlIGi%rM;*8`rrXuEkc7L?LD}N(e+u)wj8-&gYs;kSHKhfk| zE>igVmB&}*KhydpXeUdGzJ}H%SkbDsGfB)H>%M4a;OZ7&A)4k~aBJLs3hhEP^QCPi z9%@yu2I-=CXdKpgf^18Be^M)abPPsIJMru`ZF$snFdE;Q%*Y7E{ATH)tnh)DKS@|O z!`~nrnBgBy51m_x`{cslBa9-wj2d8wFdY_rgb{=xtDitQGZ7b=hm=PaAo>W)AU7jQ ze~Z;`1@$R~mjnj4L57hPiskc9sQ5dAScA&=POA$Qzsl;ukiV~WNYD8@&fQXx)rdZ; zgTDsVo^^8 zbzxa#4_z2a_ER4bMWq}Cl+5uE~9YK9S<5m&s_s%v#r~@Kjpurm5^Q00ua{Ahl@5qw0*{o_C-oL~+92^BTb#+OE=p8~H6O|>}9 z+6l$au=+_XgeXVEl{P}C;5`0l=3fIU;dP)2SZMVdL4E!kD&1o2WO_4ylzy4jJ&}A0 z70}YN(nhSZc$YO0Dx=j_7b>{M;#!OMh~y(wLHApJz2!@z8up;!djtUyk6J^af?F*< zW^tQHK0*bzTU{9TSH)PO#O$7tylnaZf|D>a zhH}7bBv6L?Z9<`fZ&+QZ__wSsRPb%9mqyvWV|ii7UzK6o`<_&y-?!014e`U4|Jd^X z4b{#su@fG%>Atb}txYe~IQiM?U|~@3FP12ca@glTRxgd> z%US+^B6C+uZ8Z$kV*T(^c)Cqc8bzI9d7(0{Z?S>JhBp46Q2Cy1<4>Y~5vrEzm!C3d z0V?B`7F&V*b6WF9cJ06_V0X)(FZ5TP8_F+~qb8tgk-7}jN2uUztN#;LApTk#FI4f@ zfue4({Qm+?PcEZ`%@HT5F)F!&h>ZMV3cUk_fuw8{kDB^BV zaceBzBZbdDp$gbwcKRU*}F2$k-z?)Y8Zz#J1VY@F92tGm;@Q&4m>Y0x%{|Tsyd|~x3L4AbE@Tk>G zqwK%2_TSogq3pj?k0|hijSx!z+3G@N@H?n6Tb@WoRkT>yVpWiTP7SNqvU(j*b64*_ zQMxlhHSjEpjddj=T2(ScT2w}Qv5G#WQ5k1izBG#OXnCQAQddy< z6m}<|0{VdbbNX3*ASi>u7KefwOM1hLG8}1f6sV6-_SvAQar}{euGOc2N|$GGDu{id zGmU^Ma2d!yXAXblk$F=71A`jF3+G$A>p-Qy(b@|Yzu4+R1()zg70|0|^fAc22n7_e z%ti>6!E&pYM%mpedw*X%lv1d2??RR38qwfdDHavH*XsWbWwM?>N?&a4g{sCzP>y`a z#&5ClU}4~>tv2E@8zI!BdD`lwQ5imC?Vq*rLIq#okK*@OUZ@J~wR&lk-OEW#o>~Mx z#y~coS;NvO!!Il^lzs%%82r}qLKSq}>O$FlXZe3w{NCaZpguon@>C*_r1A0}s0^a; z%D4N4gLugpJFpQ&0;-J1)gEk z38mM!dTCSz8o>)2oA|;YP#r>V1yjNfHla`}b2qF1|A7^?cwb}-D2?jdp_Uh_#=}8X z@KTE-Z2Ui=M*A3>F2~xHM&&aezLvJrD+$P^h(B`i)u1xC!RiYw-e_?#s0uBy`Z9~l zE$@RWU?_Ho8cCXd%2ZQ;)iGVVE2-K%EDx)oy7s~EYQ2bU zblH`FD)=iOxgu zm&Kd( zgc81O4GvfXp$dKnRL{O=_4jT3KcRa36C3~EQ2Blu)x-<}f1@Hkvju)>Gb)X$$WeIN zeFdsz-&(u>H>d`mD6|Pr`~#{-f3kdORKY)6UMT$+P#OLP22o0^52y+!SzV|Kmjz{C z=n_x{<-nR?eQR(gC|5SKm=4OWHK>nJ=f!iaE>y-@R{w9PeB#*guh8kvU)AJ%i@iV@ z^ak}2sv;MGYRN!Q_Jcv$4FUBjjjG6SYc~Rvo^9<)V{o@?jExY=aJ<$3303e!;#HB! zpeis06hGDK`4*>HoDRxVXBKP+SC|KEgZ@nH;9 z<4>)jP+jm9r~;3Ha^VS3)9pu4AEEePtuB=P?-u_ARe`@i?I6j83~d!uUPIiX3@TV% zSQovC)rE?0YBAMfGaLU;DEsEbt0HOEUTZ1Pe>XJdA3LXN= zeyGJ^U_Erb6gjx6pG}|!#7&@Dy2RpgP#>W(xYg=H6>tZr3a2J*0N?lixRL z2bF&6dq?94eGjSQ&8hDlafAlPsqY<6eeZbcdq+-|I$WOm-m&!ejao6KYneFpy`#Q| zlqXJo?|ABa$5Y=snz?Z5dq)o2I!^w#?;D8@;F*oGOV_tQr@nVQ^}XZ&{(Hys|3CWP z@rDlhA-_X@_$Ghr>~Np(S7ARqCp_4nI4xY!&zS>rEbKolruKB0nsZ^k4f|u}!t4?A zyqFVV|GleVX3v1>R0#90u)nAfrfC7pF)=@c{d0?8-W9W|2YAh@B#meD^wt^|K-Ju7imBkBb;O2cq8f5M}+`>micoLhKXa`gLxA*e+t;4G`u1 zy&@)F0g<)-Sm=aYV$X#Sr!UUqq~!4>96q zi28o<%@94WhNyT8L_>erEf7D8*eT*n-(3Q+{u+q9B@m7M$3+ai7NXu#h$epSQi$a1 zAoht!_3JEy*e+t;GKl8>UJ(9dMC}_O4vA>#r!I%sBVzG#h;;v;h}jDu zI^7D<#$R|VMAL;3$3(RAJKP5Gu838)LB#wL5epVU^z|V+__zBI88<@wAtKZ7wF2UZ zh)pXXI{CkdSaB1?h}$9Je(~)PJr_e%yaS@MKkN>OpGE8x(baeFgjjzwMBbec-TlW! z47~-S-b#q`{oIuh$x9&iiRk6mSp~6O#Jp7yef+&5CN2$E@>|>$?j7pu&$$bt_A)FE z-G#-4e(K#2dqgb08{#7WporNXM5omd7yAoWLo{6uaZJP@zrz}ccSWpP12M!e5wYM_ zh`wtfhWWRzg~+%K;tvtS{a*J#91*eU9*7bCFCtd>5F^$>jPi@uLG)Y!QSn}gY=79j z5I>99DPpYe-UqS%c8I+DAaeZ2MGU_ud^OvyNG$~Atw8K zMNC`?kyZ?m=g%pIsJ#l}kcfOgbpym65sNoKO!p6pn0*&Sr;QK={=$tAP49*{CSsP~ z;Q@$uMXY)N;&Q)4#DdijeK$eO@o(P*k+BBi4-r@Ry&i-(B4X2n5cB+BM66f~F=8`B zp%TOii2gUH(gah?CTh@tmF)O#4>20!;6*2LCh_pu`7W;D^g{ZwA;*f}2{M4-wdqgbW3bE8bC}MUo zM5o6fJb&S15KT8g920S?-(efXyCPO?gYf+l5eqg#^xY0|yMOz3h>Qmy{t$7e-|KOR zBO*3E4zbGrMZ}6t5F?&|xZ5v&0;1=G5EXYotnr8KfcRO&P7(L`?voJfH$&t-330Fg zxQL+-LDbs`alfCt6C!yF#6A(lew|$q+eOUV1+mfJD`Miq5NS_^-wa)~E%bDFc!>Es zVs|(n2kzS)9$WD+zptz6@E@*&wYTklKHN3r9qttIuYEQ=F4}{qjVkyT?G5K|>;H0i zU=ZWx<;7`y1LPNY-=CYuJ_^jbLC{i2Kc9~^lnMVFR7 zZMZhbF7f{;p1qBlY!0h&PX>Rxg%w{e@qeyoPuw>0_3$NSf`a8f9!DBFZVCcROt_I+sz+`A4_r*|GV+3ZGArve;N)wxGnuicvPrj z;{W2^_6W~YskL$c^+;00KU@<2EE?HP-T!V-#l(M8`{6UxV_Wv?;irPiy7%2}>Q!!A z)o;URhTI6hl;^kPMOC+TIv&mpyNUmww7)<9yYTRakAE6G6jt;M$g@~Q>X=CdX>+pk zrZ|DS)Rix*#T66($7snH-1t>Z>ISae_Vf4Q3ZdwG$M_wK>Tze%|8(k?A=8qgKf^<# zeHj?#gXYQ5Z}3+*IohBs|9P5H-xHPPky?R~tXeR5{C90v zwdMbb3pyaQExAI{u}8{1ZGSP<^g+MIi%I95;r#iR`KWL7vowuQ-Eh*Uk3apzr0Rti zSQ>B|1`+&#pp@x3mea4&F%PTnMLhdKj>U2tEU>ogQyHPXwQf;pAprhAfvc zpFt+A`JuvXmefzBKmB?&JIYvLWeUq?0IiLz-Iywg|Hvv?JdJ6en%T2U))!`0WZj$Bn zkf0uA*GIqGQ+|5#@In!Mrt0}-WvIs*FA~Ei-*PF0#|I2=n6;c9Z=P2UlDp23ty z^qFbxP9v;F=`+i6dQLa-gIE1VP~{e$&YuTVEk2h+D#(iBEV7(_L@2{Eki-+Fb1hdN zZlpSz&lQ$yKzN+xuC!c3xE#yr$B4?W5i+rC@O&wcHCpma$f?#a;hD4G^sKBtMb@q{ z;VQO*^DTEaTu(c=uZB}}6J(x!^zmA2*A%X=&F?z>@J_W!MfyQ%KwWPQn-SJ?(E8k9 zGh|VB*21yAI18O)7JL?2JI#>cmb=N?X@-ojoPJ8Fa$D;8${b7HY{^z|lPq_O z<=76Ksg_$}IbLAn%(R?-dZ`w(F*tK9=UJ{T+*Ovl)uwF+cP*UCcW$#}d%`zZL*H`z ztkb#Caw{yC0q0rnb~qKx8+e@G3F~vGwL6#aGDIVOrR6dS&q6eiSLuhBas%)3(SN59 zd=kF`Wjk}OKxC+IW>pBU_;ME5Lhi8{#^D|&QUiIN<<2Agy)x#bUyCZ(8L4H*!hM$O zqV_j}Y(V7wmh4LSGsZ$AaJ}Wa5uT$O@X^mnm0@>eCw6Co8!Xp@@QZeE>F1`hJ0IC& zxd$xQ6K=Zllm9naQV-wip>2I0w45Hq)sx|x1)D9`hp=8@pwB~=yMS;l%jtKm{L_27 zf*)=I&ZE{&&+%SPgPVd|;et0{Xf>*43)XL5RqOspb<1tDoEE5>mfLQ*0dTb~_qgRQ zhC9u2Pgrgs+%`L#c35tZ+P~Y9Pg-)Y3>jRSRy*PNrx%htPgw40Yc~{bhaH5wEjJAA z0Yp7#SRX858t907L-PE&1<I)Y|En zyvlGCayy)6#!HqPO?Z{Hd)ac?aH}o%ia7QE7~}=Ja_zH*W8rF9?p4c;gFB9Bw!CJ! z9Kt^$`n+zr@q~X07=F@Xxe4g|EcXVShRQ^wP;+0Ow?GARk>hqCy#t}vO+xgdgE**N zPuyfA@j3?Wdg7)aiAUbwvs@nBTXrnGZ@H;(de;VnyU_W-lKGHLAT_!VS#BEP+He}( zA6ibk-)WZn$Z|8_%Hl1J_``7ga|)0b8Cwi8=TmDplkiJ+yy@A7;P+Kpjr4nF4ZP2- zp%$a^mea!zYTe~X;)jY~!chljHliOhYA}|-@z0rq>_#-mzP4%S5?+hwbIfvD+?Htm zsSm%gtp0J$8l9p)oYvLE*MTGCLT;kW?^Wn4{ z2mPP;DfrcptjEFU2avp-Ymj!9`_XdO!s%@r>i?hMXhm2X9K zI`$Erh;`b%6IqGqlzSJV-_0#R79#qs-8kx@UnTZIbn0!6oP(s5VY;;-pdajAiOfR^ zks@R+q96LrL9|+FA<`nF1wE~h^(dRy7~NE;*zi6iGBdM(Cxkw(OLwY_k4JkloA`el(!^k6u z4(x*wEmvBeD$%gYhz{-D_3onc5uMh1A-$2lNI#@MqMvbvs8krag7CG-LSzwgBcdNe zU5V&quamqE=@GCDqMw4^kE};FAon0QBl<1r^@x7W+r0;W^!wm;$lbVk7{gE}c%9gF zLLY;SMRYKqfaD@NkWWGK5FNzx{Sogb)vb9sL7lhfB3B|hXBYZQ-%YCC`8tBvBRWwp zKy-?}30aIRL6#yqMK4D>ARUohnm-xIL#Fy4lTB!*e}aMvo5D0hS|RC3TSRNEmQ1Z) zAA_GD+UkbTuA#^<)NL@|TMH(U%k*|pR z0r?S`O@X>#xC*%%xdzz<|1`22c^-KI(Zzx;4swat1;H#t*8tln<55KWcx$+GoAc)! zBn{EwzdE7=|3LbF5HbYOPUMle9ejHvhGc~O@$VF0(OiLZoIMyeoH5uN>Y z)~|u+e4m2oOkc-u_yI$&0l|jInaEj4W27ANHCaBu(AtD-Mjk@8Adezjk;jm2$ads$ zWC!vj@-(7T|1*dl{5g)CPq-&?E|Q6KL^>hc^$Lc^G0;)}NklIq_zw9V`2i_rXl+0? zBAbv0k4UgRa@W#kp)HRJ&D4)Pvy2>A&482JqO99e^` zMeadvNA!M{afse(0={~{P z1ezc%5nZ5sg?x(Kh3NMjy718Na(g1ZkqeN4$Z9gX7txP<^@Cx(w(@%HcYyjuvMx?8 zL)Xuw??UcI?m^Ze_ab$O8>&HY2`$${7IEY}q%+bHX^XT+Vn}PGDbfOIiRj&kzv3nR ze*YunGvo{8OXLW06nO_Zh`fiqkL*YGA}=9&*~GI9gs1c#j_tVQ31lns45F8Ne2pAK zZpAB~fuAE^AbO;52r?L1Ox(@LEy!BZ=`{Qojd={wyL9RxPZQ_E>m``)flWbObG(Aw zPF&%g{L%G6Yora*7SXjqdnAVF#c@ZFH6+k4^PWWR#{+s@Q3lun(aQkzmdL}j>J#J; z@(Q9?l|DyBmy*vCWF-|iPPz?TZedj{Jz|?uYJnln_oK(?j5g z$h*iv$wnFMEnZycBBUR-%7ew$Wi1t!Z#H9?@OHd_yoh{bB7&C=sn+))y7sF9Uz^0ssN@nvSJS#ueihNxv95-7_4_>) z+JWd|R&QE8Kqbx~EH9|?dfV#Xm7)J%r*=0$>iV!E@-zkQM*cQ3?$d>)3jYv104k$< zC{Qie%}sU7xzZ_QEm9v*!HInJ&a`L9H=(O>_2oWANZuub)w{@n&-TMf{>z^xr55TE zN|#cTiPU*cM=M>Q=z2xhE#=7IFGM3v$0}W;{DS<9{D8^3SB&RrQWYWpPscUVkOk?e!D%OVB@p4XFB` z;2+5E2(L@jKFC|>pn zJH;zb`pI$%QB+XEND(qjN94MM`{Xh$+h2n^r)hy|fN1|X27ZdD$F+}$*Pf#NWEZU; z3@ZJlpsvk_A+j5S6b|Cg#fXN~0I)xDA<_@&iS$4+k?u%Wq%(3J5=XKSO+oD?DqMCQ zkxq!>`ch~Yi`~FPSd}>+9V`sKB|S{xy&-xb7a)BQaVq2@L?~T-HV}D@40Ls+mZ@T@ z^iX6tvKG-PwK4YB5MG1ajp*b)5?qChLFBY@Ca# zJyuC363#(ZVCo~fK2(zN{?4RG%7_U>y@0AQAS|6^3UOayuDBV5rz6u4-BCCb(G18( zpNixmy2DTa$`fkQEI&OGsUN!9zbF!Ek}jqQDMZw+dEk{uqHVJX&qcJo%>ifo#gRzM z?pF}hnxN)gWlc0aHz5m<`EWW@s7==rE4zQ>ygAfC|$z^@Jg#He2pl-Mb=imFwVa{8acD-O$60Rs+C-Lt-p^Nr2S`~FU2fT zvPw&ov;_VZziOFCN@$s%S|)O4`brpGva39me;c|+l5$kPB}R@$#I114{dr{~buUte zcOpSOFuQ}W>T^3NPif~(xTFMKP0^r~OP)pd!O|7W@k`1?np{*9`f5bkUW6#C#2mN_ zUgLZeqFSj6az(;k3w@%K)DqdQ_Or`IQd-|n@LuFTL>GjTV!~6X@di*1eirV?VFG-v z-L-8)*~lH?lp6H&=-!tn6&>pOVK_80y-kbs7VU8QE#)G0Ld*RVlOlEMt|F5P*gbXh z(r-eA-`x}rU6tMzyS7fTe+av}x-3#g{mw0ubjPw~^JLIE$mmtSYI!pH#BUC?(^0t^ zc9nK)er)dxZ92#!x6!r0Z*Rd}ib0 zuf2&us}^lqwa9Q%{f|{dhX0%F^kRTY*!7s7*5j{r<466S(Ez_?1q{Yu;9_vg?dMPY zuI`4GG`cM%wPuO%$5x2+<%zj1*oCh0UzWLUX4b+yJbQTOeg}tF#vJ2x>{t7LVbK0L z3~FQW*T*fM-?}>|2?NzUy|wcJF_noafA);WjyE}T0x_*yv~Ja+6~_#}U&To6x@GB% z)3C@N{_?QjKe+G+7I?KqyO`6^pI?zmoa^5S)E$AH8vj<0dt0BIQDI*=q@`G0lJCEU zK|9R`)$*!^$A7u;?s7i|8D-Ex!3}3t)}o~Yau1H$ydxcd(8V#LcKP)xk@Q27s{YO0 zsn;GH|4wg`wr|l!Nq;2f3}T+!Jo1`dZ~cX*+EKYyjGh|)WRlj^9lR`r$erYk^W=ds#Aw7+zTrx@-;#4)P=%=%p1aIH zRw>e^?g4EXfE$;-!V9vlu)d1^?X5mSzsOF}E(@A1>!(@3g5C*~|av@=pO z8YA4oUz!n&%cWI;uKq@#?uDeRNXpM{DL49^bzdI~nw3GZ&ZU0#+t}s$^{xRf^RpiW zuJ_Zbk?J;5RV7uGH=EYaJ8MWaTV6Wd>t|yS+V1af5vgD95D;_tsFQtJ#7F2c0FOnX0Cp@lq9?DH1nI^jLZ{x{b| zYKKdb{YR@u9;IXC-nx_Ut(n)8QNa&KU5_ z>~J8wzk+{h4o&^2g1;n%rY`h%o=)sQe^hOTqAknhpD6Nh?MU0YOX*z=wMW-~GPiQ< z!S9)+W+*y$_$}*1N_em}QyB%ChDG1gsMS)|1l1~|d(PT1Nh!m_q1H@LdfQp)&p$0P zA+*vjIgN5R`1R^W>a-1>{lq-{&h#R`bL-}RH)1U=Qt?ODFRFatKpDpKG8oNV|Dif~ zq^^HmUGiz-KVBEN|9f4Q`uV4`YTA}Q=D%|~mOcFP^{B2HmOQnc{wWR}T92$o`WH4N zW|F^H1{eBYNqfNGUCP|1n(tRWgSaLBewkQuqCY~U)voZDN;8>-57hNvI3sdF_~7Y& zjrx(+;iISfuQ!R*@DHCIiPZg-k)(-NxoeO2D|b4ULE~eZ&25~rerRE&roW_qB*Ng? z-Hhogy0IT(O8I;0N3P~E{5}o-F14#ay;G!CgcY)%zouiPMuQCbJn__O=A>V)zx{(E z-+Gq`venNX&EnJieX^M5htwL|wk!SL8lzdCcz(;X>D8I^gqHSO2CjU5!Z!a04SQAy ziZku3ySAR$;;xwg%7k|x=yvnp2G&>BtJnMWTax=je*H$kZhs!RpZ+e1H6fZ^HM>Gl zTB}`uC;q0MKYDkhww+FOf5uR|*Yr+XE0j!ImPLECr89HN`m5xbw;C}&y7|-3B=i3M zjX>Q?S+SL7bMD5sU#Y&UR*x9j|6`waJIgH0rynVkdf&j; zm;dc`+exN(tndAY&W@b+Z&l#eHvc$C?L06mpnpM=NLv=Z`At}fem&jal^Us))Ygpe zlt^pG%!k_T4l)(0;`-iO|2q8PrH2RMdZq&BFz0`+1Hst{$F}zCHN`s}{ruEYnYUw> zsI9Q5+tJgmdvY>aaynDT5A&zDVz6v)8ab`*@78K`ud(GDEgbY7RyuBy zeRaQKY9yszTc-vaxb~-y|J?Ur)3y~?V8VGq^D8i^!>>2UPnN}4YKLn4{CyWUsXHn1 zcPmUKts{W+w3Ah?t;ONp)W~eNUNf^E{110E^A|UxrGdj!l3F{#l2FI?M(w))XXj=3 zm7C*=-ejy6IOBIccWlY@52zQXJ~eWbe_})=C8>>bmEUqcE6$AOku&(A)lyQ0D){rS zhI+a=OI7XW=Ct?1>DB*SRZ_WjqGhd}X8uPQw>$S7vqH34Hg@jrRjWB}r@?4->jCOm z^;Kqe_TJY0+`xUD$=bKN#7{eiawhoapTqiWy0b>&k^cM@uT{Qk!3BPm(EfA$_2)zy zn1wKC&D5%ZNxhIWTc?&<80= z?TxQ%*4OfT6o=u-qSux*oBZW#XAKR9UV{lbJXn|$TYx!CBo;Y45w32*L=2XxHVHdB zQ>?k2b@t@&Z1p$Bs4jF7_6C zL5;nA&zYHJ#TU%``~2r}ch1b5Idl4)xk9VKleId87FJ`UKCMrBSIn`mAh_@ZZRiR7 zsehFWv+h{rfms!j(yZhaW<{c?&-9@}o|+e~(bV_EHYz}iCHmaPOeNbpfKjw~=?PtO z)I>$RwB~SzL*VV0UieBaSm*i9wSU=}dWlUHeqt>|TpT`W?Y-I@$-8_nT0}I1GZso^ zN2xG9y^4o&Ws1@K^LQ&uf$0$PZ@sl3Ofk$GKUJa=O)PK%Q5U-9jYZ0?hLtrW6O$?M z+5tb?M5Y{^Mg(-5Xqzu2c5e*|@_{dPsRm8VfL%(V5kB}CuZj5C*u0k1Vx{KkulW>N zcL)99o>xczj9PRY5QhG4a&Lm%cQ0`HE8PJQ9JPXt%F?c6I0nupt%fd$f=%#Wk}27Q z?RpHW2bVF<9XE$MAL=3PlB>to8JY7i(R-h(Ud&c*_;*Z`P$N zcYv<+=V_cT6kiUQsCYrH)j;(nF|KS_QMg;H#VHt7`F{)PsV^9DHI=K5sOSaYI9Tf# z+2~=jRdvq-4hv%SIFF*M1HJvydDg_kk-q0gcM7YC{ZdS>hL-$gc->6y_~k`y zzggV967v+3(HjX@5nbi1y*X9korhWgV*`JPofYWh`G2(iFzguHMzs++u0>&=eSu5pyY7z=T_l{M|C1FASvMjZ?vOSb-a8&B8k;*m)8`Rz~I)fwF0&tJ1P z9%(6+=+a2Xi!Tce(_tWHAjrgpx-``v8m1&3rrw3fU6 zN{9F%x;mgM5R}7M^Dy#fH}P|hj=hlbeLql8eJGI2KTz|tS}}^N5A731bL(TD$G4Mo z=)Ame>Bp|Wux^0rU`|;~#{gjZ3jh_s2n8zt*wOw-wao$mOEpAmp2 z_0OWki;3V&B^qGt>PV_W^~AORY2*)^bn72j#%@o+06?tN2M^ z@xZ~;1J3Bx_LR~q4vJTcgQB^@OP<(mfv&xJ1rNOfB!wl>30NtWlFW*-nY7}Pq>GHP%7Q0{55At1p8}K z5?wF9k26gLfXbQtNIIA>{j*RqHo-`Lbdk!%y>Py+rKbIPAAr!j96D^H7EK_t*>E$X zr3|IA+fuB-gd7Z-anv90N`0F`^qi?n4Frm5O|fjEGflC7A~HrKm_ zl`u5LFdWU!UYZ)yYEW^JV}`;pp~j2sn`1e5dP|En_2uG}EhX~AV;(P&J+i7sA9Oi@MbW_+CZ#KHmB=L@fU_(M9D1#h9|meRp?_2t+d&cuB2K>TpD*qNmY6J>;=Pu z@%9BRSe=cc$d=F&Zvnw1e&BXH!p6Gaa6kx8$j2jZf7udWDLUh5+jZB`0=m>dp0x;h zc0s&xvL!+gBRy>i0!tzpSD_EP7(eyVmG$z94;6icrrp<{1_WzfId8m342zBT*54dJ zFN3unAhl;3kZsyP$w|>0Cy(&gyKyFglm75Ya>d-I2d!v@ElEUIPLL0Y={rz2fBFJs zm^r}=y2a8}0O&SQOlv%1sc36Zu?sckhxjqj=>3ai{N1nZD|w$@pZBwsgwd_maEB#= zx*l`{c;dlx${(FdVvhETA;unT|GrF_+RxPh*gplTI*MVO=tCQ=MA4Pl40a$=Ts?w% zm5olYLqechTg?q9@(!2vuLD^IIb$J>ylEAeFMaXikG0`;I{!K_ZE#j_IFQs9`i75m zoB?6Z+%tr9)s*L@6j;I#xnYhy?XI+}+-##HuP^M;N-FgO=zjnJoS=Pwd~oGGMH1Hu z0H9FK;|^NNp{4QMNv&GEyFAv?@(o3xtHC=)rqp+ijGVCd>NO6>*+)m$4m2MCx>1yd zhcOj!2tDJTY&(22qF2{)7PyQU%KSk@9-M}kHb~ip><<_H%VFd(8KRvnl+5F4CG3`q z&XuOL2b+p`+!;Ubq~wkq4-BVzouTmG4yUR=!Yy?r_n+`H1`GW$hr!g~!q9NC82LVD zNMyF&Um|uOp4N=jJZNWo&4{lweB$vjZRjM;1ADZQ0y|)3yQpUe=%*_qDX{}~@7_r1 z1eEAFqSXznLAyZ_Xpsn4qoKK{=dNOlq3#okzUP>hmAMaixP!vv{bli$^9-@aSl0JUJx z>Nvsc6e4usG(7ZYCeXeRq2UF`C{0x{R4Zx7S!jF_ONsc`+faX!l)fteacooP=)p}6 zS$?GyKgtZz^5IhpH$!20avlvL=pp7bYebXV6sbpsw{uFH@W*=?TsAMha8bAdi-mnk zbQk-!3GKI8rt_vFT|oZNXRSzvu40v9S>nxw;=3aI|8H2AS};`_xc|m@1-J0=S5f-5 zn^pi5*60Q|DVFAU!wR=dll^uUFPAqhB=j0c&NdvHmuT$(&8Y^Qmvq2z24l2c$MEn` zIuVDnj`g%UiWWPxxD+W8-lk09)2g=z3c;q4e|N~*R2tqFW(?VcZ4}iV!s$#qx?|bl zl+j%aD6=L(YVSPoVcGM@+%qgP@!a847zl1IxZNs->W4v?)Uk=-)l8YjN?Jbsfs^CO z(Ewy+34Ar00zgwkB$!!iehAmCi7efaGlpV|wjwpRic3n~Gmpe@>#y z=xR8OSI%s7|1o`cQsES9y>26Zal|j~WZwg0KgKKP&^!w~eNefP0}_fC@C$Em4&ghy zh#*8m3PD$-qQw+Bq^x~`z9$FY3}DP5>5a2DM*k7fjUG^wRmr_41{^_6dtw`F&{}?L zLWg=nFdmnf)eA(QO#N^u5C77QA6^vohung?bbTF?Fmb)0FA`{OFRZy#q9lQv?b8Ks z@|Ixr&Cwp_^QB_|P=gqn0FLwa-_}kKyF0!$PCD67V8qpA?Z|!|csGIOt-%zxdSZ%D zO70D+m6|7aBL-3)XE_UnoV?cO3 z!6Ou)9XtZx-ePsvu2rJd$0u(&j^Hy4*o*RH9}QA^kZphPOL?k~hvE5hDM1$>m58{# zGAvAh3++;urt}ARApOqZqL+)gd;z`1SVyS}5806dqA^wi3=&V>d#cX=p0@m`-Dma> z7NIz$M&mHqmfWVHkFWvWGRNYGyo!gFkQH@E=~NP%aIu5M^GMQdA^ED4g$Xy zSS>x-uwEJW|8wigX${`Km<)pl55nNJs1F{7wt(Z4fMF*-o%$sTiYyB*l9B;nng9SJ z09LtoOFuI%0#`8111&`hQoM21dR4Igagy~pOUoX5gs%GQt0~_v+8jf`I!VcfXVZVX zwWHW-VCw@mfD~sjuKQfzk~?3{q=HZfX7Q2A!4!mHoiP8oHnu<5gyKs@Szcc*2PV+f z`DoH$?0-wzH5ewg3l;tq^FCWI1#9uk!QERI+Gne%2`&^tn1hY5J0I3l=U=tT1sZLT z`}k}w#{V2z3D5^QnK$4I7cYruQ?K1Pr!c_bbIG#qcH z1No%)Ts5^si2@gkJ;hAW?lARMJvPghLgi=7Oi9w1i@>>T(#De8C=lj%0C3`N)$<=` zT=HM~lSGo!bH_V1UbeX*BePE49GSre<5@fm7-g{IAO)D3lh9<9-9s zQVk={(hYOCJ#p_+*}}Nbr+MgV$OHiMqtAxLv#yo0>+hgDgq&sbnQDg{{by%XO~3e!PrOIIY8VJ9OXMx#%%#R*!r8Px z4%nBWcX3*k{7rYG&Kr~vt5kS9Qs)uKI~=27BeZ}l2sb)30>pGrmkN61ny_P)Yqa3R zD=X;gsBNZCBcS8%?vV;QYE8(QojO-ky}+sUVf9sp0^>iMQkhJWK^{r+)OdlXK(j$$Z|+Q#%)(BaVCpP+=z zQkA)nA^~A4x*ui5fbiSbxK)$ohq}ngn0I~Ag4%<)bG9~)w|`sq+S2k9KJYG~WbmPwxNC%Z8aXOWn2$O~7{&q|6m%9lEg z!BTUV@Bo?y0POk-hRZRTArky^=qkg>{Jr780bC9ME=H$HU9Vg_td7Q+JEUGPWq=~k zeR16big(z1!PwJ+>>G52d5wD&+^JaX#e6p`E!8MyET)iRsF#@s6_$H{nFi3m`HNh~ z!zGsK0hHBDIwUpGiqMS%CmlEwE5~KAwd5;Q21IbZIRj$OvUtn7haB~bi!pblU`8ZI zwe)53!ji2h`4v6pK;l3`bau?kB>|Z>)L1< z9A8xu#gMaPGmQgi?PToTdOC!M{>CY~&FL&Pn0dz3jXkGmdGN(uj=))4igPwcN}dX( zsS?$38{n#4i-rkSu9|ers0~uyW|(pOx1Ky#Lurd-_y|M0bJAxyJfnl%(e=+*=Wyr& zpCFVbO}9)IPP_O``S)oXUrdL~Zk|fv6-(dG1dOV+YD2^EX6l?Fb@PR>|J<^FbrMOf zSa#B3e0!-Dr_{c-<4X7b4O0uNz;5*sbp1*oFqCw&Fwg%hnp?<>@DC_`Roch!EcsW&#(zSIqv^{9^WA3rgn^Q-B6LZK3IV~AZm{pk$qOVGnN0azF#jd@%A&?UP=-vN*<6I8&nj9H0L zJvvGwEYWI&1*PGxw+2E47@eN0i&BI>^*=*c4B6o;sQJ>oBFX@OHb z)&C7M^`{Q}P(>q?f75z>A!q-e@>(bQeU26^_tdR*AJ`b(OuZEYGC3{-MZ(nwxQGYHfSNuPTO3VWl z_y!~Ay7WVAH;gZBH&6hGkhdTO&x3D~Lk35cj5MWW0O-U~pA+4ihh?>)T1mjglm3$g zuVemo=@+@vwj?Z1;!BxHT96(!XZ4by3AR$dlW01CZy94KQH0`xPhMY4#*ZqFLlH)b zHUeh`(^7y=Fp5n$SnY4!=l0!tQ(?VhQ3B7=^EkSif?m_s16`}e8&0yx4i?o*EiIM>WiG zsj?{CmuhY@T8e;Pwy%n>E<1SS3Uu|B`8A|e3M~Prq)>$=KtkZ+LIajShpwY3OEB%1 z$1Rp*%SlS-J`VJXAGpf06yRT8j<7`9DuNok6o-wHDyaI{wgL+jr+xwX>6uj1vQhss z57k=<^}-jHS-O9j^>SuW-`$yf-s8$=)gE`AQS34xFN@UmAD&UY&6*?aUxp*hZ|K0&nf8ltnL)|I~HA-=KhYw$liFn_d8hFj93DdSdJwo z{UbGJ?4T9iO#|N`r7H9tH0MeR1^|Si&vLNSFxtEve!RJN_GRf$zognLFuN?k)fJ$A zAce{Gl^ol~A;cl(UIUJUVMlnA=QWTr`m*n=c!vT@%7_*bcnd0qzX zZnSx&=AFOWYw76;x1n^NkiUAN|2!V-p;#L(;jKq3A2(S$o-IsZN`5B-$}ZD3Cy(m=;P8Wr1$SCOWu!WkH= zlJfq}3;fAJb0hj~E0lw{N@Lav$}iA7J!V)_%Wa5xQmiE^sefH6c6VnWCqPgVg*~%M zRV}tp9tHWozB-Ltq?aO13T@b?6*q1H6pP#PN&V91Je)Rz)3n^1zkNavF@y0IAc_HE za0{DOr#C+D$jL9{`9R3`*5tY!JUyOjY=;!dje&X}yB$_2htmROLuA=uE#Z-U$g2~X zx=!aV^h<20`&A%`Qw9F$6TYpCX*;a4`M!ilQCz*jA&9W@_BQ0d0}k*&ny>?>31I*% z3cxuvd<%SBe&Hhky-_)VNO`ag?c9M4mdx!~%F|>u8o;a?UnXr2nAq?^4*-K}fEYfj zMTK?(c(n~x+=-3(tQ6UJQ1x2!{?GlVq9&u#Sf~Jq=|vlwieAPCfMBPnUP|~um)GGh z1cadDTN~Pg@eFzMNp`IJIL<2g5XvQwh+t(jMupdO9vM2FI~68h0LRBs>#bRtbMcVoeGQ#_wtu|QNp3u~gzb$kauHMWJZG54)kgtqhQ z!TXbW_3Z%3nY^JBk|wo!UnN`FKD}8k$;DEG3H7m(ciQ}f8o9O~dgm*(x`q%(oj95O-XXm}M(K*-%;!**klt+d zzI5XN+#+Y1wgnc^aiiBk91fE6cV9fXw_u z`u};bLB?Ws@VQ`^<}h9c1goEO?r{&tw*LDTAVjSTz6Rn%u7_Z9-T;Di-NS{8Jmv+yUnoZB zC0gafCs6Fr;^n-u{1DHf>^iFg?-+_W1e;t80QLZgs@Zx@&5|o|@6tSdG|dNqzLGO- z#T>?30Avj|rqRxrvEJd4mN{BFQ|2MQ)+VvhM;0Uh!|1WEm|WQ#+tTYD>!oDsbsO*t zW245T@rQ8*0Jr0o9M-&yyNgRqLTkRuJ9plI*|2-CdHhd7(Chu0Q(j)xYy&koqV@1C zX_Whu<3zfafNLP-4hqfB&^$}PVxlC$! z6#K6J9*n>BN^8-|qu>i0x_%U4PwsRU+Z+f>JM0+F1W$&_K)d0r9-CGM;JZoSIccDM z-RST!(5ivktm9xGdHhaZ$F(B*7H-t&xaMk@=O%fnebD5I)t*h?D?9VimMkdMFLk3t zbaprjK<1021w{s}-qzd6LHDN{9pEASOG|E>|8w>A``--tWZ5g3wIJgOEgsIbxG|v$ z*41^i>=omx+WViRIKi{$(igDyS~Y_w_Bx&?Qvjw(NodTrj}cad~@h8g*leWq_P0EcI~i zNUHi?>UbIfcCoS)hYD{+YQo9k7iGb!klaQT7H7YqVXm<^x|Nj+bhKNWHe^a)2nM)Z zlr`ew+?q3%1$mUEq;sHggR=CIe-=4M2RA;zvC6STO0>u-bT2cmU)~crd=|p+1!kAZ zl94Ae|13Ev>s8VB3v}rCIY^QOrIP2h;-*M^Cxcy|vq6oPKA3XdhY2qL?VSQTh z>6ItZ&Y4^~s1EbxX}?N$aF`?g6aC2YwDmlc&J^@yzFIsh>7li2XnirJaBLIHQ|5UX z3(4We+!=6LMOt|stCRP8nw#Y$yJW~UQoRevM=3%2iUg^`>aR@Nz>PvL0{^j0NxIRTIyse&Y5@VR+C8!C~QGESq^X0!eWQ zTtj9OXD_Mz=+*5W4-_b{Q}w9PRV7nJ6+3==(##810N^w!ghT9HR-JtIjh31X3R~=t zUedNlc9%oHs2Y894HV1XRcg<#C`B1EI=HfO%Uz?GZw{ClKxr6#YBjP0pBlDRlUB9x z&6(v(d$i-DCterqWHt{+p`NAw6kFtUuZo=jo#JjnFN-Q#q@MWY z(K#0rmdiDokf(G{3cZWHm+PhJcOkUSlzJD)DXh!{Rho#ty{E++R(nZx-|_Dc4~9(q z262#?esal%O$wmg=>3a#xE|XM0Hu+#F@iDo+jNR6^~&2YJBOIr^YtYHrLNDcynLR=E9SbwAIXi~okF++~(Kc_E*}Ka@KPp-%H?`wqY_z(Q zBfmUhZ0RfMcQAja)%Qal#whxkaH-svuCdQ(gUVPo<+mPgDZbP7!wD`D;G7`7xF&A4 zstc~v=!xc|-&>uAJ^^_JAsq{`7COEiNk9Da*hwd!Xbn8Wq9eQDe`vEh+`xa!yT%=M zR{2h59S@BE<9&L|;3c*2&hyn)HG9b_cH(2Wk-U8)5lD6xVJW0y6Aho zn%&NOApeXnizCk`)ACHMq}#J~GM{p>ZOo!}D_mVZ;GI3(5zcK3eRA-*lArEnYIQrD z&Li#AC_mF--QYqWmz0#Y=GP;u-^UNWV_JiEHr6o_XB%GY=~ZwkA~tq?Ha#wPV8+vY zy?3GA4)29Sf}JbQZgetqr(E@m*VY?HKGo*xXwYlxLe%KFHe%!b=UVq9`>?^0{i;Ru j>pn0%EV^2^e*MEX22Hna({W?+OX~{yjfVHuel`COa_Zn| diff --git a/lib/registerForPushNotificationsAsync.ts b/lib/registerForPushNotificationsAsync.ts new file mode 100644 index 0000000..616328d --- /dev/null +++ b/lib/registerForPushNotificationsAsync.ts @@ -0,0 +1,43 @@ +import Constants from 'expo-constants'; +import * as Device from 'expo-device'; +import * as Notifications from 'expo-notifications'; +import { Platform } from "react-native"; + +export async function registerForPushNotificationsAsync() { + if (Platform.OS === 'android') { + await Notifications.setNotificationChannelAsync('default', { + name: 'default', + importance: Notifications.AndroidImportance.MAX, + vibrationPattern: [0, 250, 250, 250, 250, 250, 250, 250, 500], + lightColor: '#FF231F7C', + }); + } + + if (Device.isDevice) { + const { status: existingStatus } = await Notifications.getPermissionsAsync() + let finalStatus = existingStatus + if (existingStatus !== 'granted') { + const { status } = await Notifications.requestPermissionsAsync() + finalStatus = status + } + + if (finalStatus !== 'granted') { + throw new Error('Permission not granted') + } + + const projectId = Constants?.expoConfig?.extra?.eas?.projectId ?? Constants?.expoConfig?.extra?.projectId + if (!projectId) { + throw new Error('Project ID not found') + } + + try { + const pushTokenString = (await Notifications.getExpoPushTokenAsync({ projectId })).data + console.log(pushTokenString) + return pushTokenString + } catch (error) { + throw new Error(`Error getting push token: ${error}`) + } + }else{ + throw new Error('Must use physical device for Push Notifications') + } +} diff --git a/package.json b/package.json index 4f7d372..5e4e03f 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,8 @@ "expo-blur": "~14.1.4", "expo-clipboard": "^7.1.4", "expo-constants": "~17.1.6", + "expo-dev-client": "~5.2.0", + "expo-device": "~7.1.4", "expo-document-picker": "^13.1.5", "expo-file-system": "^18.1.10", "expo-font": "~13.3.1", @@ -39,6 +41,8 @@ "expo-linear-gradient": "~14.1.4", "expo-linking": "~7.1.5", "expo-media-library": "~17.1.6", + "expo-modules-core": "~2.4.0", + "expo-notifications": "~0.31.3", "expo-router": "~5.0.7", "expo-sharing": "^13.1.5", "expo-splash-screen": "~0.30.8", diff --git a/providers/NotificationProvider.tsx b/providers/NotificationProvider.tsx new file mode 100644 index 0000000..9ae06dc --- /dev/null +++ b/providers/NotificationProvider.tsx @@ -0,0 +1,89 @@ +import { registerForPushNotificationsAsync } from "@/lib/registerForPushNotificationsAsync"; +import { Subscription } from "expo-modules-core"; +import * as Notifications from "expo-notifications"; +import React, { + createContext, + ReactNode, + useContext, + useEffect, + useRef, + useState, +} from "react"; + +interface NotificationContextType { + expoPushToken: string | null; + notification: Notifications.Notification | null; + error: Error | null; +} + +const NotificationContext = createContext( + undefined +); + +export const useNotification = () => { + const context = useContext(NotificationContext); + if (context === undefined) { + throw new Error( + "useNotification must be used within a NotificationProvider" + ); + } + return context; +}; + +interface NotificationProviderProps { + children: ReactNode; +} + +export const NotificationProvider: React.FC = ({ + children, +}) => { + const [expoPushToken, setExpoPushToken] = useState(null); + const [notification, setNotification] = + useState(null); + const [error, setError] = useState(null); + + const notificationListener = useRef(); + const responseListener = useRef(); + + useEffect(() => { + registerForPushNotificationsAsync().then( + (token) => setExpoPushToken(token), + (error) => setError(error) + ); + + notificationListener.current = + Notifications.addNotificationReceivedListener((notification) => { + console.log("🔔 Notification Received: ", notification); + setNotification(notification); + }); + + responseListener.current = + Notifications.addNotificationResponseReceivedListener((response) => { + console.log( + "🔔 Notification Response: ", + JSON.stringify(response, null, 2), + JSON.stringify(response.notification.request.content.data, null, 2) + ); + // Handle the notification response here + }); + + return () => { + if (notificationListener.current) { + Notifications.removeNotificationSubscription( + notificationListener.current + ); + } + if (responseListener.current) { + Notifications.removeNotificationSubscription(responseListener.current); + } + }; + }, []); + + return ( + + {children} + + ); +}; \ No newline at end of file