From a37c7ab583cbfe83209bdf0349e68cb1573226fd Mon Sep 17 00:00:00 2001 From: Marvin Date: Mon, 15 Jul 2019 17:57:00 +0800 Subject: [PATCH] Add examples for hooks --- doc/HooksAPI.xmind | Bin 0 -> 174803 bytes package.json | 16 +- src/App.css | 33 --- src/App.js | 230 ++++++++++++++++-- src/App.test.js | 9 - .../awesomeHooks/__test__/useValue.test.js | 15 ++ src/customHooks/awesomeHooks/index.js | 20 ++ src/customHooks/awesomeHooks/useComponent.js | 11 + src/customHooks/awesomeHooks/useFunction.js | 6 + src/customHooks/awesomeHooks/useValue.js | 5 + src/customHooks/hoc/StepOne.js | 33 +++ src/customHooks/hoc/StepTwo.js | 34 +++ src/customHooks/hoc/withHOC.js | 15 ++ src/customHooks/hooks/StepOne.js | 28 +++ src/customHooks/hooks/StepTwo.js | 28 +++ src/customHooks/hooks/useSubmit.js | 6 + src/customHooks/renderProps/FormWrapper.js | 14 ++ src/customHooks/renderProps/StepOne.js | 37 +++ src/customHooks/renderProps/StepTwo.js | 38 +++ src/index.css | 13 - src/index.js | 7 - src/logo.svg | 7 - src/serviceWorker.js | 135 ---------- src/useContext/BasicContext.js | 42 ++++ src/useContext/PropFuncContext.js | 42 ++++ src/useContext/theme-context.js | 3 + src/useEffect/ConditionEffect.js | 25 ++ src/useEffect/ConditionEffectFromProps.js | 29 +++ src/useEffect/DidEffect.js | 21 ++ src/useEffect/MultiEffects.js | 25 ++ src/useEffect/UnmountEffect.js | 15 ++ src/useEffect/UpdateEffect.js | 22 ++ src/useEffect/__test__/updataEffect.test.js | 34 +++ src/useMemo/BasicCallback.js | 23 ++ src/useReducer/BasicReducer.js | 28 +++ src/useReducer/InitReducer.js | 39 +++ src/useReducer/SameReducer.js | 32 +++ src/useRef/BasicRef.js | 18 ++ src/useRef/MeasureDom.js | 24 ++ src/useRef/PrevState.js | 22 ++ src/useRef/StaticValueWithRef.js | 28 +++ src/useState/BasicState.js | 16 ++ src/useState/InitialState.js | 18 ++ src/useState/MultiStates.js | 26 ++ src/useState/ObjectState.js | 21 ++ src/useState/SameState.js | 27 ++ yarn.lock | 150 +++++++++++- 47 files changed, 1240 insertions(+), 230 deletions(-) create mode 100644 doc/HooksAPI.xmind delete mode 100644 src/App.css delete mode 100644 src/App.test.js create mode 100644 src/customHooks/awesomeHooks/__test__/useValue.test.js create mode 100644 src/customHooks/awesomeHooks/index.js create mode 100644 src/customHooks/awesomeHooks/useComponent.js create mode 100644 src/customHooks/awesomeHooks/useFunction.js create mode 100644 src/customHooks/awesomeHooks/useValue.js create mode 100644 src/customHooks/hoc/StepOne.js create mode 100644 src/customHooks/hoc/StepTwo.js create mode 100644 src/customHooks/hoc/withHOC.js create mode 100644 src/customHooks/hooks/StepOne.js create mode 100644 src/customHooks/hooks/StepTwo.js create mode 100644 src/customHooks/hooks/useSubmit.js create mode 100644 src/customHooks/renderProps/FormWrapper.js create mode 100644 src/customHooks/renderProps/StepOne.js create mode 100644 src/customHooks/renderProps/StepTwo.js delete mode 100644 src/index.css delete mode 100644 src/logo.svg delete mode 100644 src/serviceWorker.js create mode 100644 src/useContext/BasicContext.js create mode 100644 src/useContext/PropFuncContext.js create mode 100644 src/useContext/theme-context.js create mode 100644 src/useEffect/ConditionEffect.js create mode 100644 src/useEffect/ConditionEffectFromProps.js create mode 100644 src/useEffect/DidEffect.js create mode 100644 src/useEffect/MultiEffects.js create mode 100644 src/useEffect/UnmountEffect.js create mode 100644 src/useEffect/UpdateEffect.js create mode 100644 src/useEffect/__test__/updataEffect.test.js create mode 100644 src/useMemo/BasicCallback.js create mode 100644 src/useReducer/BasicReducer.js create mode 100644 src/useReducer/InitReducer.js create mode 100644 src/useReducer/SameReducer.js create mode 100644 src/useRef/BasicRef.js create mode 100644 src/useRef/MeasureDom.js create mode 100644 src/useRef/PrevState.js create mode 100644 src/useRef/StaticValueWithRef.js create mode 100644 src/useState/BasicState.js create mode 100644 src/useState/InitialState.js create mode 100644 src/useState/MultiStates.js create mode 100644 src/useState/ObjectState.js create mode 100644 src/useState/SameState.js diff --git a/doc/HooksAPI.xmind b/doc/HooksAPI.xmind new file mode 100644 index 0000000000000000000000000000000000000000..54bcb1b6d1490fb48d4f5a3d07c74ca87ecf6684 GIT binary patch literal 174803 zcmeEv1zeQb*T3tUYptCqf{H;*hlH!R2mwFauLefwX~G2#A!FfgmcNh)Bbl zASgB^V$2Mngdzr^{?9W5$gZ*Y+xPwa-}nEAU1a8o`<#33xhKBo+~=+`{dvH+enW-~ z={L^#?TUUqeultj4qZgicHyvpn)_4fN4-VxNmW7@2w6O?z8YE^rKU>fQh78M*Ir-E za*dG|NljHKqHt*xHjhi!SL5>378&RvZK%SXT%o?2SioKA!eMb~@GpfA|G?3O$OQ{A zNNe3~Bi{`43R2W!bwTap!Z43%cLJ=`I6beVy z)9E^?r_*;JT(9`KUxr9P> zv={KiT$&+|4J4==DSq^H{(eGFr$^H|NLLJ2nGPN@boiqeT0iycHy3_aeUrt*fW=fE zS48KE6kI-}MZfbOav9;LR%ct^<#y*aN`@;3fWgyOV~Rxlg*rOU&d%D-SZ$ubUI$Gk zlXcdwHq$ZU2{;synzGe}LJ17^msev@D3lJI>$=Q^DdModcA=tK#o6vl*(|Q(w=YG` zs;P27%or>>P0MbJz8Z@|fguFhP*WALICPLX4j%*(Prwq1Bs?BRK;gd-CLxnf7pbyn z`f4~Lo=&4Ph*|`)ot+krL_up&C^VWD9*@D}@Mw@E49Ma)AIPM0K(>hvJR*f5AdxX* zw37ot$lzk|R2qdzbNCKT26`fvh)p+Gt)K-&PWe?&#N)H53fk}t6oudlk9NL_8Wt!jrp6lEq}!9P#cZOjVk-w?knFsCIM=0fok3DHP1VpaLeQh+cDOhs-xe9(+c&D@qo>SGF&tDSH=aA*I;z z1oOT_A0BJZ#i8u66b_BdVT))27EL4;@u?EKAEpZ1JzBEZL(=q<3fg4;VRgR#GM}@u z#IU*2^w^qsKY2)oEZe^+d-r$9!tnV#5?MmT@*D(M2O>et=2H1I2b75TZ^%l{s6Bf` zwiSrWR1nvcy-!J`ceXU$uh#dZY|jZgGUF{yY8SBOG$o%kdN2XU`E zfW?upcsv&KS*yUT{r#^*ad{#-kiutEz(J5jo>0oIvLn*;EGhJBrw>SPZC-et?>_lH zU${oqf=;1|RORU@@|d8yurztnc@Q4?!3>Zs)uk)VpLuVUU&xZ}Ib54`v@XmCzSbt? z*5o9~k`Bp3(`4Z%6i0w(!Sc}Kvb<1f*70th$$ZkJSs}80KC*yQvfatjoJg3?FrVZ> ze(hg((G($=6;0yJtt}+0%ZZGrI~vX5jz0V z2OR#(L1;?0FH^Sbl%k#8%0YseB~Of%`v*vKBcz!-;X$AX>W)UqVndLAfIyg0w(!Iv zrC6vU21ivMbzBy^qb6V{^Z|(IWGA#LOWF=kMsDi79Ga-f3WE8loDm2=6%@$)Pr^9W zp4pD{KQv7qnF*Z)20C}v$b@V@bf&@pdJ&#P~U@%U6JBlNYV#gCOPz*dBeDfdkYw)CQ+pW|nb=yzK zcI~V=7$XbJkp-TRN5%kS>%6mSa|62#%#V;t6bmtQ2SWylyUEK$ol%@c2SaRpjGp#E+Y&>h_DODvP12IIB3MO-1^pI#XX? zRm5ZowG}Rb@}Tl+RaF{~D&`>Zts=Nk)mPoTfhSg_vRPC|I!$$!+u!f=P)2l{b>Uea zzj*wj^mF99_kwbAV-_V@B@5`5}%HW53_tpFVMSs8Ap2t^?e(l(|x%91> z{1qQd!r|})R5DA9;?V4A6e0Mud=?5Tr2h*UlpoHJ`z0ylLLPMljJ0wC&lS+Abe4op z>l8BN0*HX^>7u1{0dia+UPb~QM{&V-Lj<-XUqlxWupBX#!{H0abP0h#WfQT&e@!+Y znF0SzWTUt&mVkuDqV2F^GM$09!*hf}ywK79hvTgt+Ob>u*Rj}aOD^ZDTBmm&HxWyv zP)KCDmK~9S(ZZqW7%eglh0&s+NO-y(nU2NMus_V;&w5-LgDG88`M%wCM>1uZ{@w1P zEGfEX{~4LjIr+I0HQO=}T_2YP{uJUH`}l#E+EevQ(-UQfch7o3dTEi6D1wL~f??=_OM1$O()We93<(XA4oP#PYR`v! zK~V1o059Y_@&z~|h3(|P6){OpjuJ7G#dpLy^_o}=9#13yB>EW^0B6+@!5dvZ8>1hw zlXN15$RMF*dk{un5?mcw?)}aZ25_Pi@Knrm26#%7+ zNSb}P&ijDOJNpa%eKwm|GL=ZOBM`Mn6f)3bhhb=uFld4n8pQx?7mK1Ys6R#z28Blv zzDth+$@mUQb_@mshbG{)uoxO3DkvIo2aBTvvruFd5l5h6Q2%D$26Stg^i#z zT^@!k%2&xdh;Ar+))(aUPU28x9McJfV~}W0R3YCEEoLztozPf{;}4(&3W+0=K06^G zaTY)`l`iO}>PI9FL%`FWhCc&Y-J!>d*NJdo-d6hH><#Exr}j`<5XEfyf}-Bd1`Np&O=F`u zK$lQV;MtP}Vm69yPv-XCKx1*xUo0dfx+M?MzZ5px4zf$q^!@P7oX+8O6Zj(&1C6CQ z2+)KqphNWHd^Pj>nDHJ=S zc0b^NA%M@-<|w`VZgzDI;Ad-1v?G)Fc0hm~1uNnc99et^2eJbm1uXBa`ULk2g#}Cc z*}gzP2naqPkhOcZfvfn%<9jDR1R{e^qET=(dwa+XVhJoJd~qU5L_ZKjAo7F3fnnEpR+V~x^UExjHhq@{I5jny#$vg>GBw{);MLZJZSTRfoN0c3n1L@dadaPf`rum;l zfZj;&x+7__v)hz*Pyu!#E;hi)aa-ZMEcay1{$vEbR>W;hV{`0;Ost)dO%=19*!E;LnZzLW9=iWl7nIODg0uSXLDD1OacAsi zD$TIy_^8B~kpaq$s*5_@88Ag1uQ`$=&5QcSQNVH_!$)!AU|9Av zE{8}LWAJPYO5%X~H)&bO%tPd@CHFr7fqiYRk8DrE7i|09{QKUy&uRlrb|O>k(IOPV zi72ExIWh4B770yvvg>`u7ODbp1U%&ZyXR)NxF{xRH`PBfH&H0D6Q0GOGjSrWlaP*O zNE{qUBpws{1K!{lx>Z4rG&>Ab88`?C<`tRwA5n*=K-!(o#xmF_f+I@8wa1HSLM%`6 zBYAE-fdoDv`g4G$gji*fkKPed`E)V$)4jVcA#RgG(L_AIo=;|!tiJeoE?&86UQKpL&56C;bp6PL!QdRpe7ppMvBQWdB0k36iO<3lC=ku{nt9kxia$F= zN*ezodI)TRm`tG37&t0T!mvjpxQ>Vdsr}v?eV_*offDJnEGi)&Q01VrW!c`c*wk*? zxx`-)ZU>tE6w!H`f4hMn*jYgnLeuyIwPxhoB@&r^eKw`5?q7s!>MHx)O zBv9rxl{r`_eUN6JLaO$9RIhXq+RHh?qOr&{k`RY+;EC;>SX_o9#evC(1j-L}0ujW| z!-_Z{3M<%2Y{uTY&{So#Da|_~-pP z=|lpD%Y-tnAM^ftXd9)4fjR9LEc4k8?sIK&a5po5WIAKXc0#_8?Zn~n?L<^AlR!kX z?HnEW?B44_q+0K<#b-)-pxi-0CZe$wRV3X6c8TU^CSk}99F7yiiAke6O6U|jdoCcS zL_mvr9|$94;0O??ce@8lGXAO!yJ`3lCZV}3E}2H)IS@Gl9LbT%LkTfXED2iJ`@mE| z9iB+~493XAlj^(=F%d`iZ{znRdx#W~14d|1a3E3f;D2q8dO zQ`r^SAmu38+n~S$2IzZad{4}O^c-N;bS_eP3yh&iXvU4uZGfwc$~tuXG4i6N*hB!69L^P5#e7njtt=f)Rod*;1o0n zrjmv5Kotsq7s4?-8B96y8ESO3z_(C?>JJ4=yPx_mABxO@zdsZQw(s*pabJ7pUui%F zvFC98?JIIxQ7jC9dsbB|>blL3M7hRj_3L*Ce!pGU{R`A}D=>PYqO3c5B<0n=DeG1? z_1&s&#U=lJHQj$J%%_M&JSYigQMHt$8R#kgDhhzHEIbFt1ka8QMHEB{Q)rKOA`-D| z#H&))4J#%PqH2+n$g`rWJ$p>B7u)fvcJ>HfOk(3WY!-=)$B}4&`*!wNDCTe|f-TVJ z&QCpi{g($DVwV!gOFF6Pd@vsAr;thEf2F{?v%S^GS#6<{m?EHmok${&fMH?Sbd1EF z?kIHRkht!q$(ELTt> zXjIREQm_w7_(c?`0r?x-LCIjThMfl?+X3hTEHt6ZKvh>kYq>#V~-`8`*}V6z>FOgk)|fFlaTSTYfhLY5yW zD&c=fqK(i?mf|5T`4x%A^kmdmBpM;Nvj;{?j8J65uM> z5{hS!tWEfFg1<8b6{6WgGO&O%BDdd|wcj8vaf&`qsF! zaAX>jPX>gC%&l}Z%SIsesc>>Bs32?nD_#Q*;P2pgd)#{py!0$m1+A-1Pc zIZOvJ4KQu+Kz~3QJC$LVF6m;`f4wg1t!REj0rf)YI@R3QjS0!oo=Rg008^lfaC{M- zKD*rNtv=AJqEmU-t{0*=S#1ULlGhg0)@#3w_5R6;Us={^_`==FMF#40Jfp-NRQOV{GUs&sud#jf=-e}1mMnnf2=dd)*EvKF$! z8Bz{d6#S1vxQVpb*)1?`e_IRPeI*hl{9mUYjaHBkU?P;Hk}-t8k&hIP{*C_bOBGR$ z0*dMCg-`*;WGYxMra(K_(27U*};->a4ST^BD@ylLTo z%~E}^^LY7rS^SG z?f?1J0$*8F4=)?|%F(YK>sxByx6~e9;n%Hl`j*-wurrc$>8$8cBzXFk+C%*}6dCm` zwg1{%I>CYy`%1&mfH6%weMSMkL_D(|4%QC26NQ6)c)_; z*S@9peM{|;ca_82OJOly-%|U&rS`pj0e|08`@W_2eM{~C`iB0lh3lUe6#sQ`Y2Q-& ze{$0LmfFMm%D$!c$ese-E3vz91La?2;pXSH*}XZZfGw4)7W>h;cTWa6E z^c`kY_vgN)_Wxv|`j*48w>RzU+feQ6n;CW$ z0)KvgyP^;nsch@pQ0?z{br-WfS53?MHdO1}wy`S~`W)}{ZK&3_p<3UDYX9^1^82zV zv9HRz=iYyPRo;CYs(r2gux~>(5nZ_vTi=FipO?k-ReASqsP>)B<2yr$z75s-HdOmY zK;E~ZTHl6h$U=wjB^*Bo*?k+T?fu$T3!fR(SLMy@+fc1n7{k^0@Pr z4mC;MfNa#9J}ph(Ef2|%Wd=baQn}4uQ}!-o!+RIydzax=^*jzAUIGsrF3szb~mgzKzU!?w#j+8_{x4fu5kyqmk91J~caU;n}OCQBEuafz(2+OlTNy6C|#$@*S5ygcOo zWcxYTDwBnEv!V!9Q8zB9U&GrioiO^>H4}n=|841L{-wja3XZC&7R=wft3K;+$}lz6 zQ}u3Vbp~4gX1Un%#(A#$ykP@y*T=Sc-qaOybDXO^@|=gQjB#(*`ZQ-CJY4bPec@`} zS?jKE{rYtb+N#p^E#GRu|HLoZgtKSQ-c6GY9k8vwp52On_3Bk>U`$MPRn?8tP4E-8 zL~}yk){8$O-FT!nq#ph}#-B(`)ECv>ijVPht({zPv#7{)`SOjKqPh?*tL&T{9ot+z z98UE9<&*mQ`a5?lQm7Qlk&uv(W5=EasxMo6di{}8r%b1KdV11=Qc_aR7u$YnTUYVE z?L{(q+Q`ZpWNiDrWXwGCGmLntk*R6X+i>#;0{R6WhjY=J&Z>R!;%QVWR;ceT$Ox^S2*7cmg@XOD5xK=NpE~R-RG+CLg!c1xp59*<{<@54YipaX@0z;hwLGHa zwAF?Er&&B+p6i?EZcRBgPo6xfs|$~bSxMkj=jx-;f%Srq9b10>`R6;=E?(Sr=}F{5 z@q8T}o%!?k43eZ@R1iKvV}JzOeK`dvN>5LBe|2SIZf-76)bjeZ6|g*Eb^LS#cNgf; z&x1$ayMKR+tLw%M8*W?KO`SS5Cp)`fKh50DO}EZ)t!Jw&G**LkFgQ5Sd@7NPJGkZ3 zhj*-JOZ{hLyRwIcu{$ zlWF{ORz*d{-ibQPV+Klqdn;C~&~6`u^^-W*578030w)c zH_sdQ%N4sH0fIIX&S?kyB^HFYn4+K zjmW1eX*S~2l(m)-x*FN1Yy@Yww~ade?Kx|OKFqhEH+4Pkmil*m| zF^#=i`od@In6zOEey>+H;(hdi!Ji3MTBoPEy1VPCt8Y&`cI=ppIMnB&yv8YGQ;Lo1 zuOf*gE-nt_EiE+_CIyZ_z_mVO;THX!g!WIC^R)U z=kR!?_wQGwJE^y>S-pC%zrTiVX$M!f4bjm_4hRUSt*wn9 z@(v`csHjNS-wjDTa%8b@n?55fr23qxnVFf_qUpRR!9yIg*Bog9pc@9E*#a(`sgF z`ufeA+0@)mAKPL6jUPXL4R+N`( zZAiI%@7}@G!sVcRwY0PXjbqOg-oI~YYg>K!GHvr_Z}%LpPaogBC^gwGdX&lgffrR|rVOw*MV-?`Ha>R|B5X|Q8(^?Aq8(9ntHJ|#6X$O2l;%_y29i&f|K>7Cc8 zkt3(;xdcp@GhwgEPc6;FL)T_&XtcMs2I3bkTnHTmO&#O)kvw_p!In#-7R4Sv9%v97 zecUwkPUM1x3lFu-vS0S>V#2oV+b>hOCMQLm{O6uMzoaC@#x7mC zawYJ@(h@YA!_LX-`i1Le&z>!~9;$79RK2O}tl^Vi)6&w4wM97>pVX>;{P+>Hp~}=t z3zi}>I$^j%?;kFB@A@IVR`!VWL@u8&Zro+}#H1twNMh4tsZ>;RQ>E2hEEa>RjvYO9 z>WjL%dBFoEZg1;fy?$MJmby$R#9D`khnq~nor#Ey%yw^WUN*x+T3cIIT3XZ8v{GVX zZa&+pp`pQN31!Wid$}I%1w%x%iw_<=fO(ale;9p2-2Jyyicn zr1jbWgcTu5Jz6vT<($)o5jK+KvuDv(R#tSn?C4RogiRqhJw5j|jMwrTFlfyY;DD4S zT7iW+5g%V8m(Kx)z|W`|2C;!b=g;Fe2;VhY&zLb|O4-1{gQrfK1oJNv4A(`UVc?L& z8gjYX8!~8xW2n?;aAx=J-C+NAPcJGhb-o*C4%f{(fBg9IfrADe2>#=bKWGbDm!HHC zi5iXtxjQkR+Dh|W-Q4OX!+>m9zkcb`rRkZOckIh@c4cL`IXKMMSC?C4om!WSX|O!C z)`ULv(DCE5tqpayL`bem-L4OoELfMchP0zY8#`ma*+dWa45aItLzEVj9NchBdv`-} znoelZ@rm2;1j6$dFM@XN-D^st&0>Xxhu{9yuY8S-&COZM#|ceOgIKMR%-#s&26L0o zNBLd?YMq>&lM@nV`i4bD4j(Z>pZ~aDxlaoYg{p0AOgn#`!(^)31_uY%8NOJktNZNf z)1ya^&R?*=x#>~W!-r;T2Mru}yXE=&SI=n2*GTSaYvo_RzGusFl@ax^DOPr@%^DN- zhOaWSadlltHor4hTbq$oZ@OYd+^970LRMQ^245eOO1-xKcA_XGE(+Zm4LnR8WYG%V zR}z0nt2M*m;l~f{Mc1#(JFti&->*n%P=t4id@l-Y+s2;_3=9Nc1iT(Z`8yswc(Ay* z7-TPvU4Hb`sVuj5+$m+~h^1xkIv17^8 z_D4tCY}gR)>pPgdG<;u9j{b;xn8l0UKi+=-)Vg$P$YoGDkl=J7KTpQgDV(N`6rP&3A zjTPrjH77JxURVi!Y2;=uH%YX7^Sh&y)$giRueP?1icC*Sd%JVQ)Nvzc<`otDT4e}i z@87>K`WT1wK7WGJ<%vXv}v(^ zz`@IxFM~DMbLHtW|LF~&|E~uxpm{Kvb3I-@EGsJm|N3Y88cWOewl*fZs;a7GV_I}{ zw2H3e);jxxp`k0?8YgORnyaOCoYO|iPH4y|3EP&iA)@07a4^8yW| zt$t?)Dtw2IIOp{u&C|OZ<|~d)z$;sbm~u1BbV>WYH^=&)4dkhWIJ=Mq$DBTXdW2lH zd83jJ;+FH5KEBJ6mWoCWtvayq^rb`htxuiFzO*-botBlC7`gOtKjl;AeEh>}(;tgo zpFiT(v1*ke<&tq}K(zX>Xx4Fp}-NZP*SPC?>i$;#)Ov!)>@ zy*quSj;or7DQi^c_>CQXVTwFBq?o|mHIoWUT zIEAP7-m>XTZCJhK5gX@)LdTuu+K9sp{^b&df0=i(X-d|w)!LB(VQr=Uzg+2R*|@W1 zeFy25sya=FNq@eWgWT6|y~1zWjGi)nS62Gbxae1&k9J7Que${s9wFS|kx`Rdho8)||>LNHb{^j+7id)IO$-O$kRU1L?m!p)$6{jWu2+RPod z-^||KJ+f}qEW--gfu@HU$50nxD%=Zhe){xjMP+4HW~Omga(#(VUPQuZyV@+ZanAq1^-%t+f?Gp#UQ)^%&T(a~}(XG?vjmHizb|->^Yt%bYoL zc22)tS{gb$i&t$RNQr&baG|>KVMY*c+qP}SgE4c$eesSDZsqSUsc9-d=exi7*{h8) zyuT~h>6Le2ZMZEfqecvnfK zu}MiuV6(u;woaKmc}ug@gmLOORg$Q76&NX2b&lJ*)vJXL2D77H4X`(G#_-?)_io)% z$mVzOe zsAE%q5UZ!Bhej`!94QZ9uSvk+X88$gZr)z-W)k?9()8HHcQ5%Hv@x&kSD_6uj?$og ze0w1;DqyUNiaCQ38u_U`?~{7W#*G_Ak2*R!m;;6)ENRkH%-UpIiR3N#giJTM83J4I zyKdjVFBS-nE`TWY&6_voW@cbJEG#TmL@m5h?`Us-0X&P}nZK3wf=aqOQ5tv77Q5Y^q0%NZZ+*CuT$lnKBGn5LpK zu>YSLG43hAvJ!*#eFv920R8QN)hw7lKQ<*>aB1fVuTSmOCQ-BnIT!aw;#;p52gk+9 zi-TH0;tRbzz+k?5cFndm9#QMw0~Ml_{~|Oxy7BSj-zvf36$^#OoR?dG&(uC;MocgBsv!rcb-`^sZc7atCb2s;?oc7N!OUz{)R5u6;H z9Oq>A;e}sP=?#PH!yvR@uW-NCtXadZ&W(x`000tG0yCOo@jHYs6^H#@R)>XWM7H0% z+XRNasY%0k$jFflgJsK>>FVkpPZ@R>B*vI16be^{51XisdX`rkvfkn?xT}&k&n?@; zG}`5|GSbYMTT@G-^&`T<=Keb5ZDW<`imk&J1Rv*t4+WAZlgUIA_4RXjxvdO7pI?#B zWio3al6a_o4p>!$l~Pmbke$YrB|;Sd3bm<-@kIjCvF9U!N8^35ptM2 zG6IZ`b4^rkzTzYt_c(6;u=e6~ap_6l5$czyLG4NRchCh?}5T>$XnXuwjFNfdOr9%Ey+vyKe6qXOBo}ewZNy?g54d0NJfue0TQ_2-jIG z)=xkE1YRIGsvZsw4s162vfV3Ci?!n=VEBryNCl;j9@)lcrl*HxY~9$Vc}D%xgz@8V ztNK4;L<9unZ+fNh2AT*8ZN}RHhzAIh(lJ$2SHE%N#;ECfwe|I87eMDiG<4#`iOW~6 zK-kpuD8~(c;mMn{L)n%V7C?AWVPSa+eJ{A5<=1H@q9Eg02WC7Of4wMi^2owEC)4M< zwCj(JN_;VGOyj$RqEjj#_3f+f-w%$8`cUOuooJmEVvxFG>yphxF(PqyYBW~O&)SZk zH?I&n3(dmF@7=Wvkl$l&fpy}b)|y41Os0Yb6^$j=CRt~JDLS4~x(o^bk+5W<)`)th zE*2YPvt`+=Idh`PLL=2*1Db2CFMux)bloP4!sD&{Sr;?q^_`)0uX($JuQy&AF?1*; z_W&WMJnhJltq0#FdwnP>D+`O97nSt%sh#WjIpN0va|-=vf~fz^KPlX&mvQ_2{jm*0 zC$}c51@5X-4K$YOn$k!6uL=3-w!6dgIXjr9!(VwJpVk^u;L~c0EjH-CW9@_ zG*3^1*UtwHEVdLh>&`DO-gMJ?zH=Ky>M#Tl#Nrxf9jnT5E4_H}>7C=IlP6EU76TA9 zrDF8x(MS)x!c@f1u8x>9W0w7&+0kN9!7U9JEH+HKz`8p}pt)edf>w{5oSfi;2bmqq zQZHPHG4ME)R=9jhz6m|yA;dwfti(ispFLo2ZQN`?=waH^#uz5l8*K)SbSE)6*?+Ra z2k(N+6YemgZw6~@+g-Pv5b*B(E2><+7GZ;TsS<(I3tmfzt+6bUj7N_4^HzAgv~A}y zZ~W|ZAIa$S>({QFimB0*KQ=7z`bld%r(?s)>$8u1SVMcgH*Lk9MB2=fxW*Ju?IFsf$Cw`&8aO z#m%NNLODX73bf3H{D+T+@3txHS5j;o%Ij=Y4&K*)Ey#~=WE!tFUQyy#Up+y-fOW=m z!g?EyGTu1zxbwzAkIt8`OgEYR^Dw5#7Cq97E!Mjn+h?DA^ShPCoY~69?YuU}_C+2- zY(JN0$`0;u3X~r9%GuF?c{JctdsWC{mpTQ4(ZzrrZAs{BVSt;usE^s(J|f$(JV_Dn z_EX-z@3cdsU;T9C^qvTph3lft%yNT5M=37RoTUh0Y?dtbSywh?#*CFy0bzv@ zxVQ}Z=WNR2`F z?G4&e$&XJ*$Q$opO+Il#70Z8md8nb`C3;Z^rz$fTH)ibE!Z?7zZrJCxH)bIKr37+d z!;};@&G@&jEKQ;PE$Z z-dt;GS(UxzTxO=LvGJ}o6Z%JkzQK*0VK8mdq%u`32D9YBxCs*+SggPq9|{817py(4 zT4OvVl>sP)V|d=jH_555-jv!3Nlnd*ke6$%mnwv~`2L6aopWJ(|3>F)diA<0<;}me zuP`$cIXeST1D?*NEQ#OFqS#>waJA63*>Qy;tT8)*_n(jt(*SMQD)z;3PyrtqK zqYUSqtoJdEQweZb0qZ~tBq70{2T>c}2HM~2!<*8aoD!ed_?0muhYv4ypQEmBXliOo zxt5)+hmnWcdS*Z{=1SRUYPvTiMX+MUNESGF7#8&1qFlz3UQmrH93FJF8T>CTE2Am? zGZsZZISrQ8)Dtr&SjgwA`T?$kr7U1UQp>ZsP@`C5-hs#!t5yYMW-cTT95!rN^SjM# z_QQMk#sSU-ZrSr$!e)Q3j!Tu5?R#}{Ng9UF;}afsrASBC@#ys6fPmko#JVJGYCd)J z=#r@bswr_16=k@dG-l7>f{P%`tJY9#E$X~?+kQCl@;Hycc5uMp@v_&g8Y?0py z!m;*GpFM+FL*zbOziQQQQ^0aT&_k2uLBs?w6adICU%m{|SP20~>7Rcd0qdES)t<5s z5~xou`Lf&~af^$a>05cue$?d4g@uJTZ*mI{%$C-+tfw6Z^b$tSc$P((^!f9X$;muB zI}8d{)bzgnnnrx|s+c?WIs3EXlMdg+J2 zEzxfV&wdlMjl*Ua+y+l^Jn*$b3g~h~vEE$w17mAmxzL_74c-^&UTSUpj`PIo8^sjIcwefS8N(EaA3lT z6SHQ`0>to^Z!&tT^&fu(W@fexp5guy0QSKJVG$7^Wur#S0Pq%;df^JU1Kt`il?k29g$!4NNG@6gz@*QzdF^ zsROkpKY9^n!j!T=LjWnF7I_(HX(a-BucoFpXAX$O)klw_i;pZ-d-A&VQpv4$vv7?+ zVQN_Cx^GxmlfS=6b|4x;DbPgP+S)|kqgfma6IG*D<+OOKfcyk;$!~0wKM0 zfm^lExiRwO$&(#n;1WUwMP;7XqSlk~@ylY4fMPW=QauKtYGFL1XDpXjSXt>-l_`!L zgV_}kQCVEmyzy$D)3d94`)2_&VFVz~SsvrFibeo@7lXmXrsOw5BvKla0i!N7)eKMi z^UuW)*4{C2d&>q!L%hWbNCvl)_WZ5hv4jMZUsPXE?d(Kiao&fwm5^c!8bofKXzRXs z3N}6j46i7N?Deq&6lGPkiK(f&74K0tOYQX|x2EudS1(`ILLhx5C}_6EinxoAz$*^+ z^Bd7Rx^P@;dwbA1^>fP~Ky^akjL;6t9Xod(KqsC)4QN|obv~$rypHA~C<6!>lyk}% zH1tjk=yU^4$A>1bWeS|K38jcogt9|rHunv#Ber%dg7xb1-0$4W^L#3+&fg*}2n+~- z#M5yoX9)?Ju=Tg!e%8H1^6W?lgYNI|f9~9CB!UGj?euBQ%!vxrKj^>#C_DJQ0`geJ zVUSP8iD4R?I&tC_cnrp~iq~p~!fb)FMwlVi0EUd2Jb7Mll>9*Jiij}%S=S&Y4@CCQ zKmP=oxqt88iIXSy`}W3W*axJJw+d9{mEuJyu1mCA>c+hVv{37M+ zY(0LD`;gU?tIlaQu}xWQ;Irfj;Q58@fNCNRcMtNPr)M4m>>+XE`R6Z^^WxC6!_PvV zBGAaptQd?)ovB7aV^N5fu4_vzOb@6GF_zu2->Ncs&p~sekmSn+1;&&lW!Xk{Wv2xW zuLOXyKca#%)77#fZp1!0aLcCofb*4|J9dy3E;LYyeNlSqH2{wiAhr_16#JWzx9{A! zURe0Y>ecEII6Qu}g+**h|19x~2LO8x7(5s-9iRF)(!#O3mkL^&=}`D0{}pB`&9-9y zzI}k(EpmBz7_foXld-X&)8~xY4LRE1jKKASXo%?1pm}b0DyZe!pxc1e7L?BLd_PlP z-=pI07OiL4tt#Yqo5F#u=K2%HENw@`4T1TCZ3OKDVejt; z8Lh>aVjE=IwnzO#sF7r$9CBrEAr0REvNKj=1!QLQU0Vun-3l-;F`qRC$`+Q>Lr>l> zEe%SH^{BgZ9AWvFV28%+W@c7xjkb0ajWI*f+4yPeC6(`Wd@T3>it?DXyg}h~LcU8ct0l%9S z(Lt%N&WkDDy}qNxbw%^C=Er|-2P~UJA_XjhvY$y7{m3`K)-ZO0R2Osvwdz4>S}Goi zce1B;it^%5ZBDm~s^?`Mo@AXoc7-v7G)0e%ZXOP35Ij2F+$=~l-8^Fs61+UtQl>bP zh9}=ovA#Ife&VBtH#}Th*DtR-T&@35pp23FEA`REiMww6Jhd$8sb5yuEt^X691mBw z)9)d;v@V@gIbIP9X)aWT39-)WX=5K;2Gtc=os-m2L8(Y;oMZ{Pjp-4QTPDJTA&AUT z5^G|Wmp?NzxMBXI^f2EKL$CZ?T$&YZ=(~Mt*3KQz)OK5044$Al%yG-bKW8JwEN4`e z!PeMj+m92+R+IxVMJMHh?8QaN^EmPizJ&5e?6uB`7q`(VS`a{&x5Xm?*h@D>oEsK& zfbr-)ZY0<@r}3O)0CfGbz-R1%{fkGxcrt8)rcRdPD(`{6Aiha{r1bvC_G+(p)rTr> zjE~yIjFtp#Ub1aq(Z!9I543)GhcNu*q0V-*#v4K)1aaL}bF=09++UO_1KqB;PXi)r zC;ztcBs+ukRm^Ef5=dDz)R_cYp*ExCxWRN<)}GeKP(D<-+u5{-#WN}`^Pk?iU;TJXyZ4)58EvRJ`A=o~Oj8-1YOJ#$`&+$duS3sR9QjZ;B4GSMf5lDB&hcOd>y?^`4i?ml^ zn|CZSz+oy%WN!kZKRg`SY~nmkrAG3GcG=`%Nj&n@!}a4*FU?-sZt*@k!ujT{k$A09 z#=31EeJ)2XU=7TDH={~5Yn-LVgR}{^Mjm_i(33mZ%bjVVht3N^kjA}=k~(iPl9t_- zxBla^hfOvU_v-A)5!Q_491IBozaR6$&D9m4)cCg$WOD9~9wI+TKEMT3Qg8Z7PZ^{K zu8E9{qH|qn0s&^$tQ~b`Z*N?`u4W}$X1sD`jO%GgbwS0}9Vi9d<>yC#U^?pn6hGaW zG-F0h(Z2orF;-w}SjWKW%E$=cP$ClymKHQE0Ur)=Oa}R0+R{=RxMcR-n^L{7aeK3m znc2)gd2Fv~t@gqto?Gq}Z`pM7*)Eo@%R@lGQ%rd)DxWw=Ju7COn#GongpO}sJN;eT ztBHAuH;K69hnQVOf@3O&bc=w$AdboGVu$*<4bOSgp1cbZ#^miD1WJFP0zS)+oYs;& zW2|;a<O^!1H!{J@r$*0jLpmrUT@BVtVF=o zchz2b%NS6W0@xsgUe)fe{cgM_a36+6MOm*|6Wdx0HOd!6bruyXjExWbLM_gw^A46S zF7Kht2eMMqB2sHH7?qo;O`uz&qgO0%d%9PrARcn6lg*)K0>?}P$k%vktN^Lkg!D|E zHw0X?QzuW(XRY73@qqe)tB{o}cmPf_RMXrk0|X#&IC*a3jy2~Yl7fLS4b_HhU0iG| z>UVJTf{vZuaPI2m%R5@mrlcH*F%ekM*54^8DRCBygR4b=X1eAc5*Yie_8RHz?2IV^ zpA-xoc*Y^4Cfh!_cKoVO_Ca@@)(d8HH8qksLrloiLtN)~?EjD`@~w1MIo4=h;8MHN znb)YfvLHiGTsSYsL>DI-ca4_0v^wuMNp`Rk;pt5s3M<}l^@>=7bR*q^58~Xa2)Tly zd@c8PSAI==z1U&o$I5ySV*9mE3%5cc-URtn$Hlq7^SwS#jK24e^D~}_316FLgPbcATR}n-3aWPQG=d5p7Hi%HU}AD?Y>O<^7HWv@4%ugHY@EL3HDlen z(2R`MhRO@cde2_GaD(DLDEVNNLDZ3)_c8OryNq!d0^uzrmNe(iJ!~1Js2}z(cm2>N zhH@7OlKdBaEHjf!3xh;=%g@;t#)EfNZVJGeXYqpvYXNAgJD1=1^vYfn6O-6KtgTga zeITv?0Og7untb=k6N*I!lmM#uvdSteAv;?NwY|d;ssJd407u?N!VEEQgJ4d2Hx-0s zJYYK;&(EJbmkCb1Eo3+1%p)MYicJ|dsWjQP`oROEIjz6v_1|89{8m_b@uH+`if460 zRt+a9>Chnu>miTOp`#x~?lyTcBrh+f@=^J^>N}P;)oa(>KWM$tEk3DXW&-Tt z+?!b2jwh!A+pU*4M-40UY_8aOCiQNrp?g|;>eebhnr_9++0|}xvzJcRu4ZvXIY$pa z)tL9D;djuHE`y+~D*xyAnBXojW1uioWzDJu55drqun~RnHsT0`^^I zQ~uVU;aLk^TjmO{7mt@fS~>P+ON$5-E;`_|WM(TFMz~mZE3r9mS7>PIr;kma4y;z! zuXbzFZw|VxyKTHD9>bb4Wr|b-0G;MVjhkAA69&&#Sv@52=AgNGmu(+eu{MXTF5S3( zV?^{iiEhrVMcPGL9s6@&fZMO+Ju>lVPkNTRRi(~IcWIUIQ0AL^=lx!lH>MhL92c8# zHVW-qQF-gstZ|?00VK~qx>Y%@?pw?B&TMU%FAx6E5EAOTASoikYSpS=U!Tv+thju6 zY3}x*ps^k#m2*mb!)Sh%SuuosxQ-7W5O;I)1&AW37^J3ljb!)36nfEvBloA7kTX1IC{%Ljf z^|4#4AS?sWFz1LRz!I2K(tS{ohrolm^B;~`5bSdV!~-a{JDZ-7u>~?i#c|*U15$$- z1+XWSGn#GI2sAD@dpa?3VE@I*`w|niCdWixxo5k>jHKenn%go{17L2wOHBq7wX9{) z7yQE3KQDfxrK5Xs8x}op+9Y|Z#Bwd3K5^|;y58_zH$)>$$R7`@9g++&CSf>7Lj#1n zB|{FlT}z6pnNl-VH~HE|7$Vm@2TG=GixPq}=w14g!fmV{)H?RT5p(dOk^#qxgF^nC zPmo(nOiTnw6rig$+Ub+0PdAu<4wg&+{jKJZMTO-IScqx?u@$zzVSNCQF^q6VJ?g`U z4*;^=x_2)X>{{E>3;?(=TOl@l2elcXX0Ai|KWp={g*-sUAN_U`08WEe_uK;qER2i> zg%(xKehsOkfM)yG#1tglS+xh4 zgTbF!U2B+oN0*bZZdm<^lX25RZ&|lYmLwA{W-V2n(lD8saF*Nxyo0TJqb) zK+`8~zs&c{c@>@-Z{E^4{==b&_N!r)?H@&Wf!F0I+kzqfFYf5NI$ZT}e|roH?^MVISisK+o zg80~HbXfk)ii(Acn1G#edAx~327nhg5L1kOwtu?*a>DJji{m95Hf#X=OC*3r zNJf>zs(9a;Y=`4}jO*L6X&8feBlqmdwB`YT2f{r`5^UZ>gH+`ryao zVn1G2*PQOBGTSHEX&X^WZlJ~g^NGA-j;5P@dNyr#pQawe7xA+-agX^GFHXK zP_b?gU<_d9;Nrw>RXJxeYfO2M9Q$o^v(3)(;&26^fqc0Da|1W|j_=U=tJkhsML&7v z5~^bx;R-Kl)ZIS)b08=iu#}ef=Vg~C<00m z-JMF8APgN!2?$7ufOLbDFm#D@cZaA*clWu5@qN$lylb7c&e?zLwf3{08NPFW@3^i{ z-4m0OTbr9LHmy3Z6kS{@y}T}slHR(N2^etHJzQInK9Va4E#|$Wwb}=BGU+Dp9j^ph ziyvFp(g+C&0XqUfzbK`}@Z_W=tOHOb$Kj8Jru5eZ%k2xN!>}KHd>%d>rDOW=?03z6 zh#_%V)YjlfrzLVTa*|VLS%=qQosBn`c)Qu5)qK;v9K9sbVeXVKvKmsg^jX`vs08VG zPD=k1AR>@)FG+ss9@-Z9bTMV6lr7Ml_PYs*xZ}Eg9sl#^&%nN~6;%sujFdc-tg!5y zS$$bi1AR}=(2%D3s*Jiiw^mbE7c*ecz!Wt26Kr}>^4QHcQ+h0~u71*Of-v`A=U;8R(T|kQZjIFyd9IEed(Ngx&%t^MCpNVQg}s!&`rV z(01x;bUW1j`I`!hm@(fx`bN=7Gw!3TgmL-a*R`n}LGGQ7w;r$TILuuv>Bp-o{I2i* z$YlpA4@L|0utn(z5ULl5J$jO3LdIUDa#RqSv8v&N*}kMfwRv-v(E>iw*7OxRnS@(x ze-C-T{YRtGkGB`_u4Nb+5YDwPbeZpAcQ-=npxVQ8?`YjJFmm9l8qIshZkX#j{0DF7 zJ_X}i-@Ce1ZK_ZS=gYBy38@W66=AX!taoSL*Ec%s*2G>S$ZcO_9m$1((|h)B;4iUs1XuV5o z8b8c7IgzR)VZ6&K3+93K^>e(Y2&ZeYEBo&^Kzr)yIU1Id@gWbuk$e>Z7-dmOS z@E1GC&`;#kuBPHn~n;iH%jMtgD_*|Tn6zXYwJdhSis>^)bPJgx+^N1FdP3c)J4 z^oQt7L=~n6-|FLy4+7Fybs0Sajmf4a*cc5^X1o2td9FQu<#!%ckwUh^eabSt zKdsaOsOmwF(rQak)4kLG#+Bh$CEMJ~Po-t&YW-U_95Q!NX?Us>+VHI>mReJ8)1ixV>be;1{PQAIZG|vv2j^ zC-$AIUkd^9hVeMOwN-rV*6rKew7*wZb)Xa*0^u`sCiL4V)!@qL^mO-EJ6l_NI=X{6 zOpGOZvLg6K3qF;$X(pG6rDhnf5=kg7KNFze7+aM}I|2*77C;c_Tl+b{>Y|_kQn+hZ zuc}o$+k*}0>0Rhe(Km_ui6489qbDbm zpH^h$Azz!M#!ha+oH9bcaAE`hfq7@px?ohLeTj<$831@AYk?fkRGfnpqA>px9;voiWmk=m1pEhoCVI7xC~A zl&)+^hkpN~uiQheT6d8C7XJV|N|ux=)C3SIfQx{{`~#TN*Nlw00hC=3Xrkh42X(>w zAQ%N|GMJoKWDF`YsMt_S%+p2^-H-8b8Wt57Gt$#jMZ)ME93J-7$t0yhvw7vp6`r4C zNONOmj44}Kx0|JH@i-&#I`e`ZYlbL5)pHt+J2$S6{7Fi@45xx4nUjkPFmEin`8w5Y zuG)Zo>FeLCmMqT6F^3b_jz1jH%k@DGo*lHO$HB#3;KnM#;qIxhUjn>sXM1~MVj>;k zD6jY6#?{lM+EWHW!Gy~QKq5h(mwGQ$>=U!L#HGr%HVN>mLEHcHrygyAA{WU)oz-kx zBpV5abves-v98}&qi$FpjCB27%uY;w8E$a%e6jMOoesp8s<4)NXwM%OYT)bWP#K@S+q7DcU^qMO_{zJff|J3%bh|=R&USD+V?W&{$-J?gweJm15&%qN= zQzLNF_8)>Ov}JNqTU69<;TUKV5MYFXg&yaP5BWib{tsX1Y(rDnp#BvHRqS?O73e=e zdf@u^qF$28uL$3a(Q&7|r06)=j%O9_pQi&=+hB97M6coGScY$vqaCn@t?6KHXlqYu zS0cm{1W2W-pilz&J2`nAj9K)hO5o){%Bw6ajA|bAMHeEtKDdH{^kZ(ShnChvF*%Ua zVk{t;{4sO9AnQTJU%USc2fP~qH>I=je+0f3Y?UClh_34b9Sgt@so(!YC`u}TNVmVg ze`si`K>tSvW=C_?k0myqu1;nwhnghy-jCwL-l<=>W{c>!y9xGM;kh;cJ-6FaN1ks! zP{2&-2qnGt&F`mYWGpT$jE;yt3Wn(lCOKa`R{@Wq=YW_IyjkEtrbdSd>|Ok6*)+Q| zqNOdIUtYAMMQ$?})g{2!M2LZbHbHx;KiT<^5M%|1g{MQn@vJF^HPO`kQ`g`3rmFPW3*%`QFzTq#coXq?)jAFv`Oi339-g+D*Km&h^Z{)1sPUfhrHJT`Rqwq+ zmhV@`?cqZPXfT6Vc?HGGoURRim} z_R4utqaJ}=&rhFGxT}^*F%U!@c}>qLNK%|FWJQ-qN5jpf_iC-~;dXV?FP!hBL#m&` zy8#~i!*Kqjm00ITFJl0yNM4!)9Mg5K;bLi~hF&1x8$cPQni^?tmX18qgFdO5Pv!Am zE6;QfW0v%D3jp}@&mHZa>U^1GyOqO@FjKZVnX5**YbH6WqIbNP$l;AJ*~Pi-JQHvJ zqbqL1@*=00LwobdETG|z{OGqul@mkuWv~+t)=yn*~3T6eHT&7-g6jToG`Ac;Q7q%0+m#EeEXLy2pB(n_#J(SQDm~_^o!Ek z5XMYdkwaTi?&f%}<_{}4_}1~z)luL;vsdW#LwFr}rym9PGlh;jFLfvz>+)M(3$`0` z%H#f9NX7blqQyk8QW;*&J2clr?B95a<@(07c7fV^8sHO~DDvK~2w@P%LxJ~~b`<8p z1Os-==LT}{imlWC`+a})Jq$K5;2h})e?Xpcu6?{va92Dv%ujivcHh#_pb|8! zJ-0KJdke|{PbULlFxkCh_c7e_-|BY(I=aNr9^!Js#nmUS`U?*Vg3tHSf21sQGW^6F zCF9-FH?ix3Lmste$e~C{UVJf@XYMk8D^p`!qs|I?-h#X6{niIfX2KTs`8wv#eQ=qf zW;gj07P_h%U!Sdg3=(s=Mc#b&6)H$6^Z@+Q5Sjbod-MDg`sMs(7hK)Ny!n%j9?ADd zPJg=0>5pN$z-un`82`(wcD}(?AXH{|_C}bYo|)1?mpC@;|H?bhgV!7t;LiK9LQjk- zUsM`#^pxlLqdIMDHKwvC%{z(`NiWXKs?+#m-dA4X7NR0Yqvu~E^6zWt%2TQ$yHWeu z7d0yO3Y`aEA_}xylJA;rew1B`zl>lSrsfx~kLkz12hHQ?{Qhe|Qa*RA8odAXBEZ8A ze1iXGofiIh4zCF6cL$lTk&K9z6leo{?xr^!%Q#DXw@CAvnI_JiOUk+VjQLh=hLup1 zJCdOR10O{#O*f#5p{TIAzUb?=hA2dRl)Zoeno?5c_m#;Fai#yw`cc>Gl$d*SN2-y_>*8G65I-~ zuBx(fC_64LE_g<;PoSCX>+gpR@5fgV2aR?3-L33!oi9&$J2~<)CG@C0o;kX`RaM-2 z^Hp)w{T=th`5W6J(HCULA(zLpfcCe)^1fHAP9#e zDT^Ew51$y-4ZuhUj`CD$4IN|SImmPo<>BSw>0<|7B*;|w9abkGejx*QIemz>7H37g zCQNatuMgk<#in1p##~@eoy-J*U@MlYT0=F~)n(!&XnRpd3>#|ETTUulr~)}}aqcd7 zj1yaseqjn#pI51eqlk)%C^uEZ|4-G~8B|wdUKYs{kV2@_-?f_aRQ||R+EPlnwWFja}(M4fiUiah*v}?sWUzJ zKfr4c6&cCR%iBK;2nt9_OjH~Ui+6KSRd=%1V;X#2ZNMsk$0J3^-Tf3$ zMIM8C872;-wo;`B2(|#RAAD}!l!Yrf;xDOn6t9uV^sDc_*hqCOy-&I5BeKFTae>`m z2PR(E+=o+t>aIRYSRSB#kBHpuxBF9~x`Do)ds7a%W>qdwQR-AXM;8$4*b8@-^AyG!SnV1>5&h%Gb9+%0eX#XSFxw@TznOy)TSHS5Dn)aZo=*ip z1{_bWx$l9H=~Kbh#s(G+PRcti<^&E)4WROnt&QE}8tf$i5ofOo`2g+1F9BkTMCok5 zp%02=6Zkmy7s=<>Lq@;bA~sCt4)EZ49lg9!3X6v&SFoHfe=P7So!DB`S*xtySd9!1 z|3MqU0)!t(A(cR5$H~C~{Lw2@)=;rx=N&T@Kgp58amiWR15gPK!03nORk`{3PoSz&0%Xsqe-?_}Q61; zB-ot5w+|FI@y(k_B`HGpDMb^yy1I%Z7n>UzKB(!#oFV-1g6bx=4@ws}c)Z;&i`u>h z2OE`*u6!#jiX4zdshT3N|zlNLvHDEkbGoO{{A(IqK)= z&@P*uG#WM!5SvZtI#qrQ&f27=YAB> zXh5zj8W9~0+zemplU;He{MNcU&tUB8>X**#xk}lmN)n&U`)|gMF&B&5lOUgmkY-#g zZKxk1yc#yTQh4Q27s%48H=A?-aT|ZtJEJ8$s5!9Y@Q;)}#Nvt=8WpaS~kh@Q(6*)tBRN z9ac~HaEEBO&_OV?_&QgpQ3+pmHzj9dkJ}D{FY5JKVm-{riCcS!q4%n^ze>F;_|s?6 zRa?wcjSJ9=o&Svaz6YPUwTRcrG3)*$FHHzw_?voiYG~+q7Y#cE&lw#rmzJeehOWJa z$zgjBwK@|eRnK~Y^(JC3TbEaGYkE0{AyOp7 zN5D_1D7KT_^;O_^T- zo8PeIP4m_}Fv2!M_Ysxu)svR=yz0!EXj&daD)001&`3sZw)r>ANzF@`e)rA4d0G=EdZ zXtENjaA0GjYNx{Ri4$SE7`E;(gOSi?UbJ`U+HH&2V?80{MSuU*sOg=n#}9Lwj-y=clylT`|NihaPt&YDfHW0mIYZ8$CZ}gDyR=8rnn+ z#NmO6v~+u-(7{AS+;^fKO9R+CJz1O%f0cv}OTq7--!iq~o1THy;Qb7>sGmj|=$|cU z+PjKgcwCO~QL@{)E}K;u*^i(TZ*btkc#IeFCcj7=!5J33MGj@F)GhS8qx-t_rdGQf z_3qktg|f7g=1JO1FtNv6(p>#6Vf+sNJQEc`-U9zO#^X@*K+}{~>`jp0Lk)Ct{Ik)a zrx%DQi0yUCrt9F(tjF?oRSVp0s`R>mk0l84WKY2WGYEDI}0SW|;Nt5gX6^Q4~b33qV6 zD;3h&SzppU3G?3D((nosu6#~!@J-Xy&A;GG$s#UO@f%y2P?y6;jKtFT)7|^0k|SHo ztk_nYs3m<&i(U(xsm1MQ7vjI4Re%8xxEJ|n4+#a_4wWp;jf~Pu$nR58sU-m@B%YPO zCaBm1MB749L4h1?c-E@2D(A6IDA-#I9lc9aB&hMh3LPAbhunb>q#aTq=yfM=PzoOB zH33se{5(>@dTm|W49Lj6wP|Cf7sA3ex#DSkzP>X9uR%iNg-z`7?AZnOt`e1MR)gZP z0i^%1?n5SmT`?WgHHwkjj4k+f#yAyjYwQhz);O}(6fRyE>zC>C+Y!5mT^kc0+~(%q zYha>Y6UO2BzWy{S;#U{UTvySJE;#Q3KYU272Xp~CekD#HZ||?VwKci9ol3%>wS^xV z7dMIGRbRd=GHfS?*pe$({J^mUs8|6x_{Ty0-bO0uamqKW=jK)oz6hes(cN7HQVa+& zm0S%X3W^%wcRvmPW>o+7$1^NC`Zj}9fJ1KrIi?_t8*0_`*6mOvS$BRAQVEnPbm~@3P5S*5%BDPY@HxB!RICcfufeyF(fs?@i;X(8Hd+^fZV$@2v%@A+y;l$ zqr)nM z%3QrhT#UfAL+tP~WEux%nsRxRGN`>~M{=_k85Vhz+leLc8jz8ansgAgEqt7idR_vq zmP}wVYio7w@u}<;LsCrc69)p{pJ>StyVydNm7V=-Xo=s4;AiK9sP-;VD+BJzbr;cn zRQ09+r+h2_Ez=7`>8;q0y7pj(4Hxv;P>Kt40^Dxa%Z`c8Jna-JL?gJ^3) z2Z&ry6@n_;kO&eJxVgCCwS5Q*T7b70PP1&%|KTH@zNA zXijPipc;BHPA?aW|wV6=H$2N>MF1;}11L@nRbw=vJ2lfmDlzkg9{Z8~Vtu5b4WCcuJV zQCVF!wXH7xIJ;~cKp-*=#nBWWdPB8+P|8o0;sa}oTVG!v{#~>@WNUA44j%!-0>XW$ zjJ>?PIwhcn1tA+~ApyX~qeq1j)NTPVnWkV0pF|)^AcpR`;Bf)G6Z(!=&PS^LX@62B z0H_|g%TVdyrNqZwU${Y~2U?@`PR{9(v9UfIl(hvO50(|PR@pk(${EPx zNV%Ohsc~CCcBf3)&6(X_DpE#MQvOD7X?AnVU#PUK!dq)+{B1K8jJt^aSg|RP*x+i) z_3J~Kn1Y%c8>JHj;(UKW*$n_$HEY)U8yy4^gy^KWSI);&B)D8SwucZk{VdI4@UfgYw zS_|Wj&o&SVQ?6xYY%D710OEv4+7&NiLDc|;v|viXE@c65ufU=qYSWrJRD~z$u<{QI z34!#QIr<_OZK5_Myc17j22e44jW~rgHk8^88}wSnu|Q!Q9vy+3f$7Foh;syx1zCqQ zGBcB?{gH(?I9+V22+3Db1)%j&mzTfk2BP8^*diCNRf4w2R-F%Aej4ErnH6s)y40N@ zDC+{6qo^S`a|@%*2iUWeBnqMRmA^mWmi>6jTU$GJq#-x+TVYiDko^uGRIeNJ!gJAO zJW=M#X}Bkcarqz%TLCa4Nh%?d9+WUyodq~}c(5?iu(wAiC#7Ry*_&pXZqL8y|Lh8` zPk5>s-$~eP4kd#!Ey1G%r`IHO(W6ooP!&KmP$4F8y8oL-@)N`}z#d;1W2byP>~TU8 zS7u#%qVkZ?+0n752eM{(lCZ1OUxNy_00%OFj0uT?1ap-F{UCML3`h$?!8mqgZt;Ed zw`2+6-Aqip+bOcUHZAM*dU>Q!y~s#@T`PGm*1AR>#}m)k%1WlPh}*N+6j(L8gWJGY zWGG!x-)dN}!7gLY+=<9dDolIxjQn6eB}9!?18JVUl8FeA`2~PUhLdf%75I8yH`w$~ z2-{B(wpp;Qvw{Lry+`tor_|PtFT-fCa3y1Poybz`%lxZew@X{dm7nC|Z|{MIVe(F9d5F z4Q#Bf^PwS>90Aq^gdgt*zh-5D^3u={c&0&@2e&(;WO}Zf^4vN31nv~raj<9CT&;4l zvP>aZ^rR}o3qmx=1zbPVEL%;KJ*zEUh}z9o&H+~yDuBVK?HVsa@+%0Kp}MXHVH4!V z0XgKus^7d?n%1%qRi2V^pI6S=`4D0%A$RUlKmw_Hp+O_aX9SOyi)?6?#bgY-huUYK zwI+)STk2;8r5o#d3sATV{7!nmxI@wgW_$`gQ5HGsX^%5E1%*CPtw^0D*E~`y@a$B$ zcI_Ha8>6)zXJIsw92O(%P=WM4XcwxetStJ1=~RNrUQ%8-&W z0cKUMdXcXNoH(_J6%8mNm6QmP-Ay0IGHii5!)&6GucSd#DRM1Hyky%4lfB^K{Cyq= zvkkeV;^K%nt4@>AU^{h%x6FDxYuK|ck|t>y>=l1TUSz`pmK8ivdPoR2ReUv|8+nM)x?>>C1QCvDsF4^24$3Mt(@n=6R z6v#fTic-VeL=S}y6$fn&MJ!(Ip^oVG&dx!E5D>(4kMi4xUW!6Da1-5Py)Z19a8HjP zecOtFWdYx9gW(h=~Y!!08Rqoy$2lX7NUov%ZrOBeCapQ zp)^!wVt$E~z3dTIiDb$w> zPhkhr!sKxl7RE%1)Gl&bj69Ve9Ungf{c&PVh=bm^bL#a#o=X$~tA9#VpH#cL{n@?y zeX1aPgQF4Rm!T3Gf=q%6BYl0y5Ces44Ky#1H}&)9Pt*Q%z|CNKMpg7rOhAUH?cpnj z$iAzUWo1xc8yXwu7)hC|?>%IK3Fs?hPr%OZu&MAZU#z|UO0n-__STH4eNbm_TF#wkRr@i-fNaOgv&ilEuzEshsr8T zy|cO5Pn(U90{5=+>G4)K$Uw`vle93P5}24#D|ydR_}@n%CtU>OJaM+f%*li(*4aNp zW_+oy7b5KdQQ{&AX8sVnB~~R6{?jL`4g=<$GX`J~ns_3rW;s!oIbVBaMc6|H&M&(c zq)m)zAdP3H?);u1yd}N~E*C4p6GR&2mPHyw+`<+?)Hdt}qpgzkCENhw zhm5=K?3S@aOBop$*n(*P@B)hKueB)uLc(rfXgD}JDqfogK|Bkphafl`Nr&!mJhXr$ zWOsM>8>;t%;wAeTZ0K^{6RMvM)yrPr8-$WnMp9Do;abZ$9BWYJLhxgzD4`RGzRBg2 zT!-HZMZbE5#T5W<1it~4zW}VUO+jRImwA2x!(PrQ*@Mb{0M|AL?nn2nkfpy|OnpIOVDoqMqCPHJHD>$7mwz5fjD5y zC@g-ceqX%s7UITXWn`4HR|Ic()Pf#0K2{KQ5G1eP47wbYw8-}NA^xiL{V^RLmR-6p zT6x~>l%`GK)%o$)IH)Xg9G+U1g`9?&S*Az>_RY7Ku4Kw-Yj+xrWbq$;F!wuE7p1j3ovdXa>9p@10F$Ktijux=2s`y${YG32QA z&YHKVRF>LEi*yY**Sh;?AOcI$yhb=(p9|5c0%s~vyh zc4!9`m>H9hxcx^^L@OH`F4|x#RVI!prh{s_8^S=~WHzNCdxFffS&_?_g40OjY#}3| zuche0bu%(%%irlGfn#O8LvZ>n*2B~?eGkp{PFa&3_42@F-CFNBqx(EElm`&R0d^$9 z-vbl!zkl(!qp^o#hrp&vSWWAg=rtvz5Cb?63cGr>Kyiz8kKSEgu%>w?tF5aG4+{&- z#RY|h{@|nzY=p%E7F5szqny~e;xaP35QPl=68NY<2M<9qbqFQ5d-+0!0>2@FUNX+a zO5x$$tHLkB@DV$^C(6+M8g~Cj4T^J+ZyOjw>6|3j(gtsk@G=85pKriZ8^bnG=E#*@ zbo`_=Sga^!v1LBpnQQk&)jgU#^1Lj_NCk0GHo0(!;^SXQt^q#1GHp9@?&#OM(s(Rj}t(%TrO_I13GEOt}xQhXq+XCJBneNAB=ndfurW7BlqSZ8+Pp`izd+Q6m+7zV0!ypFN{7mdx548LEjP=VhcuE}j#M!73p!jSq) zObHh-;yUxqbiA4V%?rJ`9N#H@Sff+B6rXS}@O>405u*EJ3FccV7 zv`pkkM*TU;A}VFKo2i}V|kbGLMMnA`Uqi508;Kw0OnwwV&Uk(Mv z6sc9xkF@~%jcE3}t24YnJE&rS$i3c=Gs~aB!zgdew9DZVp1N zc7TU+YGdg9gQ!=Yy<5FNy}a!}Cmx|Ph8n!~lXtPsU~gKUu2lud1|W_TTPUgEG%|{bgb4gg5L`K&GrthM?>7{c{^z;BJG0=YK$1;bOkixsWgA2;d&1 zet^&Mk^~ut1s5dBHZ%!xaRHcB4|~3qLNb88WaBS<0L(Fb_38^GM!pjl6O)@{0YHG2 zH4Ixep3mmZ8^y^NEcv>%@d!@k@0(#jO*S?*I*T&gxGMDgc{8#ddJE{EAn+HuVM-Db z&fB+TyLvtjJ-~P!yFFk3ex*R>CWP%k2-l>`0;knB%83Psz!w3xijoo)mJ+<|89=*E z&(SVnQPI*8nGWx=UyBbI^&K9u=?Rhk2NcaY=jh2?LL$K;C}n+ncG6v(swTx#-fkCn zaK!)PTKsms#(2IfR0}_Vh zN&XMuT44m@9KbMY)*L301~?``;7)D3%j?%4W8ZR#09cux$D~tLmYVtpU@b@o8#tP; z01HvCSa5}S2=j*#yd@=J;YP^0GVY8?-I-}WJTw^lDxoZc zIw$+NF1)r%0KGgtXIcd^Wa1##U$@js``NR%8q#BMr4A~zOJD!Htp_w(5ZDZN3P7W` z0c|#9kyKRpPQTeaKG-@t%s<1w`X36elY6+mzJ3)Km&pGG^ec?ER=(OA8ZnTa#NHJQ zmGA!(jE0aFh{;ty)~d6zvLajraHl-ljqnTrILKxFV_QC^G8T%g3sQiDI7t68x(|qJ zh5!XG!U8U}Ary?7hnzO+fs1nF%$TC?`;g)z{|s4UM!7>)3XlbOyKM`D3cbwqGn=>< zTlyW*c#Kw+qYXgWgiLYo{Q2Er1pnsEOwXHmhQiMMz)OlYmHmGo{U$V#xYPLU4upy$ z2MxX!&p4;$>*h-?V^>^x1qy+q%gqi~9N|t6NY&ki)T#$GG;V-S!ZrbEJfN2ND3Jy& zA*4?kot>V*y(FU``b3%Y5|&R#0dYiQ1_^)}q~=q)ZQqn^fcyX+K;R=diy@XYdocAK zWWs^x6Xz$?)hOKo$I{YLzIG+V#sDpwu#Tc<~(xmNoij&K;cRdIRqhoj6^1{0slav z+Ne-^V6DJwON8wM&iJ&e+7U{Zv58&}|;fvB_Lq+14v@(?G z;NVnBEKKtpJWLx4)}UGj=F9nTJIl;%Fh{7?CS~b0gm?xLGqts}+;X`x*hPwlKHA0i zTEGwVFrw9ary-t4u+QY_Lmz)o>^Y-0$>L~ zmXshI9E{D&_Ss8q{U0RBnLx+$e?tuqpi@oipy+$7Fbm@7iRtOuQ&LL#urG-x9vX@r|W76*TJvO3)=UJq1Lg+I2l$s6Fm-tWi^1c0sGaQWj zfEHmjz;X#+M$8M2>bK~3m95KIbp2_)j7RKAd)jly%RdQU|5cd`JggZA%fs0tZ9=}( z&>)3o9WnxaSVaMY=ZLm&OsA-%*#)~BsMrCGftZ|+{{F21ND;PuZGd@ywUc#b4Y1S!`QyK%3TEg<1 z$N)!ZV<3s*I=(+O#B2d2I)DTIUk>A-@dk1YWb7Bf3Ixv%y1~?(vGc?v#_I?2d7Lxq zQn`N6@JZb7j_1qN(ABKBTK-LZ=Z@3{?7p9xAb{e{2XZBI75L{3p_JD3R#h1xu6vUX zuxbMQ?^@7FK6+38Rcv8J)uR?Pzw3DChkfqII2+X0+4RsxnRoqlr+*18>W5CsGTKpIw#oPavqKxGR&;BrtQ zYqSLlEeJV|5~DWbCLH8!HM1fQHDVuXE|lZ{^7p;X4`E17lUG;Ia=wa8*#=1O;!4*y z)tFcjKIS5WM(hfVOgT->_P<|EcO{F+m0#XrCf`wZp^j=tl50C$X};BD?PR$AK4@OR z4GLrV1C^)7uE>uaxIrtyb1uZfx^pP$c-t5u;FC4Jf<4bJ4z zH%m6Fp@3uI;&(Fs4VAt3Hn%&(Z9xVwS?K^Z65Q%kpvqrY27dvd0}Fa8P_FI#+keU> zf4LF?&@|a*8t63EhI%EVMEr9Ex&qa!uU|<6hw+NC5VAWzM5h!E|L41R6E3HM%6f*y zlWxU6zGipza%s-r2k$;T;M;KH7lj(Q5KZGS$Y;EoM$$uvntd^xjFRLfZOg!2XsdP? zPiJF>o-rhZ#lH<*Q^NEt6_FHWa#?s`w`p4Q68K{KbHKrb#)70$L}`n>QOTY*FE2AM zWbL7z)R=QxW&ZJ;O%SwYpx8?Nk#8y2@+aWlZDK~X^gb%G@z|GR72b^cBnNP-*0DK! z+X)&CQMO!4T*8H}t9VT#GV|p{ie|k03nvxRuM4GiINjG%n)*u@<0B9&wK|p{CBww| zL|5!Mkw@81=`JcuAUPsDA;=+qrU`APHTvn42l-w>HLd}sGg|LU!*B)VAaP(6O+*Ge;X8DajT?j%KGz?QrpSQ;QCMS69 zVR|YRX$9A{NhMphO7`7_&qlKtb>m6Jv|cpJ6#O`|sPXI&mB>qhn~612wO+@g?~78;hNhSAaOVHo z@-ga`*r>zT$)Qs$n$XaFH_N_P_J$s0tWtmX=HWVwhEWtom4rJOrw zeq3(t>)LyYJ^VH^Kb8tcYh9mGQC3r6R1tw_mb_~H$Edk^+H-^dId3EB=4%|!EM-9B zjMwralvO^WYkDlbTJ?Mf+ObuI}u=B&m=7ZuAruD-Bt8Xwb&cj z^;7hadKq$?VT*2WgOsAouV0Hn`BP8;hyk_c!r#9oz~Or{UJewWL?+rYXg1_;yHzI)lWu3){Am1UgS>40u4-|rXv4bQJoLiTjO}+1 zKNYmo2b`~*TNloOB@G%9dmU-ZzL(9Q)gtG%^^P>|jt5Ye0-AC^B{*0ooiXATG7kivH^i#TL=)V26+&{e77>?w5G^ZW-2x&{@|B2P)q`nI- zC^q6pC`pgF!NCp9E$D8*WC9}c;wHE#52AxX>IAeo@P9FE%Y>v@yh!c&CAi0I zJQorgX#;X;0%CIEGT655C`U-t*cI1>#HQqwlyU@0UNa_y`Ln(CE&;3nJZ-JIbJ&*^ zy$@8x4pYSE$=0s|S2|vTE7(*C*$KZx1dSNr$`|!rCP6_D&?jll76Lhe05Oj~!Rlu? z(;?7j0dHaUT4nmUSEJt(5`LqR&|il&K_rrjI>p0J_Eb1`1Rk2O*)Tw5^3ZbrjHbk@ zD))PA9aA22ZFb3#d%x3N+`VF9u$Q#Vp(NfdrQvoXoQr}>P0+G@?{qF7C?@&BKN{Q90S9WVt{MjP0fVM~u7oje1OsTk^ z^VH+nS0PB>|1~V@KJYd1kh&Rej!`u9VHGd+I6H+NqbH#W66{1P?+ChUv6OhnX&mt! zCKH#B-DhOyW&PwQb5V+8;iH<|Ua`Xdm$j!LE`NnS*6feeHSJV#rYf&ryY|{JD{N84 z|3$KfKH~u5W?*Bsri+Wc^oN*rO#^#JlpI_*!T9XL8n&5B_XKJ4vKX?Nu21#Kl`HgM z?~aa%0Xzcmu!j+EWKbnDeQ`+%NJWK`q@oL}ZfQ4x`o@g+8#W5<5po&@VUX?$OK=R4 zlJzxfQ&aVCuf!qk30w{;Dxbo`6~XHO%8#fdGRb5cTLTuN=~sVIRn4S9ve){X&00TYa#5C@!*Gzca|DWOtDA;I+KDEO9VNlm7`deX*KNhE?0#&!DDx1i? zM@vMC8b24suFl{iii|pwQT7=&PxP1R1hb%p6vN6dUhE!4DTH~0BgJIqA(wEpREhhEGca0j-fRsFC{1Ejq99c= zvPYUFj8s%YmZCl)HBw0%w?sR!vt@0oU{8kW*<1p@26Qc|_9UI&5W9G8Kmqv-%7D_j zi`)@rvu(_$)X%z|VQ}qw+<%|>?rpfJ*XMnu4gVkPLvg(n%Lx!i0{M#|?C(*uZ~ysr zebHtmd6!EVnSURodT{L}g#zhOaEicz{9gDS(KLt4(rlaZ333Ny&oO&s&-C_m64uDO zJNHMeL!|_s9D*Rdj^N+U_i4!WQLPu0Z1LeNNW)|xe=tr~aC5RPNTgMVAiGLP#k|;Erq0Gml!n z?<~ceuV3M=`Lor0O1Pi%h{oUU(O;cL+?AFcDNBc~u?4$!q5z9$4hA~B#5%(Ld-zpsT7RM!2Zq#s|u7EYwX0zuZI*-0(d_DWImQltP)R$7Xx7v}^3 zmLtvNyFyVjT<#xXEi%?hUdhSESp2Y<5f!IKm|7 zAZgR6ph4{@>v`dL{vp~rivUc52Sq-|^V~f1@6(GY4)pMhdKqQP^8Lft#HRcz!eRVM zM9!4-HE2r3oZN$?^Km5Y(B%`_#8k{fq^UaA)7{22*~hO+e-LDx{qXD3_-!p4hKwN8 zfiY$36;_jQLd+c>JM)V_Cl}|@+GUK-6939Z=%zNCE~qePuDl7%`OO)hm0V%?T2-v^ zpy6`Or3)C28MA~B3Ks0;ugh+rJTD)vqiZ(uz`R@&=-4WCdv1Oj>agZh6qYQt6D`m~ zHMOYE4HKyfZd@%|T(z9#g@}|}l;~H;b4Oiqa&wc3K;N_z$iRJg+8dIyfRvjiT|})W z_>UAndO^*S%4_c}A`9kLuWk_g6c$w~?Mhl$CbjV*cJ79^=IPeTB;27 z6U|*9$E91l=J$PqnpV7^v)vZZdo3>087OG}HsYi0oKCQY)J_R;NbZ!gd9 zE9=C|*i>J(num);7T7pBOU3=QvCN_j)zm(Zy@gr~{1HTLMNj?Uy5GFTAqdh$#APOZ z&T-ELx&2VT;SgLE2KQkH1jMAZf6(aRU|nBrVUVqGHJ252xQ}x7{V%h|qMjqN;AHmt z(R2D%-dm9`O$<%UwmL2Nt?R>DUjdR556+b7v(r5Y-i(fo#rf~zAU6EUo%Qv{Y;3<3 z9>iq6i;Pr;8+`y&0}*M|r@m)M_A!1MnpyZ|Q2v~N1_mWP_W{u|FclzIPT+Iu8yezZ zWd+OP4)89?-5>|=(^2YFL0xYKbjnw$3qVtmWy|_N*#l^076m6Y^(&C(fQvbu9vd6m z&KvSG%4Q>Lk7plg0Z;e7LJf0N?`?2&4^%#?*?&iss<^zc&^pA)$(ccyt5qK6`(%aa z(-~aVQd&@ucoEkg;^W3g=>72)@pP@{a52TS4wtu*M45C7ycoWURV8xl%t}n5)VE%F~W@OELq__Y4 zU|j!;-u!YvGw~ws(VX(=m54om(a)U!-RHqq4p-`Nr&mcBwga{TrZeE-v@l3DA}?Ot z;d<>k4s~;x+Y#c^MM((>7(Gi%a&9Irk5gCVJ1Yotga+l+EYPTM+t4DgRf*3*INm=D z9T-&VU-+EDXqGuFQQ#r~YmRU;ChBt0lx{HVj@f|F6kc|ea=|eP@-b-UE?x2h0k+vL zT;r3NsTTYQ!ex7U3V=_xw2HC~?v#pMXnf@1^(;XY8(=bvz(EgiTzn3`W4#=)df{2trv&8W&(wce8eCHgdW z2xc*}y-fw2s8z5U#B2w7LT0f2L|0evP|+Js`cHGo&y3z&2aZKcTRW>~e4H0p0ieMU zZBSA|v}PlM4(w{1n`0291BpOuY44;vx3;&B_iE3icTjp~@YAzPKmd|$`4^#N#pgeS zy$G~CCsRy z3v4<7Il8{zK4@H9um>2mA3rgGTdB+JmxzUTrq52Mi%%gK`3W1_*49?aq^a0KYQgVs zGQBiWa21D5pV+sX>E^9tV~0@Xf&JWWl+S6?TVw&a$c&jZk$Jm*$`(|f?qHKU_jgU& zhh3r7=D$SxY|b$o{(mREq?)qg@OsGZ1%KBfkAuvex4)z15}4)-uRk0ub^Nyl}q?<>~qrcw?|f z)a*^UfaG{#byX$jxh_Zpk+!oEkiEn6ANxKEbdW|ca{OR^^e7)FCHkHi@R`7(9`x3R zEX}7+p8_rMF-$1hcwuc#R#rCSw}LdpJy_L~a{gduV(OfnJb_TE;(Q@)TxmvP$ViGo zjAp;H9E96S3&64tdbLAGh~;J$8j=q94q8Q+_W<3)+)~ZcDtFmqjw*m#InDkr%HBI3 z%Rc@a)*jkI6e%l&qR4K^DtqtDtdhN@LLnJNcJ|&OTN4r4n+nO^E9-urT)*eJpZj(H z^Za{Vou}hGj_>jPem?Kddnl=561T##f6$a~|C0rM&nws{Fcp4JOW>s10%HPY`EL9G z(&VLk`AVR~Zc#C6#()TBSpnC1Uf1{ax#E#xUFN=caYtSK6zNxsZCOt>5J?JDXjre| zZ}zHzg~bf$_0X<}@V-REksCoT=<;uvF`s;X5lJToAD~q?=lKkiBrbia=!>5wFg-_a zgXE|CnLnO;Zz;4GUwNp~9fMAxi7~I9e(d-+CJU<%wc$L09=>;y!nq$%LkOczY186+ z?o~2(k@~Rl#S0fegZcoHg+%FFIjJFEK_;#uc{o7KU?oSe9nO0iA$<-;Wu4i&do)zh zxyK#KKsTLnqto5vnMd%~r}3;(JQ?QETUHA!ua?QV){J3dowi*`I#q591)6xvu2}+$cFx6?PoH$b z3J`fo9f3rpcScRM-@k*<@REuz0mGx0FS$86C2rr=+gD7mMDW8LV-}9&*hnl6dbqo* zsG)my%v39=>+6e>Xs;fe!KTZ@%Zqs&7fa#$_jL61FYNeIQgB$q8w_HU>@H>nZX{>c zMG0+SCKPiI4W}c5L{vW=vqAOIT^iHpyhx>FAeAWrv1?5YW(3g}2wA#!rQHOkzt`7G z%`;heDdkoW2CJ)>H@htT+QZ8v|MqB&f=*&Ut7&_d8#4&mPjZbhGDEoAA@Y#+g}czWv( zwwO36n^|^^-C#1Pz<3L*`|&XiPW6w7{HYo+$y}pVE;&S)a!i^uF)bc3er+Njp>EX-dI z6B83yGSD_kM)ETS*Nl&ik+Ewcn%Hr;k=~u-D6Dp^R+n5S)CoyL&n9n6E5LIFGQyEB zAPRt>d;w&PT=DMkD-%J=yr<@&s(HRWAroe(g5ub}%As;)vRk+eBESNGm-p!TL0`9- z=oZ@+78WMwCXnR&8v>VQVdSW>$luVheIx5uM;@$>^sI8c5^#SIzPGV|@tgov`!cEb zmrFXwS2tE%H(rL3kt4?KU}M7u(!D95E25D*P5Ny)03*yxRm~46y`XYvpkxMV;YTZh zvvJX{t_DNm0@P+0{ zv@zOSZ9yLA`~o%8j8Go^IiiQo8DwUWp2Z_sJ8IXV9QPL60a82#U=| zv42%PmcQ41%n{jblohCxkCTz%04sR=_UgQKHuN=@XwpEMuekFxZX$P;{6#NfE--_? z_qToYPM-A(NFxZH$MAVMxp&|N{XlMDVLD2Xvc~rh*HSVv5^nt13#lf%>5JE|Tb@lG zZFL%c3bT~U!iHKjN3uAp62_RIwncUrYTglH8JPw=pTeg-SeyjK@3~8L&6l~<0>5X) zWyj1{cTG_*GszLi6z6)Rn) z@}@J|QasTo!;sh6>J`2>=VV5*B>tDTH?bo(aacs6uIVo`1?A~y`lBxUG@1N;BgsHO z=HB9Hh17aqUte=E?N%NTj__x;e;?m;+c3Evq^=PwE8Y<;j=R0;@`OYoH$Xj zE&SlU9LnAYT!{-s{QMYw93KC7!cGpKmTs#Q?2t{A3;Emdb1|2wuLn3+S7JYl!W?Wg zjCGBTM{xI1vaYPG5GF`{Wu;EbGrhfcWXsCBfV#z< zLrFMl*REYa+u$fApOKap*8pg;vQyl{zYbr%eM?D5@OZ6qtQDCK5KtfI zdf}0mH^08NqB4Rz+XjXZ$VQbc$Fl(bjwUOgM`mjLjV41l4}>+}k{Nc9Fa=93!esxW zZ&nkyMYlBG*2CTav$%!EeO@-;7L7^jk&_1_;Q`JC`+YJ<&@u(}&>lZ2(cYkd@?xbN z@TswpQS_|Kzd0k`YsTz~9=2}kXI%ZL-n9*_qxevA=l@AUHk+5FOTx-0-$cVd%vmdsi)QHH01Ag~O#^$6tkA4t;WF8dAr+#WY zdy0#36l6GT0;uD$g@X4swtOEo7dkm)kwl-BZ}$x~q0K5L!l-= zyx`Bl%%+ha%B`Z_mx_!sVOeb%@?o+EjND;7R1H>rL%qlB{e;i_q66W;-ChV;zTWcOu`#d|v|F7NV9j&8l#q z+*T@kU5BDC`?dh!vM8lR3oWP~!ZQ_vxDWBCk3B3>eGchUZ*Z*zf2igD(cuR|)c0z0 ztS`Ro{@-19XalRY{tOrW^PK!Uz!#o8^sPU^Q#c~Uq*1)s_g2d(@080ASw6yoYLZyf zMZo%Cb==ScQ=N_?3GRaG0lVzOphj%|qDTH>o&z?)9was&Z8lwxK7}|yjwxc0e=oyz zDW>UT>P|4RO4twY_sS$y{*It!!n}VZ)!iD zAk0|R-zaH@ecx0N6mCB86Do@pHMVzPDRXjK#qCaPg z=)aG}tBqLY1?=y&b;mH%$&-`*3%}Wm>idJ3ct2vgEgh9Rxq2!n-TTh;Pr_fbyYt@< zvkd;M60-Rg08+NSA}1U4cIBgUi8eVnImv}b&#T$e4)5IL9gJ>yxmDea2mr#AWPYKf zDC15o;Umsrb{q4cHsMEf%0{}o(-(aswe!UC;M>I2ANlX=`m*O^YI4?)xIRG_f}g}u z_z^E4b3fl9qDRRIS!W0TmC{=9th;R|DvAB?$~3~3-g4Y60Let!%l@E)#fu-7E-}jI z%b^dEHQxH<*>1gwj-~zP@K}^Lw6RfiSOZc8 z_r$DM$;rW)4Kz`uIX*8+oubWMU0u!0Scmlt4drHUOO;Qb_>AOrFc;(XKUY@DMIhNh zI1B;@W*!r}d)qK0@gGtm;bnAUVl+AN8vUepRR&6=H%R-}C zANXtv)hCdJ_1<-3y+$XFlb2WA>@2+G>p&YXdjEds&Yf}b@nQ@6q2qY|{7l5}-#S3< zhWCLU1C+bE?3*l39Qqx|V@ItcHiRKU{>P&&Xtg}}DRGf~pkhL7}~^5s7#(Ho2~=i|>Ks}~{cNY$<3 zS4ZEDqYFYA3{I<8o4g9#I%(?fKf<^7Zw+b3kxrv@F9#9%AX%UMNTgAbqvz;$aGj{Mqe2 zN*x)>O;XN6rs(1H!d9m!s8|Vnbp;A;T2FU()g$1v ze(RvVAU6+XT@nXu3_}>%*d{<{hcgXISxrq%K={pY2*?wTg8x->dS(F27{X@L&e)7J zCnHlDbYI*yVjX;5p7G+vY!s5Ltm9GZ!%;~qHmHt7DS*#xchk1AdIu>tAVmVEqH_A^ zQG%I@?7olrk9+$SBef|Ctbn9}Bwp9kQwp1>vu6nwsK}fHo`WmG9OP^Sco5;?r#LKz zS+mh{>4^YP!mBK%&3NoNELaFutAiHFCnbU3R2?A1{RYOwK-@kEjmewa3?2UULx{>Y zz2-DY2!uj%%y6KCD8;}JSWN{~OrTMNJeYu#6M!QKkQy1I296N_uJDyVcKWo`?meZg zeSK2n%IfO31<^0Y)rTIxnnLhRN=e}b>Y}21@1EVSkM5wRAQ=*#J+h2ER5R{=Bn?eX zv|5Nkdh~)Wuj+~T=y`sdwtT%N4NT5|93YrrKQgT?<5~GkJrX#f+FG#Zxqwe($KuOC z9i;X#Ev)oyL=wDZrNc08>+SANV^|<$OLY~zw1TzC&;I^gBqD)XG0-}(RU~nxw4L%KUgusaB6z+q$xw(_mDkufG?O1Q1$m!t|wWynw z&j+E!q092dK#p`}(RIUCg9&mW1iL#fj5V~jMn*&kSpAhQe1pc7lmj?}-;AipwQC>L z&jTw@@j5;^K3)o|TZ=0>&^v^NgoyFtVc_Li3U*y4m*ooaN@LuE)sXe!cD--sE@o8+ zs(Zr@Z71;#X$NllWYeh0O{U$DmAW(JqsALXxGhh=`M;m>*B}2lGz;c=p?b#S#~<-t z-oMZGa&bf<7YNtnusvyX*?2q&Iv93V*1YWOhqkut=g!fX7@L^r@3sL?>^4I#LYZyL zSE#J{QbI#JfBt-n)WOREx3RzK=;-|Z`BPd!;We(eG**%3h+hCuNfIimJ0qCTSR=RI zF$dEEWyYh8Wow@SHnficQ!8^YoRnR&c$oSGmH{{pJDSt%K;zklb)0=kKEEliqizWRNE z1syu35sQ3bw+N)8leRxB?1sf3Hdee22*%(5I&)T~{+GFdp&|5@RpELUxw#i%IDz3R zLJMfa=w`DzOff+rFcY<$riGoHO6U~Mv#}*?=Ry5!OMfx$tl&&b}W{`dCnTkHbHw&?vho*l;3qUVldGlQ1MKOM-$nJB$=#V(%y(65ro)Gt_1CKLx*v%fRB$v=jQ_}b$JT}{TwBdpxWiVrnAhV9Dx2u6-B-5R z@3@!Rd~H(Prqv)qMW1H_g|7=Kai{4zb_7g!#A!?^^_wL%c?6 zyKNFk9rp=uFY<=_`uxtVODptw{^RkrCyeJOO7LdjDG7)%SvfkN9J_0v#MCngI@Z6< zG@q;a;s2(mV$QHWVCZot{MQSd+>#n%j7RErCEHAI9{Bow1xQV#y_x)r#oHLuuJ z7r0Mc$G1`?84mU?@V!#_BgHCN@9TB*x&y%jex7*iDk$=F&+K}lv|ZVX93(vxN>6So zfBUeaJ+0l&N{d8KHkVJ&X0|nrn(B9D(e<}R_xLuiqqC(^!)3DiVRe^wY|f;G9j6r` zPGFRp5GO#?A)6wyBkFLs*GOD3C@ad|OS9oi{32rVwv`)uV+EonVsL3s{yQRMTmA-i zuNP-)Y+ZwldgK$jbYk)BH@|$EG>*dF{M6PekVrZ)?by0;A=z`{I@hbECA$!3uCSic z&&Fh6OVS=MbK-Zhu*lJ)kE)-XoJ{V;h^XCe>jsi33H}aj84CTHQ0#Z`akU;~Yi1oeU;bWB(UO`LwcL~A^VP`WI$<^1I}vM#Gs&7j0+v1!)o-eTOrc!H<~zKc-k%{yVOtBbUgXZ8|t{t zEA#vB%H+7lUbhSd_K4V?If;>(*B291Qxbb%$2Ow-Cki1$7cZ(zT!3sEe+m@HEeGE=YS{|&giI9FCNw8M%#CmKTeg=rJmr>XF2 z8*QGYad9_ojz7QI90R*UgcgJAU~P>!)qk*6!5oN!gyaT6ETxOF0gOrGCShXa0Zb2f zGT;l*#YPw>o*AY81SX5ie5w{b9o;<>6IXD@F@|g*%LRnT5dzo@KM3MIy-30k2nR_V zVLF2j!F8?8^$zA+l9F(RJ!X9iV!@@_zSBfMVq-3LbSi0%Jh%SCX=$f}n$2k|+dKt`KeUYt0o5A6SMFIL;AL3lW#hpM^yut&3qh7 z2WTNC!#Rx}kLOe!0p`q{wnM;PVZ(C)n%6WwJ4-Z>}9 z3T$u`*Bo~}syDGK>0*@BI@Z$ToF-lWEtaqwv@iX)WHc`gylNzo7w2$C>Nu!+8wU&&C1JjMzJj?7YGiMM?31KG}VvwKd{ z*%&taHfU7s#wz{*vn40NWf=SreD9iXov{!QM1TPH_?X{o3OYssN8(G9Q`P{yALOG@6k{R2i- zXlC%fRK-L^^}&K}ZZ4JayTtZlz}w_r&`^)fI@uFtIebm{_e75MzTFrF^<+Y8bFRg% zkM<6!I1#>YrUyPUy;i?x;*0eV2g6@Bz5X9G*1GPe`8zO~=Ro;o&7IE@9e%BGbzYY;B>tr}w2z`^e4!^{Sf zjYxqca7qoOEF}lI#jSH?wr04%XDn&*EAh5%L|i$;h1sZNrHwSCy}q=|pC;^i zM4JoKj<_$}#XHN!pzqY?3CPHBq>jAoS&CV80$G%jr{Dn@qhYqh0%n|l`?jvy-f&*y zu+iuVhfx;dtDUE$maY_>9>1Y_my_CO@6|*H#fc|0^r)F^PqR!dv2UdMNS~v5F;Rri zyKGezT=lhr{S{mbC#ZGjsAoUAhkH!FUEL-uvb)ps(oCZ8;>+DxV%GC*j{GhD{26s0 zoo#g;&k(8-qN>ddx~p7^2l77zw)zj-7ZIy8B@|u{YiElZD@!YS*!d)Dz7bnQTABaz zUcYx?0ZG2^D)gG7r`d`|aclezZj}ca!(%lr>4BE-#YWQqxD%uDd;0BYBRT7NpSs#u zXVI`<`-j(uiMXg1|3=ZtM3}_gQhRW4^M;iWZ@mucvW|JBA(s4lEDr`Z()zeE!X|Kk z^!jHEDaM!O%kvUHHd|M&Rmfegy-iq!L`z4uo{6RSaLbfwq=@Ds*+GHaAb+asM|-SM zgnft_63jf5x3JdG?cDZ5nK3UXpWadPQDwk(R7U^(XwQL2Z|d(>O4&9%@pHe;5{a@} z_dcEdVttY8qj}A%{#1OW~NBUcJO_=lbmqFx#6U?nikutq4Ke@KC3GIAz`3BuF z#Y+iTUh_2)+5$F}gFLst`~1+LLUrtt(svL{Ap3}JUFG4PVlGigo z!M!M4$w)dMmd#Y+Pk~C9Wote3*moLDy?>2Ab++N-V;LF~J%>nCY1+9Ytj|VNqxQM8 zYYhq1guEYIdlJ%B=XXh>+Hw@Dp_OUt<0`_olzZ|TG`^@de~v6BX%e<2CCW;Ee)D6> zpE=Jn%n2EM-zbkIy>6*Juy7&6XE)KK7n@nCk4$m@+HQ0XXFN9Gh>|6jz3@hXyKE#6 zKtA2^{mhhd)H|7QUrJBgiPL@Lyu6J_`^IMaBu$vG-OBf8hl*0)R{pImQIPlaWuLue zSG?Ze`X=XY^xxq0KX=E+E>b(UY^z|PKT;QbnXY{ovv>?|Vy)cafIiRc4-0^Zn zrSW*O-+-0DeZD8MwT_;l!-PPmpSfF=XIIP51;^~vxww3w#^^Y8b^C$7Icew69@#7S z>%zWFK?LQ+;e(k_(6&9S$HFSYFHt z7*SSL&G>nanB|`VBq$(N1x7_hy?OH6dvi$D&%PA*)43w&X+;d@(zXCmz_eatT}* z3al!UGC4Wq{it1ZD`}kyR5FedgwN4W5oFQNh6?yUYO);}{08 zuXn=wuJ*%+*{FV9S1VoBi>#{a>nGs?gcckyE1KZoM6~8H(5Ve~S zO&_B$r93tMHjfSOZp(k~`X{0w%WwO46oV2=PEMZU3MD#-5@2#64iW%`3=8l-R8Cgb z)_~`s(FeIT``&JJ^T=-ENI)f2RHUk*v4%qyWrGipe6fiNIsa0N4~To?HXP$K3g?)Z z{HcWTt{W~H{Qoay8MwmCASW|5RhN||jDeADKheztbOU%9#}Mj!Ot67$-PnyfV)YMq zIf1L#)}}SRxH~KPfUosU{l2`ZcGkjet=~j^h3exsQ!iV#dP*+zor_ir-xlCojXa!a z0s?PsVX^NdcJ zdIZlIpmucmTJaP0@=*a<`DZgpmyGPEOKf&PEUp7R^Xe(^JLU-EATlh@q51Xjj zab~TouS^bsAbtM)@#Du~Fj7T{f_ZIa(FCM`)Koqm9xN&UvN>Yc?vMs&CI=0cM=TxxkLd2`jbxle}^wC5{>o1DWCfsJl&!jjI@BsY4Jwv}@;1r{%$5m^Gjd z)w|A|MZAB1BXnvC3IKI`fu&c8$+&3{CL-lft)ic)gfOkXegma0yo6X*Mu@oh8y<_E zb68fct`0d8$ZSXh}ihRGQbo8$v zR<)``SoY&(Ci|l7y&Z~O=3(L{!6xn-2w?l9eSz#V`_sIfoEWax!NI8YySlmvX}h}q z4!9>kWIIf`n0h-p@MR&VRB4VtFo5=1+KnnYIa$m_&ce4jcd9BHYz)PPmTjim{Ojt! zyzdoPG?Bi@?Cm%fVqYn!T$py|8qGkH8c23TFSa_cg+M6@(GUASCGVPcJb>N_1eX;s zKyQkOprOH*kBg8~g9j;Ak5u>-e?PygWPt$z>lk0G0LDdZ1YWP}(XjPUQ&9==VM4Ml zrNmLs!>73}T=+S=?43~Ly5Rzu?yz4vPD|V}W)~;LsdMRz;#X56UA-0LMS4dIZtryd zd=l6M!+Z6K8e0|f!hz-_N6G3C-~nP2(2_w?h3_0RJB3Im z&UqdxPIDw&$Tf2H9J)}whWh#kdU|>e4xw|nUCYkcQwd|MdQ}#T23hxwVQjKKy`fkehC&+`_--6l`#0- z=N$FFHxyS+`Nj#cGnBrrACfq%e5Bk@-od}pvA&oJTVgNQ>)N|46(rB%HhP@cGm6co z()T#917b+0r_+)!F!%#98VqstUQPc|nyxOVU}Q|hk(&aazk3)?4h;L7$>rvJNLd+Ohcm-9s1ZCKRL?Vs!_I3!=N)LdJ?DYw2b$pl4u;xKo!qi3Jpa~sWUdd2UjL$| z6~_1d=nogNlW&*x`ZYqb>U{3Z#|PVWEuFq>-6PWyE}8E0tt@P+`{BI<+wcr4_7hGV zW%{GSPrQ5&pxi9+II7rpoRT#?+VUe)q4(+$%;xz&IA-L^**CX;j*R`c*3aMnHa~!@ z!?x=FG5vJ8-e-YCS8ty?cIlnKqSOU0%PywE`4)kHjGO&jI}PFOO7mdy{prKm|JYH^ zta9ggG->CPr;@@Vx2_MWv6ICny}y*R`-*(unPf)irt*vVmTw$am?E=w6A`1K2&=4& zi;^WY(DDmC8SA@?2$Aal^R1!2o7=J~_qYlvrI9|X?!b_pU;FHY)}4;{Y?GzIh+N@X zF$^0NmL*i0t~mK;xU%#p5D^LNyzU~QMA2gSj$AZ`xAHT(vxW6yW+EwtC{N$T?&(VMHwXgysMYH+HV>mtir zKQB5 zTY;qOv7w=AO;UoalS|b*Kkm{W`ubs?i&y3WgJy> zQ~g!h{N?x`FFKizpDD%$w&b&Ui+As|F-b4w&I%)c_DX|NBymW9quu>`*gp-D#*f|} z9LC%$xvNB6Pd+;ZpQLugYrt~4uwC78;Yi>_BjIQ7+Wgtu+dE|rS3*=qxOuA+imzgy`A*2MtuVf-UC`R;xTBaSQo1_imwz>z&Tp4?t-Zp; z!Kw>o5*R|HB1_-Rww#d?P+t=7%K1i?vqf@${HJMqfF6n(XVs^EfYc; zoD^3D51MW-IU7YUm`NE}_vUFcgS4ok`T#|0(h?L|09q}dKYvgC0w@2b1DL&4R z`}Yj5cd1w!^Cm>dISBQwdLE)u?eN|1=3{aOqE85A1e=ZuaSwBHpq9(k5)?|Tc8%z`5T2)67c3bg{zN_$zOjd; z?Zj|;-3N-!px%K?a{Eu{HGF01trH6AoGbnIVsN+3sj|P~S53?+>9oXeHasd~3>2sn z8gG8Kr=9h34avyA0+%w+_Hm4*cR7BqtAkbQc?~T^MU*xRJibeXVo^tzb5SemXDfpi z?}|8#B<%_Cbby{V6M+=x-3De`P#uBp6VHMn2>C8#CkUSo_zZSHZ*TpH&X0^2YeLQ^ zznph+=%_VIoJ-FP(%fUW%2SkzZTrz80shFMR6Nq|>|8aKFLJ&mtw$H%At)6k5s-$k z;s%wLe8J~>BEzY@K^d=h+SI3ZeUz<9a+zyDqB04%^~phz~AOjfuZ~Uv1)=|`Lj|Cj1px* zUVj90B2V4laE}T;+5S3TQkd-ERB)E>M6J;Y+^Q<-{)V-JTr&U3L}$O;?ox=k(V9P8 zn)-zaN+4{J38WznjUFH>Irq?lB_!BDU4lCr_+<+WFs=lte9trgGH86PZ`^}G5|Yp= zHkg0v`PY_gw)g^#LJxoM3|^UGas)b|S4x-VxOg-k5loAp@-<#y9&dFDWSua429t}fGigns8T4FiLLk%0GZ(I}al zH$O*htQyK54tWtSud7R|qN1*j5I;$(XQmFTo$yf!a#`ls!3R1ALZe+*`%e#~z6b9- zq`R}z;r@jFs~cq$9Es4bFGqc9l%q8P5h!?N4^irknVm%riWydth7${=4_04$eLa5Y zfk*FtY&1V_5a8-1pUyoz%Xdh`6k-XqwUg~;JV}n7KirJHJPvtp=hLT611?q^4^eo zm}o9Qe-nzK+2!TdL>-Ofg0lmYT0$Jvtv^xt#U?yENSoKnxm| zW^uF$;F(qrYylebu$ZOi;IOzB-VH&btXq%c%X1&}IN(rwei(MSeszEUCc)U(nylDn z{A>iy27;bGjuW4NtRlw+>>EA*%6_UV=Gwz$dKJ*Jk$(=Zf!=^M#WPgJ;n5rgYe^Zs z4ai&f?-PI{03ztGV6+NwBo5=h)6<;*UaCVQBdIxZ8%@gB#vjl-=a64!ByBe`HU`KA zL4P_%lnqjV1cO6D3g?;y2a1H1_0g9es% zQ+ix#gB?XuDL>79I4OA^&46ZSa3>*Ywh_=M@} z`w#0iSCfox@K*0SxQA{1{JuYtpUK_ng4JD5EDT;N{r&HLh?|CPn{wWgzfIft4SJY0FU>qn@#gIe$YMOh{HZbmLc~j9!eK`qR62Qh7piYxXJMS5spGIW1<(fG$Cl z!n7ICh+ZkYuYhNK40G#&VqI!{eN<~B)M0u%a5F=&{ocNnmXXPxGSEiy_N~^JK0Z+L z%N}DbU3`WO9J%jPi;Il3gp8(SuzcyAnGdq(kCdUO)P<#QsvhMr;UX?`VK zctt!)kfJ;(Qn>Fh1r29b?7sntso7bqq%%=~4WPf$a$U>I%*=$VPI6SZFVtu;bK_J> z?X1ooJvb(;FMi7I70w&c_3o_Kh8zF+QwW!rBpMGCq02 zkHM0Dcy&=TqQ{VR{{D&tS6&X|i^)CCmaEK6Z?jEq7cF`Jp>|YwFs!^Buux1jBEKyz zKsR`7&MeZ;n0~RE?cf;Q_bRTx57mFgR7f^n50H4r>iq4bW50!F_kz#bub8|z{~Jzr z+9Ey2)S51i`!$#Tb!q2e>pTCBHQwO3TMyqG_q;_Pwn>+}!>7CPl9A7PUU}UVxT&((XgSfFEb|Q`oY-kd?T%@NMeToF8=@XXq|8AL9ufO zNx5@#R*>d`VC^R-At`z2;6ZvvY$K13o8G(k9y5m-F^`BV4fFdkes`TE_SYl*~KH=78v^fafjx$# zEh=@Pszuf+^;tEp4bkQu6Jky>xfc#h0SH z5@UV!So^p_Y2Kwnfo1eu=}FV488gJVm`?Ke+v{b}Mf9Q2xt&Q9rjuh5=bfgr5Z1m+ zqI@Vi-|TO_5amv~O{Apk6n-TB8Nwanw%SkxIn;f>#5>+i_U$};~I z;RYhFvn{C8973;cSUYWHs0)%J-Ra#T<|ynP93U$N4hakmsF}1bDr68EHjy|siW`E} z*;R}$D``EcPoEAJjEz5>Pdh)^T^QIrHD1sM>=E@2EgxSoyb)pMf~15W(KiN8!aRhZ zw4Id~@3Ymf=^rq3S(DGJS`m>W9o-?CnwDt;TF?REx*N z1N4D9>==RWjL>n-$ooNB<7gk~Y%zE`bYHh?n#qc~1LtSFvST(*G1 z#GsH6kEG5S0O)7RgWVCd>^3qu&X%hJ#aqh?<`f~?othHCe zi_F~lr{3S@D%Fi2V9m}i6Z3Q}5-}#0VC6HPHnjNhg#1C*GNZ&FI=%pkIH`fS^&5R} zhHCbY-FN&fp6CMn8-1ds`Pb#q`(31W@>remLY;QkGYGmANanAYom1ia@o&WUjMMBo zlH!^!o!lQ7g*px>E!l54v~re*ufHSLeRoQA<`Q=ZCMs4xE4D%Bk!r9*%PQYZ%Irn| z^bm&4t0X?G{5I@GlXx~1k8 zbM8{`-?i7D_dldX!>l726D>yRc))(q@!8Ff`MsfW+sTWs3J4{vYcnXSi@p0;+$!#;=i$5gKh#uYMB6UNt(KbV&3@bkdI-2PH}>zT z=JxPlFcMQp{deNS{5h^RmxfQnwLP}>l_Qw*Z;tl2WDgZNc?ZpXo^*OJET1kT{vT)u zotBhhEAM=RD|^^=5=XZ2FDJ(L9qkM?-aAG{5k-yG)H&R)h2>VTYSWJ(sX?nC&6Ovz z=Tkx(4R`|Q$lzr`WU`Zh(GC8Za!-gJzf9Fs(@FdvD)uxc*iFM`?Q`W?sp;9-_w;1r z-&;LJu6lud&mry{@rhlOEf&ZT&t<;rT+>55QkJH`pJul^!3`UU^@K-U(;xZa5Id#n zgy!C{R#nFb+9G~Y=cA4F;$4}DvO4b69q3p(tzp%~Vs!Y1e9@j0o6|0kV+j|eZ`XRk zg*`*rrY}$=8Ix?Q*x)}+ z6CJpaw*SSup@ZzRO(I66lj|*2CpNm*N!PN8Dhw{N|GZc%P7=u{u$Py$(1Wdj`DtgU z>cG*+yK6D@-k;QZpJ1{8DF%V(G8G*z=g?&QRWYCafo9x9htt=P>5{uo7v38O7LYBx z61FP_DdX+1z+qcP-EPiymX$Btv^hmtXWkDNJ{Z1}=^tXdITRB;%04X`SW6TA;TLoY90MeQ8~jAF{gl0W*PwA$j{ zMcSe2l#@!r~+F%a^L9l1`!LDJ5-rp8xGT z1LDH8vl9AmMA2DyKEF%RF)ij|OQigAw+P>app3FZV`mt8T5z3PY}lUyfX5E* zP?kGwevQoZg1F=hr6*kkHjv`;t5pw1(Cr|(XNPs9Pors@kFp)1u(7QuBVNg4+3~D6gU68=QD+;o)l;mW8 z-|}*yjyTvCF)t(vtvw%EU7K_@%!9DH1@!3CpB%un4=&E|(^BhV=T-rc*W>Ba&tJd7 ztIh8VPyo-H# zZ#?peA6oYq#E*5`)#dq5Fmo~d4@8&r8uBY+9gvpSzCUmw)S#@g%WaVMz(55MG9W1k z{V?qnHPq94Y6`pY7z4l0PC%OFwK1Z6T#uknE7<<%Ykn8OF-AZMZRIpIkpY5_0?R7wM%lbu)o{ewR6{ITa?#3Gp{eDWvF z{i4;+cB_Sd>H-F?a|cfmV|);w%VSKGn|kTenj#Oak(2Sy9yzRVqBI7=8~w{MIIZOjTK*MTiSzYo-*v7~c%L_~(*iUA!MMHO#m(-TOR78Z7|A7bwu0B!saEHkL6oR{xOL`#eAmJ4o>xvLJrp>@w`6)`VZ z|Li+_m~mbm?uWN$P^cr+&CeMzVYlks4|u9v4=@8fMt zR2{|_r7nH&rp52qW+m*OG=xpa*gWiK`r*XKFQf)#VvCe!KcCk;vdVPu@L`DY;8Y`0 zl8<404yFN~lt(Bj39&Y4L?G89@QVilc7yp){RUZQkYweQK}*HJ;IV(K*V&zb9zh3J zQSnIn9GxX$wWh%+jKIc`Z)tCb?5sFR9(_Pox!RVRR%V*Gq;lzI~v> z6r;43@bbEu_%xnxb!q}Gc-yQndw;Uy_qS65$ z_bt=30@IG`f)KSzhF>`fDCzX+%#4hQ{{Gn5*jf0kyE(y?eHM);Vclo$DE{$78V?^x>4)?ZvyMS+l{T zI=&wOmEZ@ZlIZCrOPo^_@nuh9sq|#t(c~<=4z3%9sHy0wmMF9N@aek^8s~8vD!vi6 ze!nyC%r8XiJjLQL0D#N3T+nRu%h^Aw@$=`M!8L=k%L8)Yu{h1x@xuZd4&SY!Mo*ChFGzNJk+78yr2ST1J@}l7iHUXp7_=X2tE-}(V~F$178m+d z#8DYxJa$f;$->sVF~_{`&MwRPR4w-~HzosYqbNY>{uEz&HyHR~PLUWlW=d?c`1bik zj@tcB-LGo>u!vB#zzkOtu^PG_chgI_T2+bK`toVzY=W@7v!<~zCoWD8Od;&z5TL@G zGZ=F7hyAzg?3QY4Q>76FEk|<%`@%^I3V&gOeLz)x{mb*R$)`O(WrN?ez0CgN@D0&F zX9A_CyBqK9?6^t){3bw57$ZVq?|%KRzCJxuS4+$5&YQlnpt{hMtto113SJ!pR0a51 zZ?K|*X#PqG(ho60k;^Q^Us79cE6Nt7=3Kl~srYX^BVd7UnD?@_Re(UvhYivHMcH@9 zWBI>tt3GWJAtNb?LdeW+%8Vo=vKm%o&uF2t$%s%{AtNiBLdePbLU@kr?(-Yp z*YnTw+<(?}->&O@y~lYT=W!kfu{FdHiy&Q7y(ib=f;0~P)t2t?x#)DO=_6{f<3! z-#J;gtgIE3Bm*wLUKwNL^&t(N>u>X;6|?|ntB zKt9Ock`i%?H)G*>d)t-lY17%Y=ZxCiK0f7ScwMmjo{wROKx4y)aR}?Jl zvwukqM;kqGAmTA$0n(Z0@T|@2R>+2PJwe7WcU>o6Jip218LIA9G6psaMW9>YQ}VcasP+#gcNNrFUz-&B0iHM|!2 z&E(EobUuj=K99T<7LHE-`L_}#tLW$o^q&k_q%5}dcpm3ko2uG918y`7v`BZXzrU^b zczImG4oxl_7cKHlS{9G&zvxsg-{FYo%5XSRV)QaLd>Ow2uG(zS zk$=S`bl~_mQHkdKT%HigZdU5;BPn$FS-m1sK))l?qMkDeWP80`dE@P`*B{-WFMVC$ zZ(Ax{{PpPOMGA{M8xNK^-@B;B#2jU;B$XJ9D0lBUTM@}c$4}ZkDSip>(JBcR715ti z%C*+8oH_alWQexiI_v5nNpvCB-J8*tz00b~{%~pbC8oyTEhjHqJAJf1-+n}Cr(aK? zTD{2H4xs}jVlTL*wy8d?D%8>5+brI~O|yMCg?M5ACLYwf2lyR6h7Yh>-P5I)FmIhV zJ-(xy<&*P?xVexl#YUaYE_9s(%GZneKMH?m6Vme)7b^SUM&KW0zsreSu28K$-0IV= zyVLRDcuFs2Y0B8m`OOZe-k4wv?`PVaF-T=>u7WY=e3d!fF~OKf6+NWc`b=2RBY}9u zWG+ZdVdQJ2bSpGVk$A_)KHcY5nhJraK&@0^{jU^i&ht?r6d-uH@K|>ze%#xrv$|_` zV|g3#<>alz;C$St3`W%F2>jQ!x5to=v`9us3aoIVD+YIw&(PQ?)3F8reAoHczlmQ2O4-~Mx@On2Y+sUNBZ$-daQ(w@fWI2 zmeSl+HX=C+OBW5l9`LlmI3F8j_@Q;qHdU_@J%MQ4Zu)WO1a|YLh%f^+H#8vS=4xih z9iaiIzUX%S+M27$9h6DH4Zbxbzr#5Kfz-vLnVFf$+S7^?a%6OQVCpusZr{FD z9OUWWITGStGZ3hB$zbFCd){oi2r>Ax_jY!*FMc{Cj*dR$7E((LcON5GgU)P|er6{M zdb#-mU8n?tE;cy2CFP+ysvdHR=jt;2keEbN9lOr4)l^_mW zyoe^)X%MZYAUz8CK0Ky@q2VP}RcPG997!7CD1r(cul_n!RfseZn1Mg7p`pQl&!)-@ zhclvW#F${;%|o5atYDT4|{e(@k2Xu%ZNYzK{bRH7gR zczDyBQb_4a^YECT+Gih_rlqSJ{j{_gX1?e=MfNHeN>mTg3-k5sitkka?OwZ#{&92) zuzB_0>H)tOULijNbykcH z+AC0=bX%&?1}@l>QI(#tqc6 z_xvT7qzAL|M!s*{wm;BC+Lm*^|HY8Rko|@9nLa&t4Jc8D}b|h)9)JHwV$bH zgc-KjanmKQ(ONZvZe4vnu+J6!&DRGYleo*v%+&Od2D%EoY6esnI~jWQ&x-{`VNP7j zF}niJ3zlnq6#EtUNCHD}My(LCCouv-`4s3WLY4Y@vP_IVA3f3WkhY6SSf%mR8U<=l zNid`2XB4$hqPDuyZzakgaQN^IzYTXu2hJ?frNtep8rRAE?f!u+z5O3`CPQj&vpyNU zzHAnFbT+=tsL1fj=jZEVq7YR_t1X&jjkSwimVRGy0b>+ z=4+5|BHtvw-|zj6nvjyU`LqHXc?E@rNb#ZZ@wcjp(Cnn%vuFMgERvRg|E6z+RP3+s zA2yXiT%3!KPbIk^nTM0}sg|6t(XCsRL$j?WLJ@Vn`L`5 z+tKO+eyW;5j*a@RUOV*iv3i<}%*_7GH7n1Hlru!KUs;D=x~VPY(Xof;R-ZFo+sYm! z=So$^9Ljy=b!$Z$@Ta!Xjp7hJRn3Hdw6^vOeZ7Q6BMM0W4}UrMTv0gI8jPjDKwAf0K=U8${CatePV66d4m-Arg*{Smzk8MSt4I0MD(Awzl4*_y!w>iE7&t$be(OE& zJcW4E?}e`xX=8t;%P99zoL?DbwnNoFLiqMF+EE~hd6p4t?fND33AnnhA$veWkRg3X zfCnc0!w((rExw_LyuUvd=I)qS)lN-PFo}f>fRd8WLi_!2P42ael~CesG0Z(GCgucZ z38bZHr-3(Ei~QEDTNBmtofpmBPoGMPo8*p2oE?__xtX!?g3P%KB{qx=A+I8~^!`s@qWR^_h(99z)(G41+oHAQfWNful{OOJHhqA zK9j;@+%#(b0Y=Z>j~^exi6GSE(-u|o z`Tn&1iPHsB#W>s{`HjFCh!fVftgP&Th$soi)2VEEzd%k!aMI5R%-0O!6+mth*q?p5 zV#lA_#H5gPS*G_K%<`+$QM zrN-~&16yh%8e=l>Eiyh9($~a7D{udlMZ!au^@zW?W+3NN@AjEk6I}z2o&j#|-u5e; zis@znY}DKRDr5fUJ_4S^F&UutYT?P4N|GQ1Yj$?kJv|j#b340-m*r2lZPA(dta54k z54nMoY-9ZjOIvtdXf7O~>>Ypo?r%c$_n>W@O`Y*_zl-2%r;f?MOVjI2G1lH$%CU=g z{^8H(T7KEWI8p5#wMj1WN!%v;q~AkUqPMJ1Pe;n+-;O6X3ys)b*hnvn|JEe{7_riy8fO(Qur2$!8$DFkZh`A zCXsOPUV!4KbPU${I$nHWh*8Q~V7hd^Zmx@uyIxnor?MP}lCmY;=+){I2v8?5h zJV*tU{?jkHH~(x7t&q3>LT3HDWXk2Ck&_bp8$jT!zK*WsubrJmMc_`hN(Ae_(Kt{r zldJnmCEa;*-NdHr#)dQ1?LW7iGGJJDsy->Cpg8}GODG{zwEw5gueg3LjUy$h7m=u!neIuT=!m*n*|Kf6Z!V;NxcgkM#CuVi+J@TJuKl>%jE4qC{-zpAT z)d_@F*qAN8=G3*e3bC<0(qh=ZpXmPV>pMiV!%-p%w4&^_DYx|knV93FCyT+Ncs35n z?GZ#nO3cwjnJ4fR6krl2uW4xPrJ;e#4-*TEblr02nWmP{q1$x~P2CPZR0>JRF6uWu zHzsRVU781*Zxl)+{1chWuI>)N4U>`89wPz@%T$^fdS*jRDE60c^vjo2O&2mll|Lp4 zX-$oBS7hCygX1b<@%S!vb#)x>SfX4;i)QF@zjWzL8@eRHx9tWdSyy+AmGwboUw{-8tqC6Qc^R2_yT?zTqM`Kg zm=I$f?mod+c{w3AcG%B6OZ?#nuq>lTMlAeH63jE2oj>oBypwq;>5GHztwf=&pPw52 zwd)l<(e#C7V^8$ng}6(yMK(V4(X0NfRUW~c9j`{AsvE?$MZso|isJdZcO`9=_eIoQ z%QB+MR%N5UXz>zTtf1nTIlpo#hv`yO985gH5jCvz4Ukb*rnL2pZ2S!+*p_3qG%-C4 zh>7JxyHQ*mUTK8c8gdLI zUC07j+Q4K+M?6Z5;6atyccff>@0-7~A^o9NN-q*YWaPJu!y0OR87-`1VG&;=yGh8IY5HF%o*SyYhW5pvi_M}r1FB<7f874Dd+x2D z@kO)gwEv=ZI`6y8D9H=|@vYs3r4%<~bDX;mXH2LqNVA`wpsm_?Dc_je_~2t_!E^zS zCo5_M@IW?5iM%-dz~0G)A2|oYiuX$HNe%saA$HwF>&Ns)^BV=ZZfa|9t!w{;v=!Tz z{Fu?yYDnbnP9$Mwe162f68FU@yP!{;jbEt8{a&@v@beD4ILTq*uXhHf!B*Py(`-!q26^1;#3(zXwL0|KaiRsXny$rdlIcWbET zxm>w{Wi)Dk+f7X67SL6F|oZ8hMB0yz5iFE0gqdwa|*m>77LT|7dAa|AiR z$9axcKvmj4gTqv|tGSA^>U z^GL$_x&9OX$nY?;va>@4HS_eV1G*0%Jdj%I47Z<6OaRErgS&3n60aVA5S-k|(1rvz-T?1fV zLY_phFcx`B^EbQm2P+SU+QZPOUmmEfQ$+oFmb+(#p%ei!#kw_g(gP1GRE_xS%iXe4 z#rm6?%_O$#(tV_3&cNdIP}rOh<(CbG+cVvoB*XI#Ef;+}IvaHL&~!m# z0ep&T4Jg^p%vj#l1Kv}Nnc_dA%S5Q2VD%%1f}fI#UwIVFQGgv_b^)`pYrm3hav4EQ z=Nx#^5af=G1VI3nH_*TJgE+|{R#v1vBWKhH2L=MxT70Z@@6OX6^)?%IbEiSv)zuO) z_2~4Ep=dW(v>>8fz7BM%QB3WboIe-boF$tOjJ1RuX6I@=vF`bXh%@lq8?(KY zA>?0lHiw1r=;#g6)&w4<>Rdg;?EL4ne)Kn=dbuUDL2ayjDZ6ocW5}4(1Nt_(IxS#6=m-oqpH*t4GHeofg2kV)sMdFD||a%JSr!3Z|#05hfw%6#-9XJS;HKfWE`n zc2A~>?VgXLLzNDoodM#I)nAw9~n%-~Ih?90;Dwg+G-Z3k6OP7dbW4)+HxflBa(Y%JzUADftnGZ%}2>WR`2g}9Fl z^!%Yl>goeTpu|^h29jM6LS2 zT9h1~A3M)JG|=C#cJbn?R>@?p-P>@MBz}Zsm)vdW;Pjisj&bYcw;V~I{q>7~$9S$b zPu|DadZ1kA&sT0|Zt}<9Bx>zsWIGAz*z|3cO-?5^GT{7tGD2G=@%p(lwU|dG4QhY) zyyewag7Rh9pW&Z4u4m>|`>JpTr|J9;fY8F&^fEqzPY}I1Lj6`t;*|1s-_U*G<5LG3 zL!uB4jTWY{N2gykmZw2z5p{^yy>tn!bsS^E!w%5zO3H-C*~c_yF`LKv&c2m>GfRK6 zvIJM3ywxelK?ldmsIa67T1H+%UlE&_TtRMbF1*CpsG+k1H6j3AXm)=1405q@@-QM~ zVPZPeBkS%ch8oBrlkEyop^ST4_N>&x$qnILZS)F)Cxq@^!J!~LDz~fw>E>vB~?wup@h?~A5 ztcbOU-CFMB_5oj`L4YcpgN23hbvD88pO}YGGNz~{W$Qd_`Y3jAB9A)6Q40@G+y@_V zAGMc{SG+sCiO8wtBoco;zPaVr!cXSgGFr=Q`W9hT=i*!Dwhw65S~1X9*i;j@&$10O zn9uq>=N1-WA5`tbVl5LtOXjcI2oJ4!QK62miJ6SiC)6A8DK#U~CxN{$TEA9@5|^_* zQJioMb`%Z`y86(5f@!w6Ue$D%=kK+O#I@G(swLjEG@SiA_?T4PKTVi8%kqe%I6*&} z?#0Wm~cO0ro( zjXEr|^4RNGekr`SMAfA1udllrhOCcURI4#4dt$Wz>vknbw?Mb<@Un2%tn){1<1DRq zuG>_bySdIu;Nk8hh5cmm3-BOO3Tk%}s6@SQufDarLmgdh)Yw4IbU}CeMxGvb?h{32 z8GA+?dZC4m`Ff2=FftEo7~55XVX`?a=k~=3{iW{a&V3NAyz`9H$DW)0DJfA8+e^F_ zGu!F7sw>|m^K@=Y>y}DJd0ef&);G*7Z1InMI%%wGC5gYCBOfkfp>L(^AT9nH6Jp)% z`Os|c{i8kLhwRqjWxz4iU~oQ9`ErK zA{Ysh0oN)Uxi9M90PxY>b%`x}Ra!q-UMR-gMapfFt7N5TYHk7mE?`lD6ba*RF0Qd= zW$9flOS94I+`;k*S6~@f$E{2nS#D}#l3nF!a(42(fw>u9$K_!w?Ab?K10Ie08)ube z>zh-Gi%mv?*z6ftSW2AcO|D(rzXU=ls}H3115!{ZKodNI(paTs_(!~b^-7;ETaGOd z1l5K&(3$#*AOJ-cIYUqy4jp>v0-5F*h#{FN$;wvM)xjhWHwr%nI0RW)T0VExyLID+ zkXI)0F3CtRPi>HV$~@+7(n#ti#qQLxw|JEe^tGwejQ!!i%WY+81quYA34z>T>4zr^ zO2c3&BW6Q5bDj~H)ZxPwCFDSXxgQEFzp`PK z0MMz$wj*8tq5k21liJ1x()=4FR5!yCdi6V>*eKGFP1T4L_a%7uN^Xzb!yj9cMx{=` zB{#EbP`bvDQ|^~|qnfyb9GqaD(BwuVq;=(Kc;Cjhl*tGlpf@nG^`I`nKRk1U#=I-* z$p<~|D;Z~#onP3^kG94(c6E*R^_?LGj*suZz`U&dtA8+@_K3!zA3auZ5fPHGS;xtz z7deBkYpyOsnU{YYXL|L0JnDW(akoL`?8@v+B}-7>1xfY)ME;%$KK1f~uTkRhl(%om zxt_yHoOsm&M8&xFl4Hd1CqrWAsQw!C#d7X~vY!0=JE!IBkL_&i5&JQb^on7EUsN;? zQkFO_AxI9cqj@vo!3Q=!p`7>dVOfp_JkHPN2h4-JiOgsD6h!1+uP@h$eB+}hhgRPx z*Zg#%)RRNvJpUUC96htVUQ_a?ro8--zFs@D5kd55x`p!|1qRIg&U29nep5aidWSUh zdMIRx`Pr9D9E@TNQH($)VPZ@518*<8go3F0nP^s%^GXnp6(&k-9#Q6($wLH5dwAih zT;!?uot4c_xu->Oe4gER-&;GHVFF5eHfw(zw>;E$*n1US{8z6s8DGC~<6=XWDv0o~ z+mnrfC3e1}kE*7o18Tu3JZsjd9>pM9P$875lap&;V9t1o<;}$wlWde^&CIwNPJQ#C zXJSfj2j%2GurGdew&MINXR+yS^w>;(3u{{FKQH;9M1tf2vZiDI(X#zgV) zDx(%jdoy9@#@FXOf@_BviP?Cslb~!5j@Sq%Je2NP{IIF8`a^`yRtwwcx)0IKOw5I? zLPt~;OV&}}gx4qdA%F!zr--nD1mFDq9!zA#diKm5jG#sC|$1F=hdcN++R@c zNqKsTumZt{Zx3yp1GA{tTF=^DJ0ZY-E>LPQ&aaask^iDSK90UlA? z5r&3{>J}Pav01MozCQhfIMJ;ST{g1QnSvk}-=0^F+KA#ZgfIT-+kl%Jmf?67IyL)1 zz!6$yyV1pSty8c5J7G|Vn%^o<@q+Q?@qe6B**r7eH3JGE*p>TwvO3T z^McoTkJ!lCZDORqmk|#)IB4m0B+*;ho>q^Yb#h_i>DU`XKhHr+k`oE8;@(X9VUe1x zfVPQX>j^4Pt|DULqI)=+orej(lK;61wTrj+31bui%Oxob3j+;ti(e{MB0Z2y#^+uf zQOzCvBvO1PzJ-Wbp1fg=a#Pjd(9Idz(tCguM*kZNay_sd_;6K+c%gk-mg|1+^E=LD zL>}iZFD3obv_2{JY3dNCvV8A{_u^76$+%5+a`L;vBD;-mO^Zz^>C7jiBg$f7!7IEn zO-Y`}7HiM{>APS0Y%)hmPKDE1CH5uZD}zt^HsZ~_#jhZ~0XsCzubh7^;OjVheR<;B zULyVU3ky>^wbV$Q*`wNLxG^H|(y+__zvE4WDX; zDO3kPMAU&QQ@g^Jq$|0OB-oQoibQCU@~C_!-8)Kz+Fb9GJubvAsvob2z1V$1-d=S2 zJ`V1}oZGVOLD1b~N=17{45Ma2xE#PKCiUktFuD0Lz@Er<<;t*=qwV@z zF+eB9Hlj5H*ekTD3kp`itpku6dvN!*H$`uHCg33a3H@Jx(~Q!q#Ot5Ef7C#~{)Y6P z7xkk>8q%s?CHG%`^r%7=DR^Z`28^*y;#7`kXBjo(C`TjLix)4DTcZ%?{Jr!({I2k< z>m}=p>nHZr1Gzw_N6Ff<>EFr^ve%45BZH~45#RoJnD|@%$6uYXzG)#6{}`T@E82I& z5<*?<$Q3>Mt?=pxdjN#MS_zoEMM(zWvkZ@#fopkI0|b)}XYf8++WG$KJsHLT7;qq6 z4+TyMWa8mmXMsJhUnK|x4xj>(Fwq|rgc}T57$IP;C*|@}te;bnYNvJLOLYff&xmUJ zK`$B*oks9CbwFg()a-yq98OR09+~#;eGgz8a1`_!xQ`vHtEus-Fu>VOC}B9UJM z;SF3rPuyFe)b#;^N7)o4$jHc86%RLJ$KgNlZI5Fl8i=S!Io;pE7C87qWq)obl+*Rh zCyVH}R}XYM^0Ngb-|Z78o}BsN2hDc|IK;l=C1H*o`sMh0S|3F;;CUIgs649a4gL6W zYO|dp`z(;&E{*#-D4!xO1~F(?1&95Yjs)|%EhF7QAdLpa6x|Xj1<$vz-e!yN-7iUq zVuSq)n$XUF9*mEhSy)U#h8#lEM471{2x5{NCqPHgMj9PGh(DYDome#jmdOU`v5wEM zm32#)Q@PXLNs}Dsm=NgPS8GB#xyV?EzDd44L$i6u?owliwZ7EG$?B#RI#uG*(-F*i z?e^jcl7RrW*(D-!xoP00+Ftd~evL<>>YY4N(G5PiU(a_{2j_ZOe=r^kQafJJZ=X2z z+@I^XoFH)@VTAR99>sO}y410-4|@i$2`TIgX^;$Ew2}&P=9S@RD1(V%i9eUn*O)H1 z`tdvs5$#T4t7Ml_>35l^-z^leS=rugc$COpX82qBAn}XbG{hZm9Y5Hq%us}#{O03E zQ9G$}qnlBi6f z8vGsC6O%>`>PFi?<>^^zZ4Ihw*=k|elSEG=r`FH4RJdqRt`>6bLoF-Oa!1C;L>zSc z&eG195Zeh>!oq;{-0PHkYFxe9_5OmlD&np2@VP_ny2ks z?2u1F*bpn5;5T1%GkJtoyo}(tE)e!oQ2}E4YkC@za|a^`VGID^Qk&GYL}D@=C3;c9 z2;tSeaQoNdqBJ0XsdNE?2zUOIrH##>!3Yb`soK(XEkJI-IYB$}^XF+Nkh+!D?HOo} zzJ9t~^?bp~oy1%*c3W~VyYW@l#E3h`b6~cABGbJ{cQU?^{t(0XSIg>*vp$;MpEOez7FD!r!DKAx(V*3w_3rb%eXW@Zw!8`Yzp`PMiG2`fBd9>&@B0fOi-eZ>A`%*F zYZzZb0_gDVvYrZq89y;(66oYe+ciGt*o{gu!7g37Hg{?(Gz~abfD4avLQ%Ik>L@jNd+g9z|xd z%$j)CVws0-!F|A*T%h2=P#Ms^x%Hz}X|&gJP5<0EPQ1W-azyOKu6#mD*Me@7-hy&e zO`nstp{j0kG{rZ!<0+10fJAWAC@}s_R))F-Q_@Z;@)c(NSY9Z-)+3^(Q1=C=+>_UwWqa%e~hYG?IXX23Ok zP|85MXJ=)l3exR-OQ<9tUplzbCWjf&S?fU!O-Ud12+dE@PM&xBEZt=0 zzvpTD{-AkhsM;F!=mO|+GJnY+f8SPr_MF_uUwK5pn;66^8B{jot)FOf>dT%%^1(we z7_~tgu$>)(i5pH%%Q$0^WrApwm;&uXU^-ZL5MS>%1(kWqb&+6qi;0S6=j5o9NTIpl zsPyE|E8S)s=3}n7^-sRv(aq zjfXd3YFg|VZ!r;K&~J`ciUnvjpy>KsH+>5`3NXJ+-EGG$vp?wM7`L8DynH5;9Lp_mX17B&3>D$4}g^J@RHg;CeMU71H1k2Cgj`RJYj@HVK`}8d9 zm9sf550foebmL}2)>;J8Ej|ud0gV|L0WMDcy7AAU$#CON3;wz&3tlU_*d28MvinrK zuaTnectXuPtWaFp<0)hO{4>^4#rYlArEknFbJ$*_)BvL^I+r4knpaW#3+LC0zu6*j zuYAtLYU$VE9yc9+PGnumg;YzxyUP;IKK$mjf9~FI)wRqvr@q2}F8z>_;xL zuSF91O|`^I*C4@7HNntfX9#8C@19}VBLgLOMZrxebpCU!WJH`q%6@eefgr^0VSzoH z>6?;rETRrty}aDqii(OZQ_`eJ;hrv$H^!$t5%@RxGJC?7v?`|qevgpl+Dxxlu$FUC zZ1lq1=Z&F~+nH%6e!l0`-`pK&-2Hfw4nPPR@u3pf(vBEte!l3BA9-laE*LBmT7&QjAl%RU|0#C!MjlDJ!j*n)$@ zhQ+(CXp_=-u88WmB_KX5cLygYaG6|+fdT`js79arUt26PJ~smCH&#g8=hDqeaKx@s z=XFiV+%f~-(G)0yo>srSkA;h;w$RGns{jF2eWKmgmI%=Wn3B!I@x#i0R%R66gmn_BFrR$L&C^J zF-&HKU-4ohfaco0OH8x5pNMkURgTyKx-gz>89)@KdN~)@0N;S2u(B&%lRKb3T*%bJ z(^Jk6q-RDSnK;!Ow{F3Zj`&GYg50YZrl-BsmtsyN|L+flJHEd_N<0tpZK7n9NkxZn zPqFm+AL~*YAlPt1Mi^jh4$`}$HGDKiM`g>%d z!IecO84HbFXv(a;r57=7=rAE7^vZ|-R)zDK6Gop|WWeWc?A zqdseYB6#(+{m-*bls)dHE8)+QP4hqfo5Fo0y`jtPFXzbKt%`8!GDL8d?&kjtl!mJ}+T#n`P~xMiLHTh$Npl>d2!rqug5<zL+2wQaF6B3|BCPhw6{iKbm`JUxr4pf6WxHd&OLpo7GBJp(rK`r?&*oF-SwFdeS zMiGe*f4p+Pw$}#lyKsY&^#JK%?onBIpzwb#I`(vcv z(W4?BNzPzFnaJc*H*$Y$-MTtIKJ!Jwe5-tsqFC{@t<6ql2rk||5Xhh?4vdUc z%0V~`V-99Xr zTiXJfZPgA*NkzQ{hYNJM#hDqZ9qzGy0Iku*^YGyrz#*OTPOiVIIe=HidzgSeR_Jg% zqR!6k2K?TkLyWdL!uZP$vXl=VY(&285DAXe7aO7}9o$ob9Kk2ancapOH|E*VH_l@? zRC^uy&!W__EvUL1pmgj1B6;@*{masJKmF|h*A;Gc0Q1Jc;Sl`?D4})dpl)>=AwDEy zYMSilM=4YfeU8o<#IP;x@7^7^%7un@6YOD1?)=zD+mWJEAbfHN{V#v~6G$9BzBFQ@ z5k>w7s-1YjA*?~iUD8}*Gjv>Ho+;ywWD)Ag%kO9vCMU`(Nv)ghh|qPHNho}sU<`v| zC@5w0=C2K;%1U|o`I~S!qg4#m1`snqUq)`h<^u`VjCs&?uz}%I>P-L)&CP8bqR}w3 z+L2C^Cxl)k{o9KUYE*u}r2mQgHPAdvaIPn;w0a~`@O}@&xuwXcku`-UVdu7Od}g~5 zLN7n6H`+tn0r&)VpJU?4Vk^qa`v(WnCLVRd(tzj;I;C#1Yh%F~Pl|ytm-W@f*}skb z|3bQwutsq5c8>hMsXC2zuw|Rp3Y-4s$4|0RPsP+y``XaZ(AsJXmHSvF_5bE(tFCyI z`fej9w}I^$1S{+6A{j}sSR9c+rF>Q# zS9RC7eZ6d}RhlbX(DB;+ftzp5H|f+oI1nH^cRNoz)j}bzX=FTA z9X1XG`bH6g1%ydPvxJ_cE_=`#yNc9 zvl^=Y@>0{XUpRs=s3zV4E9p+GrJ}#KaX8vb-^-iMJ@-sYNRa*Vgu*yZUD8#5LFhR| zgOpEciOKQ$?d4}`pEOLf0DTeO*u=++fT(_gODWf$#4|4b?%_4+@m zrddH&*?Byw?$7^HL-d4+8TW)rj^F?h`%x7Ey##J(I^mFMYJ-BK=&WpFQ%hzgs35hr zIMrURFp{uyMZ$@a?>I;vm%`rek$O3V5(~>*(5LFT{k@O>M6N2ST}d7WxW80+&iO4- z(buzbE6WD_dD+m!6-*Q-zYgmyK?$|`&?U)%Zd zx()Hod&Z=cVQ|eWU~W{O_;OQufHp8IMuh4Fi6vBEk+Z8DjW_((ZjvmduWTm*QFit` ztAC-h2U!bpA9v)&255dtGuqRvQ@@XC|D|z-@$#%1;(D^3q+-$WfJFyhCw5{iwwdbj zvxS~vB={Od^sfqDh=!vML!FAafqn`Ksk!ZY^nirFuSM9`9A|ABr*LPI@dd_5u8p{SppeT3XKDy=`uOGqaPZ7c9rC zBoB%Fgy2806pmdKo|nL|)8(b}5>1f}B`Ha($Z5W0eWfH?>TY=5P3YD^-2q|1 zUOKwKl>e-#j4SDPUR9iZ@K!s|sxDjz(8Mx2nL$25^X4LG>_MMEwv_b*PNxj2Hsqha z-Cd0I^sLO$Kr{2)L)c$z-nx~E0#U-?!~`<~!xEaqtt#H8q=0_;4f+OMjB1>%5f^?O ziy%F5F9~oD>@$|Ud%Dner&JbmqhgX}(e;<%hofd^93`TBe0G79dEr7%W~TG)Xq6>Ol-vp!o#(7bkNUKeGeT?E%srI z9mnatL5*fRd>EAzFB%pqs#ogCpan_^3*S_`cb2uY#BCiih&AlQ1Kk@THj?;qR2dCe zEp~6R{>f0LIYX<^5Ihbs>zdUYJjP%Z0Ut)^8${xwkv6`54ctbVXZ^e?@X^K4l0P@Ri1Jl+ z_^Ve3n=0$-Qb0;Vjf=2${Y(gaweF*#nXBfAhOb;iR<-a8;ox|A^UC#qV6kQF_-~Ly3;Oc+GL@-{*U}7RWJ32;+ z*_xPaHSr(W%N?aQp)~AY?Zfh<=!&raigxLEv_w$Z^ED$GB-3k4(d$dlD%9#>wu64g zRAE{Du!+BN*-rlX>pnbHEfg&$&>InrPnvp}MztSIV${K{8D=6`&-C2n8@FQ|sH-BJl>JEPsE0xYg2| zJKg?U)14wMd71S$f3V?T|2fCSWnw z<9W}j(+AYB`#F^?`;4pxzI)3wql*|EE3l;$l$3TsV=lkUyfx|aelfzYBJoo+oKIp( zeP0}15-dD$Nx5zKf#SqTo!w2hA+<-&8c^u+?!eKTvx9XWt?0SmFKYE@4(c^+MuG^R z;HnX>@0kd&k3Fq95)?G zyXf)0`bq`tE`p@)@lbKsIGVL!3OR$ms9yA#qHD!zId~itJyXq0b^C-@1qI^9kKEk} ze^Za>XcpRz5s{)CE7I;k>S<(;$LEIr9Rur^Y6x$Va4O1o$R}BMi)cH-&w<)2w4J!3_->^ zWLoIphJHFK)rscIrM}vaVD1!?e5#lcn?z8g(0kq&5FZa0P*@>}aBz6; zGsQ{K@()%2Zb0>z0ffj!^|k(C#ICXA>_Ko{_|Se7ovhooeJ^39eu71aaYgMlJO9KK zx)IoSWhmUaGu^_{h_5#^z;NLs@NR_Tn4fBT3E$49HnjZRF8-bt-i1RCx*0bRi)DxW z4a%o9C0Q1kOKDwGZ2ue3)lagw3uB(r3{e#-`ZBW%4Ht>ljYfh{%7DfV3hpQ=w9xF* z>WSUW8T`4f?lw4R%SGPx6~hl|Cr!|#0_qT&pw!n(jX|sfb9~ndERP`rbPV#JS(`VW zLaRIkdDq(WY{%%bcg~;W5`BS_M)VXwKs<8x%?DyPtTIqIz9gbF)IvJzyoshgIDqX z*6+|;vLN^hFqF-;%}QzI2J#i|{EO!36Zj>2-}U8j-NMb&QXn6REtN<#Rbl^&tb6r7 zYVl%|M7Z|xnxh7!-S>MLDe5&u>%36q;nJ;i;gz?ClvHmAYmHg@EIp9CroyFdRAUpx zpbVt4LvT4hC1#I&SHs7^&?Y*Gc~VNrOG@uv5@Cua0U2=qG}jf-c)ji<6+IT+feKj0 zmyn|EkszU1=(-lR(mJN`W}6&A*Z;DhS$ER+W>>n9!g0Cb*qJF36^4$22zeQ&<6T}h zqA0r@g=zTQ=d<0#Ed;@WW1eGLG+*wLP^HU;UdLI2lU^BuO50yT$kDH5;aYF3_b%o)1vxQEO_@#|({PVq!E)c=#?IOoLTG)2B?cIAX}F2mN??avt;O6sjoG;|9`uSkeE`%V?vo2%qy z{nz3kupg^??cMetOBA~0tU+B85$WW}O(w?G6X8)E{lC0vyogdh0#aY1P zt|4ErBdmz}S66Cf-J4sob(?BFGdgj+GejjB_zzlVqGjFOq>mwBg~MC?1vxpn?-8ii zC8R^l?dRLK+@ol}0TGqr+W`p)mmMXf*>;j>K)AP0_Opexo7$lXPQ3;Bqh|I#&o64c zv@lpL@*b2M{|(y9v8y>JL`AXDtU_)J@jJF6)IhTywdLpL4i67&(_8&4-;Q1=EpT65 z)zG2|cC#mQQbIx{%xxgS_W5&C_I!J&UivX6CO78_&$ze&C>l^xQ_s!M!+lx(t>!6a zc%2bPBnKMi3JU?EF;VCiDSM%nG~l}q2_e4%Tg%A z#A+oZl)!mlp?s~x^)4i8p?09H2RSBV1B0Jpb2Dl+H-@4W{^nDI1rL9=ij8Jx=s}>qIno>>Plu56{97`0sCH84484)_oHcNX8I&QpPj|LTZG-$wCYAVdQ<)5*7a za`p820swPgRS{Nqbes?pg8!2R!YEXwxYNgI-(_Z^Y0_X7YJBNEBSy$RXn0lsjFE1n zpCDNJZ`ymBbBAeuoX+OjYv-~h>FhaUbt-6fDw)nHBt@6|LcBU@OOf;4Z#W&xGh_8ryQ_7DVJ*sq5g>*aD2{BXuP3%&K=Wn|hYi!8Wa5S76DYY`z zI9`!-b(x}vGpgJdGaRc2jQ~}jKSLCohH@NU%pJ^jL@#PVSv>>}j?i_?EV(c-F@bnC z3Lbw}+`xRyB!Y6(Y6MnkDK^`+EI}U#J~t)h(XCtiFrsEXKe&e{55l~7 z(@0{I*l)`mA{izuyO#e{gE9m4m#!w9dZpSE8bivd*kNKFpdgE!3CB!SZ&}yV$Fgy3A7SCiPEPv)bTLe;;C2%pYUTh z3h;Fh$QK8;=h^W?`oTv|P7Zs^yd-!`2nxQn`EiPPX^!ngGLak~9W~KBCP%z9)%$@z z9h>gH+5gh`;__p=HzJauD|PH7aEPpv0Q&BB#Kp$HntLMU!=aYDVJV*eYPP!`)$deI zlY}>KKeG;8jvnOx4kFX5RQ=cw{Y{q%C>*G}0tBLVOP3fVtGz zQK>sC{gvqw%RN>0g*tZ4tiBs&2AQwxJvRUCW!)tw7M9s+`OHrBG;u`gvDpl|>7C-) z&-DKArvGS;<9#0+_aV)dFXep{t%bPFC@GH-C0%UjeTi@Nh33Sag+3P3wCJjm9Ca>i zk7ci{+4jdVnJw^quWkU&N}eV0M-GDvwT6#GZycCHIXf9@VjiGh&q!H=Yzio(2D%tR@j;z>(ggp&a zU!ie+-7ww8(*OE3r{rmthD=44F;+5XohKEQjMmu6q~BLapqzcyl1z47IBWB}d$zblk-3~{fd-=`3aUmv|!_d?TT74V@;x)$Dn zvW+M3mxvz?MdIo>*;W-sJWD?lzaOMlTlx4wt@R(k?jz{|s?Pt3=C5YJMLGVqeqeCN zKIGq{R)y$?mvK)xX9bPY;Y(Sj?d9l0>RJEy-~Tpr*-X{g6(8EQc&w?b`ays>E$RDD zpCmHhSLO#I!xPC9er+70kTlqC(|LG|RXY^p10V@@bAd$1#Rv|CcPbf$QB^V&r>5tx zPJRJC6RQcvPsS zj?gXMr8eMwp?wm1B0b<~l(fesmOUwZTB}M*?iDLQ-Tx61dwEq=);#yT<50Sw0TI#L zw5Amu8F`q8C$M^8Zf>r=6wQdFe(v|!bLbmWZ-yZrqDDl@E_LyNslnPqZfp?82X_k7 zZ&$J%3i)tYwX?15rka}M*_thAP=HKKOHc1@=>^<|`Z|J_a!ZeVeM`#;|FP#pj(K-8 z>7^lvnvsGii-&~KwrhGm=CoYy5UZl8W3jy@QL_j}63wv?;0XH?GH3MCjm0ltUiZoK z*)u?orh804WrIqBLZsUZb{8n8zzj7c8R1`9L9?$5m{sFA^!;d;I0q%zHui7MZ{-r79C;2!*QG=>~qA^+@R5=onjB8b{HL>~2{T!xuRXe-7 z&>p=U`#3LH>Ptn1`!K!qA}>w?KV_kTd$6<%Y=_G#Tg<>si>AOdeUU~G4jeWaAbyQGr4YzTt3)vltO(YyC^nZSLUkN*&*p_RP zUg-nNz{CPCAgDvb!*T$%N}HQ4%l(dEB&p5J@Jkt*W~4i9&r~uV9-tTvy z<1?Qc91>DmTwD_gtu-NQ!y4x`-O_Y5(f7pBC_fF_BGJOWmljjMC%b_YJz!;_8WXX>XH{)@{O>2RB;&)qU{5 z7B2uu?+|#ZI-tH|O~aC~nF?g|EBt_JJXLO+nVqE-JtXav0x!wn#}2qJ^kh5bK#;6Ow}Q#{L1&1622 zzqT5E;L*T$TK7URFek$XAIpG+=H@LVt0AWIJ|d!MeDA(ZKO}U-N@~6gO#?y?@%JzO z6lMJGkOQzs+OFF>wa_j;R%cNY*&dDmahj)vw1|MEKO z!sOW~M+sso5V9ehIYS=J9Mp9S`x&NwD5=+urr3*%Zy~MdPoKtKpMP}f)G3r&n1ch? z?um|UvHL*M_2>pi22IQ?EO^eG(d;@)?7oYy8Tap(VuTyY{@r1GlRh0kXJ$%dSulVBifGz=_k>O$WL$U}dc+A(Y6QW(5DeTILjsY^R z1{xX~58=v*D-C(|%Ah5=AN4r8SEx=4c{XH2!GYezqsO7KvHIA=nLH(5zt+WKybVnF z>a-C6=ZE7GU@CHjY1ZBe#5|Sjeavg~n@6f3uB_rGikuAQw42Fy-HOE!+Ls0+yy@6f z0buh~?0V_%k5CzK@lr)0F|c;iCKuRb4dXDlDczSl*IB9;EMIJF^kM4Z zLyI+wJ{!PLo8|eWhl9S&Sa2AU!h7Zn5)gv3fyNK)&>OEuD%dq3Z|GW_+D7pgTeHsbdZol9c;lX^=&6KH}dbLY7^_7 zlRf-$DV_+_#jF6rHfOqHX!sp4*6?ub{_vQXSH8Yq7U4&8im(O=PaZlL#_-_+I#;pB zFqehyJCFcmYGAQr+DrcO6vdqVR=!`Z%=X78#YeGvF9>slc#`lnGsW zMpO|hqAKszXjUmVa2`mH9g(w)N{tJWMHs}CG0pCg(oXDMpd8JQ{38LNU%VJv!Y6#? zic{|G7jT2;H5>L%N}7bq0=o+k3hbhrS=kfY@*VOq;TIBFh#xSL3*N{Uqs_7a1blsy zAc;V(2o5{~W=fFvCUd|pL_1J1N8Fsdd!s{0cJR}^0KhJOHU6R#$?m?M@&;|H`icl*>|ObiCW&Y{Cs?M zUjsSRqn%O;yyz4a6q1tc+HOoOEF;;B)dVAH`UmQ}Te}F=(yVg)!$|&7lShyAZY!(z z?BK_3&z7BL(g(M^FbwHILqknseY%WGYLcIypA3y*vgR!~23YJqLb+pZ>FK^K`@tqmnD~FapXE5kW&J&6&%#^xKj)`Kog{kRba0oA*GsE~sVG0cx`G0- zrJy%&?7ItHqIVU%_#W(W- zA~hSearN&4ukS*5R_Hk({2e%OxhFzqG-@}9K@pdgGahyaRe#;#u=9ixlzp3ZcYT=h z@!7?G!lsRkc(E@p>lmP*=y4)uMvFF81@ zVUQi%y01880#Q-DqpA7D{)QAUq}2RGbjfqEi|jyi0C@_<=m&9TW@c6o?Z+JnrR%eC z90X@z&7n`}o`zS}l4Ul6%s_d%oILiPIFbk4f!EP9PJpdYY>a*{mY@Rbp02rezNVRA z<%WfIgGJ1}9ve)%yJIk=_vg<<`xWb~W!+x+gD7aw#_!GiuOm<-M|YbPQB9B~D4d%K z-L_|`X-@MsQnY4CogOgqX&D$Q7Gcwg0lKM;A;=Zb`+@%&(n_e=5Rp+4adC1&I5;{n zQ9b?!Cipv;knBZ%{`}GlNA(E8?7#pN7O#VYv!Kn!;bvuN37#4}bvp7L-lm<0pb&Qj zfy4JV7lC()i^1}rm|HM2({Csd;k0GrdYrw74n-Khi74)kkGQZhJT&wwFpy`lwweD( zF}6Co#y4@mc6R2$3<-NnN*?p$LL1u1eH7JlEPbCIKY6keO<9~?sq~@#^U}R%xNqGE zny1DtpN&iu-phSw)R1@lXa)}Yx;nYALAIp!TrG&6Fqo;`3rR6`g3~)soVC~G+iPlm z>xvUEZASS4T^FLqxWq7jM7^&dmR$+a`_Fn`80i_X+&6< zqynS=tOL=Z`fWo%#L1O|qOvyLmyi%IUu*jGPTJ9d)BC!DeAnl}U|=XXNuy(Deoy8L z;u9%^b&ikh^aS6bBHSNvlWWDe)O*au*@4uDWik8uPYWYU%5__v&#o6%9N)xBh_3yrljL{+IW2-Axc3E#C;X@wkx{r8FW^^Dr6|XE+O{=gQOyZ{^Qo7K@7}$7uirEGe}DH5%iPI&GxnXak^7~>JnM9y6c0R)mTpzr zCGj}pbz{h+SzWvko!Ru3?HB%CvjtVy8kcr(r~c`ZaB$xi#Uvi)*{St++X)-FDWfBAEjZ)^V*CB6tJW^^QE%f zjT^!aKz?J3P0h{gh_*D)D01@XiH)T(xw&?hnvt0c=}L_GW7gTINuJpqy>Q{R8K^25 z=U-l)uspIof4lRP)e)?>GQwHO#Bue^sr@VMQXc}WSzOL(N9a+%{rui#tS-;%r&{i* zi5!OWY)Sq(f3C;oziqiNYff#muPdg>r-q(f;0_rauATOD;U-fvvI&O zgLqw4bqeWx|Bl^9VCB~SwY}YzFm()ILxTk+Y8ya;lBPV%$-<5fHS~y3HmDtDXZH$d zYHZxkfJ1d({96#Y?;}$gGy-@8y|CF}0}7s0{SFsh$yl5Uf?(lS(3Q!@~79$v;U zl*0AV7{J8Ggsd6BIUGM#Ra7AK_S|y~V!^9-w*JrqQZfU3(x4qeOhESlRjZ2pu@vs> z^%m3)1rG7Y@`9myFz@6pU}9FW-~A0@E)dpqYKa=_MqFK7YG)pa_M!Uxxk{~iwqhm# z627poNpFYcD_UDdx-uWR+QI24IXe0mXbbbU0+iY$vJzQf!8vYjw1zz2Pj!!XYe|*n+bE`-4qNWG?hIL`bal9IB?bQMMM4Z)H95dFXlgr zL`n00CsUDEZgZj!^D5&^?V(Mu3AeGbv3Zn!)E8uH_W1BT4Cw&g1@*T!$1mVQ?X%My zYrs)z0!&}ywMk63p@KmHefkX>>}8GgN^Sbk;NZJLCX)C@746HP-f8vr1Qii)Dq6!A^B7Z{LH{z|~Tn7{Z)w9`E=Az7Jw zckWPQyzBc18X7Q!FSrv7s4seOsXA_#X_0*|}o}Xxmme`hhY^O6KP!C?XXR5xIwK(ROu2rw$$pdi1J7 zj3^JW(WKSY9jf@S&hdw00ROx}Zc7ZQyh*%5}X zzD~+I)+xik)O%Ys3>YzJ?-Eg*5ZHb7-CkxWrOZSBDXn zNKV3x!sMf$l!y)e2PnBA=y@#k2~cae@qkGecEuI@TJ%0PIFJ%S%(B5e%|s@>0)PeO zi?@CXiP^6%XNH6@hH9&-2D`akH8f;ri;VFAj&|l75*iCP(s<@jxM)16Dlin%;rr#k zRivp3srjXW5EOZAkzai0uPaedG>PVS63hEsABMsV1c3IsihT%g=QjW*(Cf-y9F7CT z5Sy93)U>R6A@M~91J8rz0>0JNRiYEA%t%XnWc97neAH4;2?gtw%ab&AX#vDhZsYNBypz9zjs$Yal>L7pPdVAbMluB_$0|l_3MZp#ZZhI8vnpWS0ky zf8q*;AE{`Rf(*K~WSol{z!!WrX@@aWsimaEg)Q=sE&Nj(;E@92Z1@ul=NQtGm*0JT z`;mZ}S#DvVuBRfxHo%(gO3!m;i9@@#fQLFz^-4=qv$m$@k`o;xqYd_lDr|~7o0>3P zK=@Jj`1tp)GQ5g%S9F;E1Bakm+`IN)uu|yYD=#l8SE&}v9oZp8Uj^u=Mc4;SwR%m# zm1%jtvsn*5NISr*qco=zGy!AHGL+)wcJ!W^81Nh+=1oIOi%v%Kp(In6hxrZXmUr-* zpOtg{)q}oogG#!gnwC~XaVw%d!w&>D6bv_d>Y{4r`(8*79_%(OkK9ptai|?Gv|`=j zfpdNF&b1s)7C8hXNyC&#BcP|Vdaz|w`%T{J<%+1Goe~Hc`;kP!B(3+#<5B7>t5lw6vdLFalr@TL37DK9qd=`pKsNo{lA! z0nY==KySn3TPa2djnd>j_IH#L6h#WDe>kcxXbko;Qvjq!#26 zovFz~W%VlnAUHVIDTJ{UrZHzc!Ne#b2jcB9+fBov>v{9@9pLRETnvo>ar(PIK>>g~ z2zC8Mht(Ve35=A&9u*Q=&-R+fs1r*IK5X!Va9HT4A1_&tvk(&j!-`XU)a@6dgf-}Q z?Rtk{hp1!0KB22$M!Q+{ATh^ISqE5aM3*K{EfQyYSBoNLWwNxtt>kY*)-k8CnG-TU0AV3Rqu(jmspi*=CaFnD&~ ze+4(%)~BG(nP!d%Ur5wiIJy8Ixfs9nP3F6EsYUa*cTQfz3v{eS^6s-?%V-}ayoUIi z#?x+>=v}(dUl*$5X;FXlkrl zhh;8yIjmhAd4%Z}{k^?^OvUk7>4{EAO0n?Ot1+TD>Rj54(PTHb1?K}NQf6C5u|ts| zhGL;8#;iomh|3#}&|Gvpk>{ND-W$NwE#)Fnzgb%5DB$qGy8)KfnlL=V`NI&85%a3q zfVS~);BGh@UyTDCC9Sbmq2Ua*d&hy7P~zLudVT$a)q!3VMsnOJz#<$pRhB5abFEw0 zzQ~YTXEE(WgdQsgN8oYC9e%#Pmj|$w!SgI#ipxviz7dO7M$C)a}-nGtKz!>4WqoxF3>RowOR{51LPcPp4?WIH{{~kL~;Ox7kam<_YafioU(})kbI-^R@ zzq9U`vl_bRr`KwU>B`4pKDabL)qnlSkt5?Oh3KGB(6gJm!x5Ko!Q+Dlu6?#Avl^=k zk3$l}C>0dI>7`*{V5M21TLm)~DK`35DqAp|QJi^5_W=i-g;Wa%{s0Z3)2}cSSSPB3?1hEH5 z6dEhxdBPfESHke;u&9rfbY44<_%7IzRR6 zd?%2{q6gWj2k)B+lmAIh*KIVPYTniSO}x}Fu<`RGYM%#Z{;+-0+uM7&qoUC%=Sc zzB^F^*MF*aJvh$vD$uz?md|0kG@}S}7MrA&yV#c)&{o`WMa)Lw#tn=PtvMd!h85il zsiu(ZsCXcEc83IS-H+pj^R4igoP2KOU;AznPlD>%GYG<4)h53U(mw%k##Q56y$0b%hZ6CN6@` za^A5(YCq%p?7ije?t$lHN(FUdgB4ee^9c^l={P7FyVJYzZ?*Rm6(ZT=&n7>S~0N2v(LNF+;Kczuu5f_-&iQM$W9L@Wcp z{YqG>E5}V+^q_ANI0~$h|JP@;0&DmA*Ri}z7@wH%e*Qc{3g~Hv4+11yJ%$fZQsy@* zqMi5R1($+4(`3)g+Q$AHsTSsQKh9YQR_M2my)M0Pzp{H?V5?cJ3frOanU5bj`Zdp@ zvC}%=_UV|J{EXl&eCO2v3Pb)uUB9Sqa=l@L#V$qU)g3<Llj<2;5o_5iwxXK75tsJH_;X+(YsuQ~OK1%+rVM4#NtCZWM2=ZS_TR}# zN)^3e^mFGUfs70JSxb=)Dhl$<>60r} zzd*QZ>eUA(^~n3v%SFLeWPp8fB&_TwV66W+bSoGM){nPNCDjIg3t*zQ2h@Cxq_WJef=FSMMXhoq{hb|q@xpRn#?widKk>5Fa>}du(n_GEe z>1bnq>;o8jbbi^J{-iFZ`cII0DB%f_1w z-(ax(DZ=8X+A6`3);J128OvsEIgLQ27VGY>TKYTXuSedlN+p)B96>EpnzT&oo3#8- z^Aq;!D8nKZa2$XeNX_gLUho|bZ5aKEvKh@oDu-x7VPon8W!YVnPk728ouKQ6=6GiZ zaMGPzj0?8*7~U25VP<-^w)D9sZA{4+`F@uNT;9#WhdPgJaFU-2C6+o_3aM)RZ9{JU z^<4Mx`(^gU!_PP_*sM^oaX-ph8!xRsVRZYQ=JhdE@!@RdvG$o}1MSX+@0J%BCWSxf z1uYG!xV|>Gp$U}z^2vt~^> zgIi0(nOOzPB1C;;fpD0>iTbUo3U5SNLkG>z} zef~Kcy1X8xa@@-?r?E^S@oTsQ9V7n(arEZc&Kz0IEl2Qx1f%{odt&kHd<=TDXC z&q$EiWS+pP8ZgY86v0+&Ucu&|rQGcHEZxYWHLJ_+d*hpYDzWQyV`*Zz8M8q}V|ksm zpb*NPqv(x!?>jHF0_qSjoWFhP>(I%xgjxXbH$yV@(Fo)Rq}>`C1#jFHw{P>&Shu*)pYo+&$EiY<-$q4M=|)Fbzu((iHLJ-vfAsGvh)p;q zDV?#=BQX+TB0+?_OWGT<=;(;8qK2DC9|7m4 zS@f{4^3hSN7mvldliH3<&((bEsatG1^qV(*=4)>&2y;eXnyg>1CoP{I#m!~z zy`97OC+9)2+{~vddW`a=OYd)KeMo8Iyz9R^X{TjH9uMCq4B^S4XbKAMdy;l_0(m7* zg_!Zm!H*MYUHSV9GhvSI{ib-?V*&!VarcD_;vKxR=H?9W$g8R(E?+(%DCkfp z;&sbvjU^#7Ay=%1V}8c>XHCObNB^fQZ$!TJX7rP6l*qmk82P^Wl?~asiWbzj6^#wv zXXaaK%;mhZAKI@I;K0^orpfe;YaL!f>8+Dg&1$n(BUdf>$Ckq%4Qh$Xu7r0aXbG@h zDLpukS4d&el7D<(w_^53Khd;%8V{tD?;J4Gt@H?gijqUg_C@oY!1s^XV-p9tKb^tT z24uhWw)g$e{fgNo4dU6PD{_2=8TNm#h>DTEIrO1b+4|&cw@ofNvm;a-&E#)`^Vae=}*Wb!69RZpj|u z)ap$gc78@?T&rTaO|=IML>UhyI$8M2HIGjvssh<|j`LO6oa6o{E;~x?ukQZuDZIS; zxT8>Q_T+5VL(hxt6`(7JdAE75%sQXSelea=S#+k!j(&=bnTT|FMLY=Y z^y@nIE1m&^we&bMZc zB=vNet*IpWm9w$mdfIH6Yl%~x+^v#UYW2LFZS2wI zV`>q*Q>@xyN%AFv}`={P_hK*^6zbPPO*R3e$tK8mRZ|4DO7C!k=y5X#=}q3+1fE)o+B#WEPEO8X%qUC~)`UM! zZ`hC@71uEL=g)5SgLxITwV=*Fa<9HChrmiGvXPaJ34J|@;f`j7MMWine-@VEw<=GF zBJR)!e}qv-*x*VT&aXnw@QisY0cLHHt>Txwj;KXOwVXp+U-zIw6hGE*2TlSg@E;tA|q|F*8QW8k)6 z%VNZv>-wD|{Jpnn&K(|Dwr0L{``*YM12NV6R$RBk%f?D?3z}trt6I`jJ<-%0k#X&4 zI-a~KnCjvH^a0Yy&upWdy%+(AGt6Re82ZGnto%`RCuov zT#wFdi-g!%*5`V>_;5;65*V9QTQ$`XQGS zv|F5p2P^=JCLoI{qh}A`tP^vEimr~D?=oQEj0|45Um@3JzZatGOO1gkAAVW;0!$)t z1b~;Ifd48FO)&_PVBnWrr80Ea+Yg^!c*uTEO?~p@N!7P+f(w1S7e`>5f8W!?BURWQ z1Vx~;DFQFQ4gBeFB~r6n`LVI?-=DLGftJ(K*cd?W$xaSibc{xtHN%iac{w>gi}8Ig z?;fARq_9MV8?>HjZf@mRWU%uWXNrCG<9r1zk!GL%L`wTrC`LKm8ECvMliEF($}?v+ z8}%uqd1Wg0uqEj&n4J_!aB9{YS1-6vA#J^qr&LmO+q&_3B&-x|uwd(0RZ)z^-tnT;q;cDRJ^@k*oF zvJu=sFf6W#i@$S0mm9r=pLucV=}l#2WzcjiqL@b3HLAN?LB5^= zqnJ%hrKHAq(8%08Eh_4W8IY&ld-m|wS`QXCeN>S@Uie)X0^tX=O?yj%L`>k8iFv74 z7%|Aoe!klk7~}34=I1rrLDbrN{@mf?$HjSRnjsDiObg?>2s|2V|Yc>uHVCpguv410{*~9In;2N?vdLViwl|*f+=F*} z@6wmUeif8n=WrcWVxA)e_41Udtfx+S#BWAL3NuT9_k!p+w6wIKt;=l+8>BGfh)VBS zgrEqktJkkbB%=wVcRD5rQHHMB)BbOaW+r0v&$;cRM_b?I#|ybrh|@aN(JspE@w5CETp`nRX2$tW@x)MZpB z;03|SqPlld>dl2$e<_~pvt`F!-LWdwpi4tD=bT}?W$#x?KDg5k5OC5*_qMo%1n*(c zy9oMliytu1`Ys?_iM(#;R0IVDZ4nXd`ZYLsoMzJ#Vh%=%HZl6jCEWEUn7+l*Ep>HM z=->9lJ!KX??q0Au;IMiOedg>Uc3xgy5L3hVPu>x|KodF-`BBrigRrLf_5I1n_O2sH z^nj~92kRK~tI?n)y22dKnmlCfkq=^%Rqsoh)iZ zS>t$Wv$?L({Vk&!U$d!Y?+vQl=;WQESoig=mKGFF$N`Yc{!S~1hj8xU!^HUbaYD@2 z%;nt&i4=f$be#T+pBajDS9JzGs}yGbrBcDwFMJ>=-J85-XO{~k5tbEWhU`<-4y*FZ zB6LDYGEb>?mNid=f`bZo0K?|Q$FXK4&(kAzF6c4?=FP~(q)B`W^6Jcjxc_Q6xZF`` z{_OBO0NTY|3sbYC2hCTK^Mkq-LEo#?ND5Oj9%7 zB>GJ$XrTb<6&4oWQnEhV(UA<$0pAwSa}=YZnc+m>jHdk`;EF$JGQRXjYiF;OU<{*8 zy)U=}gV4G?Lk)Fxqd7R9&tJSi27-qcY(CnIIjfYYztY_Q9A_fE=ak((D; zXzol+7En4|-_<49Qx3Xc=*yQ1T3Vpk6Rp5c=6w)Jpa5JM&z{iTpAV=BEB#Rl-10?= z3fE^N_pEaUA+Myg6y@OD>?{u1k3+fXmt=u(tdM`rn6-)y&Ojk#A6L->$2y>*KxuV#O?U2@ByyZqJ^* zGs-vVcZaXr|KEEUzi@xMcq~trY(o)qQ1LhvMtIciVC4z3SM1%l?}nV5yPKPyfdTd| zJj=pda9@-Z6uTj$v=vZCe;dTb%a<>Y9;yoQ55s$G}OV zBdB`pGMKB`Ah^}huT0lV3)Qx<&W^R|ppv|H77XqDck~Pl*O*)4lyJJo0F-}OPYviF zu@ZAEKdPjNN=kY*CKq_!6wx_gyer_UF-K^SphMo%r{uI%xA_j-CeE9Y?!Va3QL5Q% zlx_uv^Xx*hvEot5gPte-7O^`0GYFK=!v$U%#A87Jl_dm5fTMVEWfv)HKL9BIL zB4IayUfn(>CQRFP4$oeIBpO4Au^-W?Q@NdH_2(DpLBULli4Tt_!rlTxN@{l@(X7M! zFIpFWQ^J@nI}V#)7RYbF!+>5Y?&V9`?4ogm>RTFOPSVGul$a{dpdF#dHC#guzVLfv zc2-utBh-8M>gnk4{Q8?Q+Wi+${KW&}I7rdGR3Ba|%HHQ%J%9mXFP4UQi~-G!zOQi( zFV#|c_Go#25+q9W{X#F=VD{rA0tZ@>;P9i-49(R8Ew~T?-$PgX?%l&Q9ZYEVp97Tw zFeKW~#zwDwSnRLtegA&Ilc#(3`7?Tsymd?}cWe}?X^ZY8bdwH?ZAXTTKrz6m9y5Yu zkS%{?*!Q@0@fAAYkGfYvYdYOU)ZYCUcet3rV-Eho~-LGNvx>sE+d&1l12X)ZqFY? zY1*-EabtqRPATX&A918U@9|vjeMp2!veQ)mg&}L4JDshjTE94wO+!xZ0`S7yGEg{* zhrYqI%Oj!9`UpLxf%&<>LH(iCbfP)%-_STy6}i&ESd-YS;z0k#IZMHqlxWYZ}VBruN$e9O74DsJ3!^+Mw?4FJ<=1w2hI^Yqm1zB8f%^nQG0%%Ey7Q0U4%ej% z|Hw;E*OQ*vwDcYDqs)aq{|`UvBHM$&S+k9&XIMiPt2R{p?;Zshd?gWYH{2F+sgsJR z5jEnz46G$Zk!Sj-q~j}Rjy(-#Yy>-*_~9ZmtGSkDe(G7b>+^2=BU>{iH(eNVmDjx$G4$?gSd4Gb zsbB#;^~+@S{eT=5Mc)4-V+|r^Y?irR4y&n3zj2T}JgwuLQqw0gNl^yL(%Ku!`Nhbj6zRGgV_>g%$uQM)cI4K{J#RLLm7Dy_xjgOZN6~sqOaI?n_JHxor8f=f zlRG<4y&3n|Y7omHNoU_ip`BCl^>)s2lEtEiKG96)vRiSwe1cMc)=Ewqk42AoEZiz} zdAG@;Lp3ga7*Q;s|EW)+dO;iZ_G78n_4S7_GdxC~#H_p6a}HAjgi5F9<{*^KwOdL<+Ju?bn15~y--Xw&_o<@Z zOa%p=7!RIn{iD8~i(W(ytMmG>_C==G5xV#_0gk0NbJ?rIsj+DdrehV zb`t634Z;j|Oe7l#M!h=N0@63^Zm zH~@S{!w2sRNm`Pp-UghraH|~;8r_i%90liXP)G>gF(g2E<4DifhNKuP6Wq%C-4nRoG5S==`xnVhyQA-7w%h6$Cw;S<1%^EH5C2|R z2AlX<9NuCtjw!yyr1Jd`N!NIa~tN1G2>yuiGOG^{YNkyHVw{Z!DE)=Ll@QyI7 z4vio%BL9)2eJf^m0}TsW-roGx84kXW;o&{R923Ki;r@P+r8-rlljvF4*{uMwL*)r) z76JR^pubUtgyJ}QxPQ~joryGDW>ohsscv2;{taPs^Q&*YUG~KV-yxs-gp4B7Qe$9r zG{>Z$5P{)Epg4PG1eRU8Uj0$n!hq*?N;MUh>t7&%h>fkNtQhC&N-7{b4SuJJlB z@cq$bRERMDl_{;LfN<;`sJhTAR1YMmqH-(8`pLeTwf(gvS59?9QNQXN{R>1abAFUbpnVCc&y zT0f&+SeQBz*nf5OJCeY=-o?Q|L8D#yU05AozG#B|c}qh{MWsBACZCkl;6E&(l{z$m zrw$S)wA;_2>r5$-f^>#um#)6PwUrgC4W?3!?idYCRn zZ>Ub%R)38rXc963k+;mJ=kHfy45{a{n*o`({f>T5^kV)OrA^RCFKQi z5wIudV!_RNE#d`&(aNG3p$fUM-`ij>Xs`72$MR4w+YBZ6`pQB=OYD_~2FPMc@`F3N zECy@Bpre|e>s>iVT*B$UTLOXxiNV|#)$Xlh6O+*i`^omGX-du|wZU`bF9)BX`jc_$ zgPNMBczSh=-+D8+?wiTqCmbZ(Q#4dC71$pN!7=d{$s$Pli~BH<(3vQhPZwlTzI|h< z@z^gijjVeCX2V&uEayo7(2}HxFn`s-{>dP;z~=B1IR+tl#`naR*Z(MERRg8!Ye2(H z@vqeH-)CcEuebgo{rM?MLhnrI16+1zYI&{tJ}`cNXK{F);~C0rF6XEe0>WrP4!X%c zQ1xBgwX2?#Q(2G^Qmc^EVtPSB@Bu z^|m)|9Wyzb%=*c4{a$7=iQTs!b^Y=4YH5LeMbyP*;$O3L5#eNXo1}qd+gpe|~L6m?Gb8I(a*NrlZ1byg%>;^Q!Hgopq%50V+P>F~*W@`OOaf?W0*r zh6;ftq3%N;{=NgUpB5xD3?(sdjeMP2;W_H(w%!~aarp1mISvtq!*_#cKR@~6 zHqrm^?cB!?cEfRh8-Qd%B#CPD-j3tM(lAYM&PltP^XZ@OzC=fys;|uJ@;@fW7=_z> zp4+lLfqv_6nZFHDva$ojwbiq`DEv}1le{DL+{gWOMfoVH>4e8dU?i8KGru-mV0&Ga zP)oR}*vs+s&-}eEG6^D8W~nzk)+lJ(!s*6zUvUa*)xB&Ww7GAm$02QLN}GD0NII^uLjFEA)hjk@R1FSosC;h!L79Qfl zKXOf;h`AqP+haa*Rqcl8ADaK%7lGzGe#}ObSh@bd*@X#I`S{}1mX@&nhG?E7tAM`uk$u~QPwrn-CRQmUA5uy&3k-|4T9afF=>|)2! zwHflZ`1hJ^Nvm|+*pP5tnXvRJO239hCoe}b&I27Mm9*X2BRpLXbxz%jK{_nU+xLp$;?{h@lZd%iskctSdsLOqvFk?R=Jy)qVXP?m# z=Xz7E!|eWWY-4Ql4|7(w)P0v_v}xAKQVElN z%N)HS)(h`Pj78Q`O-YO@MDpD}*pzHOlgWZZR$Zy4B|o>@d`*|S{-2MpBYk`m<#OVK z@1`@q=<3_+xH#2v|5^7E9EY)hC>j!-SM@#)4Ucultv+jy9~!14`}G8w42~f=9Lu9O z4$*8Y|B4gQ%WFqg`aKWj<;vE2;0*!gca3ISnwpv>pKiS=r3=Rzn2hG;hLT5{;H2I< zaySiAV>w{Q2NoXa>dFWrSCnDd<#P=w9Y~o>3mA%3~~7OhR7A!4OIEDB~O`V3c~W7xY+PLuN$v|P+2k{Q`) ze$pE}eb}!>?DYGjqIadCnP)fDHyD=$W17;Q^gx;2|&k0vel|ESP)Iq1y4Di5Qish-R5yNoVJ3?pFS~fh$K$ z^daq#+q!KVdTugDi1y3VuMgVNJPpC|wVNKK8p=;gGY2%yF2;Wv6DYK(Z2_+cAJmganRbw#Ft=!IRGd;cOnt(C;S2H=zdi6jE;EA?tPZUq z^mM>GmS>C~%F`m&_isgUL^t!qt@p%_EwQvN{V?4k-Elu8ZJg{`%E&??27?Arn>4fPaUM2%Zwk8M{B!)IOrJ3O66Vp+|7-!RzhFW8p;kZt)VjpWJvhB&3$$&=>gh* z)Fab$$d6T%=ks23R_Ld0v0H$X)|-ZO{?}*_u==Nlr#LuZqV(>}DU6_3^xAjcWNut7 zS&8*!?0z>mZ189DS>J#)$@62S(gW3?_+mEd+x%iDYm$sf`aSxX$&L6sP15) z1)ozf5>^?+JJm2JLSE|^{-jSaHhh8R-z23*_%j3Zvz`W3zK^BZ*f09(T4 zw`&W`bkC2xD93&%zn!&l<3h#2A9$WD*kY&*R8Mt6?AO91nxO~x(LB)Mmw+7p?sY{) zI=i@zhNl$74Qg*DLOxTxz@5PK?UGuqR}Q}F_$C^ryZ9z$6Pc$q|3$B>Sv za&~X$HyP!Ba^80SA!31bA!e6w9ysu&u8tT7bN7%PvgPt)-~4Ch<}i-%#8>TE%rn7+ zsTbEkKLw)#ZUmWxAp#?hVI z>)e4;ypM{4AYT@*94(G2sNSTdrD@v`+OImrP&SEm93XCfeitcDiL>=W^BvMD(6%Vd zo*wc(U7D=s+3VM@`}*z*yhZmv&0^v0 zS|RRGRz|bc-`}76>{;Ir7%rw@bCnFSnEU#1U-7|0nn+3vocs3eWx0LmdLo1`Ox^p@ zn}zbQxE+3-yu4+1l2F=~pC~&fNmJMI@G$JgF1VOvD!WXHSaPpBM(swtYK!N@-TvG_ z+QA3%y_kLZR}xs`O<%t! zX_HR;1^mcAB{Cb=Gy&g%+{U@|rAwTdJr8f}c0KlH_RYGVOuQTX+|OOU-EqmlRmSl% zsV*k7ryvge9m|?AS~uz?reCl6*>JgX?Y_97z&T#WxN7~#IGs6d!;IK~#d%?FsbA&O ze6tVLTzB339`IBur;l*6)o3N9TSa{S2i`t5bS+7C>aJQBW=g(D9z+SG-Xt>z&p#*U zwQXJt3mcn3;Re_+b+w%bIpz3q89OGpO2F^6E&C-#I&BtN$_QT@4AuUUsLUCidHvml zdeQLi+%ccV+qH3uk1t}#|%n~QqB%`CJ0@sdaVtP=xlNQ>I zL!x0a8L0E0bWyv(xV-WKTu*m8ec`p9{tz37U<}TQTuX*=1gK`9>AF9Ee#~Lv@JA;e z#wAx_zb@-e-iMmu=~sU>Y|ki7v;3NVyIkXtCQm5^f){@3w-C>oq0~hvmX&r&Qr&av((z7EeCQCRH0D2;apyub6B%L1IC&b zRMq)+&K)0ajPGwdwMY2`Ko-6gred&2IHqQ2v$A?5-RrcHK zb@e%r+`@l$5Ygxp)x6KeSM<>648HhYO1r|8d>7d;q&KJV70@2JMF*~RP46*_&Y zQ*+9kSj~D)UhejCTE31uu{?jI9#B};JU+}vyn|B`L{w?ac-a&x&vp7rX!@Mnt%wj` zCdXG_wNo50bbG{$I0}G%?*PTi+&J?VvJknw=~0o9#bEHjW0{NV#e?lzwmkFjh|JwY zP7Y239|wnb1He6SXzxMP#@B?jVDJFzaAqO$sb2lE#}LJA>#yQRKN6ZH0j#B%7}(ph zpEwbdm)BWe4?C8R3h>>k0?JIw{3h{G{vC53MjOkb-u-TD9|soRuPll`=&O%!;2d}L zVk7RNAm=f$(>+r;4eS2wwe1^5IH+%Zb#2Rf8Kdus@KlZ+{$vhX1+huri$a_&i>qhNMm2xjuD1C^Yw#q7l7sa0mmNvBzz|TwVerK4@Oxi%*0{vSf)Vc> zH;sRD4wd*noV|BAmwo&<>}qS!WmO6#*^!kZG;J~q$w~=@5ZMiqtdQ(vuWS-B%E-uw zY?4v-$ljjU`MrMkbKLiHJb&HSU)OPj@Ao{<&-wYh->>&;ux8^86%@p&;j}P*sN;;8 zr^$D60EAEqR($;$@Dj2yuxe;)Tzf#(hs+6neoM3om~X(UsuQ#~aBHe6u`wVGxuTsj6NDpFy)3%x zYiqbZP$DI)k7zhWhlf51HtM{O@ML)vzaR&aPs3Ig*F%o zMNn-(7N%UpMdz6dcWW3n!=)+TacxZng9wkyu(yPz+No31D^LD{>0urh71hR7s&@T4 z2ok-h=3{ttysxT=#?PJb2_uU7IZd)(3O!q?z9zDsdqbQ; zWTZzz-F0|xruCi8(DbqW1z$fLy+w9vl}grL=DRfw@iSzh?!<$mUTl9e`A@Zc?`N*Arj-}}duAeyYyN=nZ zmsf4^arwx#=GRhizXk*ypa$nz(Ux6q7qbZW<(QafllKqB*vsjGB&o(p*j^yw>16Nt zC$Quk_Bu89;(0X(qv9mL#O$O~XyXm^F{d+K;}^viZq6tdhDxnyqR5@f zV-U6ZIY#sDD-S6MBs5{z1PXM%7W%28 z$n*8_`Qwcq?U|d~6&P3ES5i^AC=LSgZT=3R0_r=FN{ti9Z}(Yc7njX2F;Kj*a&i9H zq6HW|L|9@oUFSy~9*71SPsE=OEBFEI{7|(+F$$e9_9HOBt8-t)pqZ+E<-a?inx#;! z$ZrCqlH+9$VIBDfO2}H28hgze&X|3f9hfm8!R_vJI~-NF?*mo8y;M#rmz>CSJU5xBUv&!78nPQr&5 zP0k>DR>U8VyI&GZN+e+AQf9|cjXrzieG!Ja{rv_isL+)oe8RuL^%AG>I1;;LWn_*y zHQfaH4M-2vSP9AuU^@~cwZ9M{fr<^2UcQUQz<>scF!6DSn0pb?eK92Cc;p}z{=l#@ z%Ld^a!jb`rmg}}#(U%kEtAEcVCbBnCdX#{U2aP45fZe-xy^_``(a-~#QJ!@cbEaPB z)ssYb_ym3w9(Y}B(Raan45m7Yva7}`&sUT z_l1ek6;4CF>bqV(K6tkjgsha%W+YygjCudwOKq5k|I47iOrrG~Byer%y1hL;>wFTV zjJa7dqSsX5=d#OW;@dg&th=iJ9Q#mxeZC%JJ9YQ|x6LPLYDe44*v;Q8rmc7K9(?#h zPtk7ezZjhV9Xe5H*4euQy>%Ig(=|1+JVE$J{~AC_pr)s5=fl;1m5ANy>+3_eW(wcc zoV(xg%wRzPg)qX!bivLX6t?n;ned0jI}jpIM@^j# zd$}gxo`X_SU(wv@z`?F3sPwlbswj|ZKvy3g8Zt69y#aqBY8$NB+WPuyUMI#;4Ztvz zjnTKQt4nUEn}anJtig?SG_J2q|1zN^^@mJo%Qbdt8)m;3WqsiB`87Z=6`B!~AZqce z6mKtvbGRfMegly6Jdq|)U44wfe}~}_tj^)t?B(TUoZ5yTL27FT=`CA>o0>WREi0OG zqS&&&$UI>+We)ez0J)9-SXneRt^k6P+}yT1y(B_W^`2ZJdY)<^yg=!)t$5Oa20uM} z^mTpx$oUlY+&yBGId?^Nrw-Yr=jJ;YntTNa_kRK7AQ>By;sXbQzI?fuuMM5D{b1F< z>h4%v2vXZ**uUQbRAsydkmMuqg2)TCHo1WzVRp7a#}x{+xL{!2gl(xYL>Qc1<5}T>fQs| zG*s0n=ctB$Op4>am#&dua_X6{pBmN|G(~S3$e2H>ci5=hag-;{_MB0DWf$#GUJn1{ z#9ETXo@Hd0VKNI&28t55=g%?AMOC04<;ah90KvF4XCPV?xP!miA*e6403^1lt<3LE z^5T1r*GW9+2zNYtfE$bsD_%uM=Pj}}?pt6%p%_3LPFSRX7wzNiec#wPsu0^RXwKY~ z2kGhkE2q3SF%plZ#;o}22~-y%^IqHHwG_U<1n}KEJ?!mN9ygoGG$wq9oswS$*nd6q>wRE&jh4HiPehh_<)u#mS;S>LN# zc<9V7E+#avk|4+}L>I`j{#1F$S3_#%l85AP_n6Sm)yvs7l8urVGsjEoBtQL~9{9Tr z&EYrY5gMr(6pM5ER|}Y3!H4b90ap`dwAfI~Yic;bx`0Fxp1iP>{rb_Bp$|;k>(>*M z6!nis!r*D|jsaM~CjS8S-yhLo9WeVsS!`@-iqcFbPo6bE{0|3J(Z&!nHh*|v(rVnk zed6q%)RJ3gx1;F98yj$okn!HT2PP;rD6T&0=Bn4OVgC^+&>K5L%_E|3VgkO)1s>PS zAEEVk<9Cy?^~-+sFD{oYNJ&-I3ddq-21v1tb*J%sXHlU;DWsZMml5MzPJj3?*Xuo| za8NNcG<IPs%!88+>K@sG@2-%2b<5V3rxYZm|1=)CfB^%4UDWM?b?^0D3Keu&d_g>7(o(m!s{c-)K9-BPA7U zyLrc;0S=DnloYug`oNZ1IB|Amt)nM`vK;dPpIg#ufKCTHD-8G!rTF>%JEN(lMgy1Z zPBvI7xb}d(Buxo8Ao(DQs<1b2BsoF0V0LdDGOSi=7Ce#*age2Qaym8Z`0(LHni|Ix zgu%FXJ7P0j09+(7dQ6OtGUs`zVO9qG8S?^Z_klmO#Au)U zJkf5wIUDe!emu0_bR^;V=R-F6JzhH*`|gL|5%V}#vdo%yfbY-5o`3va62I`cnuK)8 zHxAS{#Ybt18*7{%(s?k2HU6bpSkV5A$->W+kNYz|_FwYTct;8orxPT`jJ4&o3+Iv# zZW_#ooIb;hQpNI7zot0vH>ZY>XV;lBg%~Ov1C*M^A}hbdUc<+bX=IQlW3wNlCDJmC z78=5C)&YW>X7x6Fb>L|uTZH&xmlR7?C()UeUUVh8sgMH-moE4UWit5k$%F5<-R-=QJutlOalQlF^11T9Tg zOipf`(n;N3lI2_KTfR5>F6~lWX4TP1FLR+?i7kui7cNAdm@y8DcR5G;?fs2iRf2N{TuJf| z*342y4~c2~LM=BmeW$F0d4IK%lG+vSiq(Di06lS1-Qhbs!J4M0rfOt9M$6!1!tBCh z!buh^YH6~=?Ds=c5t6``EZCfc(+?0&lm5FN8TpB#>-^Jt-0TK>>`_LB`uxY{_;Z+e zBCFesY)lrS)I!$gUuI(JNbmK}pQp8l7}O^;m`SuxviL*9r8!N~&7VsfZo9V^eXjd1 zR-^OL9jDG`pPS6Fcx0d;Mce~2ve|v4AAPI#7at|a;MQ+E@p!1{n!-t!f2=ERl#_i{%quz|J5a*qC7?nourQXceo2+A@OQx^Xc5lJ4Gu@q0`Wh znvC=ZgWXA}Va}9f%p>cxPhx5Bp15$Q-JUGpntgozgm6^s^=4(#50;)IEvL9!4^ED6 zoXrt20^;@Snd-R%)tzup2*SY<`bT`xi@^O)G+cG1BxU;&A`J3LB`R9eQ#1m)sQu5S#g~*s-s9%vL?G5V`?J?zg!j-hOl^7)B>$M>f!_pE=`(uT`0Xh!O+<5j( zRhRWPtkP7)|66aYET{?v5_(m<3sPQc#v`oJHIl)C7}CF*U7zX)yUG)Nr$Z6i|)BhaauGRlatC zDNZ{`9dLF54L7Vsc#Cv6jJ=QPH5WoD~aKT zvU1ZRA9heUb0H|2TU)lG^Av)GYGmZp;9#s$n1&P=&{AZD zqVXh#ZDSv$461GBlN^C200ywW4o5anIa&Rr5AJ=Awzk6(jTVl??>8Y(RA$#rL9D~2 zEjAVwM|GhYghwKmn`Qsom1D_iKX?P~!7%V_(u<0Itj6R#%vsMontq1@pEv*IgOejy zu1HEM-hV_|j;XFcW0*KtbG4QzPQMb|#=YmR!`0KXV>J+eZ!#y@T5Hfyz}F`v(|DLok9Au`7OQN=6$-q!Cz#bKKgud|P{`rN`!y~iV zmidmjIivTH1c~-r=JumU!P@m7-y}1lIh(FIM{IZ+!K96mC4g%|$LLkVS+0_|B@*u+ zSQx&XI`iyoT9$$ZN6{^luc%G0U%Q5#42xgn%o!BR;V^_pi8k{ux;zv>v2mRG=r}Q3 z^z!yb!w9HqyKF2mN`B<4u?1dNJ@1=+?A3Sh3OoYmAymJ>2bbJDbMP-*Lee;VrFKO9|f{B-h<`hw*aA&<#M^5 znaAae%`WBwA|e}Y6Fu&ja3C>JCXn^sQScJJTdIvP{3RVJ-)<3$<%3Ajm(bO*OxBWN zQMxu}nrcCYUGmvpLFE7<29sd*f@ylB&+I75BiqyN^lI>iYTmDPYeL^bD)Gdv5XFSCfr1&^|Iah9)3ER$; zhf-{duk+?slo@#Uzs}cX(q?;&Acu`}6koo#5O``QtgFAJ!qije;1LyJ9SC8@IwW02U3@?~V%znwMggumg))%KmqvFNehL>V@ z?H_sPLjld?_fw0a9~_pt{SpNl<{0eRnxpMi&xjVZ)RENNrxZsi2X)oqkCs_mR7e?w zQp?&432{kt2S&==i!r8XE-fgE+Q%NN;VyWP{cAaQhM7NQL4l<3V$$u!rLv}vUl>;{ z;!PeY6YCiN1@jX-&y8x@-C;`4TgCRX(NwQBX~cR-3+`X>ey`}XN$>umGNA?eo)>7; zlWzY#ZrLswWTKGvCEcI#rP_x7U{Epm=flEFMYf!%Z+DER4okF< zEZfg_k&f_jX?ZKk&Gr1ie91JWZm!9Pp2lXAj3ITiHZ$crHiR55j+%Dv6nuL$EbPST zNFdo(8&1AjzOuhRv>i$oIXl?L_5L7wrs_n6V4VDe0w0Q_V!|~eeJL3w!VXpl|~&4JzCSn446DkL;i;S$2{CaPCTlL zFII&!V@p^jqf2Efn}V$&u{LRXS*8q*USVg`6MS#KUc7sb<8)B%chNe-*FV=wEq7jb z>^I{|Qu{!D_dkZA9zE$IxpTe3=006*R(5>PrvB-Y-#4%8>jLZI#jn1#@n$$^e^2=v z+pf*S)_!e?7Z5Qef_>nfk9%mUh!n4-xNz5_T?D$HB6cW^`Ht^!ZF2S3S>5$# zo?G!oN#q>)Eb&ph)O#W>%qI;HB_Ty=;}{SYWhOuxG2lO!5WNO(i4Vk-`ePIqp{;ihJv)F$4W<@uy-Z z13H1NUnrd&I(MEJKgh6F_4=X;h5eOri|K@iDrOSw@%zrDvlcA(MqM#l(*~f5PIb>)9h}^vwiq57vX@(;Gwc~9X{+b zD|*ET6Nm8pX%v}R+1W;EF1VV<;VvTE@sBzD1}q6oJ& z>X8aISa$vEE#0e&4_Ct*q^EJAe(+b=+)gFl!Y{D`M0K-x6SFcEfJo^;8# ztiNe;s7=Bf~&%_7MQK{JJbp3117G}LPXg3gcU}nqG`*WRa-X;E;C%L%+06982RbT&qTbqCwHNHEi=LNI%D-hL)`l(0%>cv?mcJVI3dJfoz~rP zI7vK;!+fmf@4X+z0m8#9h3c$d%@b(7<=UN!e@>2hQ{*_V#GF)U7s^^5)D}8f!hIsM z{8!a%r;qKu&F0-)R1HlGW*k?!s@oEOe5rGAsyf6LnH=-`BftKE>+RIx9mo8nwKTg! zcTjN5d-n{QUc22J68ixM6r=dHaI)aXARuBY0cj(638)}JK&a-eha-Fynq*UCMIttD z6mJ;-PuwfKTchNnPpb`)Z-pr@2tt18Xyb^MsSVaO)kf#fp9f8~=ZoGc6tFZkdkLAP z^of%v0jS=CuLU4Q7Fxst5p$XofoN)A>H))i7;&Nn$jCT_JG%SC=`gX{7($>ltwWqm ztyaY?<+NTVBD+scNBNdJrw?gs*U?`u{y98tYBpy1>8dopLVL#%%D5@u)G^6HlBZp| zimi(Ejnka@Vmm$-!AQ|CNi55LdEr)QhFpE>l5rbH%fk9w{f&PQO|@^7q%5Whirf5B z3m%Qd%G=1V8?jcRx;bv(?z@6@lu%e7AqA0863pR5r+V`@^aU4|JvVZJb_ApY>z$?X$HG*oA3$=1*%C?VmO1h zP$$ofVVNHNF8(tzvIU`frUipBI2IO3=4FGQ9SeyF^|`pm@$MJoir5%k^#2;T*?ji=!cTd7o4Nj*o&2+B z2VUro@8FsWto+&<9HDXF-oT^SRLglDCx5!INV}aIjP!B@vzGtyqbynJ5T8=7HDpfG zvvFx$pu9gj>DuE895^d^nuUP80eaIA<>pxK!pl!oU4Vz_K>oaWJS=kc>GB_&mV0L; zcft`+t>kZ|i2Cw7x1)Emv0{VPqIpxjL`{WBv??+>deWcR=Xral*=f>-iIaQ#4c35+ z+V_JMvVcmf;6Bzb~r4YTU`ii%1;ea;5t5+8qOCL(~zawf+4Y=ruk zUoEzK(L6Ekx}}yw{?qA4;|sxT|2(qVjHR2Kti;vIi{h*5iBHRzn2*!jxfHtX`=8c^ zcAL0iL#OvMH|&HN(a{&LUQN%G47SC9#Tmd3HrKQYZBB;O`S|*RDdOwp z74Eo+#&Gdv!3h(s!tI0ZCGNZ-8Ddx2>(X7s7<_XyAIF*M_3IOlIQSUpO8391<0wsz zn0n^gV~sLCT)%g4L9_5d#;N~FrAA!QJ_-s1T*FBjY4aB2de zT6sog^Xzz2fb9(y^G8aphu7abXy4k%n6s30cRC|*E|07DAbM6*2pt6H?b}Y{+uh~< zI%r`{Swz%9VPOi}IEH^WU;&lu%HYoCQ#JBh znk7BCgVKur?lE07%?&>{>*&STpMG}|rVr4a^N6#Yd3c#Q{Vpwc=|x^bLZ{bCv}m&z zIIK<$KS+p=2_7>WvK?D(i!B;%eWY@a=fGm{9e&yV@3!j?>ZxUcgOKh#$B7eHVAlu{ z7`T2In#v`Z>;<@y{GSJUoy&oja(o?i{jV_38W?u8Ai^ZSx%{Mj{6@zVkSDG8Y zX*1)4$v)9ycR9tBv*@8%d8@M7fktq;y7%V=Uk&=JFY7u~din0sX&5;?`#b4(B(Uaw zdP%~*(yz5OHBF#Z$i`vpjL>CpfflBxe_7@W>f0i*o6%P|*R|)xWwS$S4F_ISicuZ* zuXa|dkGo$UGlOojCe$yLfHoS5u1!z;sEfvA;df%LRp9(N@q3(BGuK02dOP~7-gR}B z>*P0jOITTE*RzGH8@dXO`u=e|$HWu~CJmU8-xCaQ&mX9}nWX~F;Rt9N@hyBI`AZkM!ag&yf?PDF=A-CotuUv4n2qI)T!h3EV;L~aNwsN z-yzze*~@HK#~%>wQ0c|L@4~}0o*s%gMfuk~4xh^Z{>fha;5%hvyEu0&kOSE7FJJj! z2D^t_{jL@YGHkz_8I(#4TC=tLcRTz%tl=ysF<32lj`9Zh%?RF@KWUKp$O6SoN!lE9 zKs6B$wtv?T%Gb5Ov0=tu)Y|>p^@}bWSv+J%gyIt;6xYw?m6gT$2upCg25*AG0_XLI zli2efZ6)^_ADx^84c#uAD=W{585FPQ>x0$Qorphw(Em5|3JWKH73l8+A4(qmefnAN z)o$Of;Egfn1>FOKsE^x?keQSAz5ai@zVvwz_hlDu(RIfDfA0nFeyc=(z1@nh=+;8p zg`c+19vlmtpX^6oO|ts*M(ra{a2B@2AsGuEbSZj!pM8F`G#v%<1rTWzu(m48up_aV z?3UpKW}I9Gb^|B^NG<0MlvO_rZ;)Y;{QqP2CMN<$eX;e33QQ;<+;mkQ86EZMA`Ac_ za|N{&W*r#cfo-9JRO{n~gds@s+(<%XQw@>PGu~D*1$yB*n7t-(Yi5;Sl#!BRL)JxE zAGgk@_K7@ah*hCKXgY&2V`YOOKZruTd*LW}ij`Gz9z&o<{FiQOX`w)0{v%n&M>xe` zym565Jhq$*;ErIPf#~XL@1rpZ&fNKqB9CMD<(m}vZ8PV4-hD=044f{8%%tAp>L~&P zdq~{TwFkeC6@I$C_WGa4A&uQ){Z=J6o0T6g^pQ)ZUZnSbyVz4R_IBO1=gBEa28X4d z6M`uMxn8RqTy~zoXYh`LYYs=1?a9^OzQyhX%nyUIBm`+cuOEuO%={e$C~O7NVi*%P zHfF$S@T76OSe~6MltI_91pYJt2WOqu4%!e~2riWR)d~@Vjo8 z)se)q;4ce5w6Hp)hp@WG#>e~b7CU~HVM06b&+(v3T8N*+oBa2Gjy(Z^n8Kv(P2`^gc5ih5Kx%m+OKP+D0oR}72ohHJO307 zk}BpzPzfYEZ{PNQOG4_;hVI5p5J6!*u-gr)KiHnWdsc#02W)>(_I%Xf^|}FOvH$Lf z%=Vt1iIp4HdwZYH5o?&Thd^8hNGF<<;{)@R+N8}0@>6z2&tlTP0~z0vv-j$$iHS==?{ zyeP^VKxE^c4s(KjrzyCsZ!aY!*X#T!oFU&;Q&h|`5s4jgr)1hF*<9T0?COHA9g-*D zw`*o%BHP(rm`~3H&fAtz}|Ty|)lb4~W?UY6y;%tzW4cx#*5(e=YasvxjEX z{->ioTaJ*I@~cBZzlVlER7{o}zfY3*1e8{3N}HQI$3f5>1z$v1-+U}QFS!A-n?U{^ zNWY_RNS_1i4oZcOCU3&w#4-Xc^NlD+y|bXnbZ=2XQiqj|4J&Q_+Po<%>@j5q=J+td zKD?-BZe=B4e14MSkdFP%>N+utUt~!E-eATKcAlWB{&>?BtmXW0%!7Ty#t685H|a>W zyVgKi`v+VDjs23hF?Xn3?fNH?ynft^H+0N2uxfBOfXG+Urz^^CXQAc?85V^WT#_B( zn@jAMU=p)XdEmCIYiXH)a-~%7pOTig@b@n)3L)0L9(PZzS}0RPo*oH+aEydVo#O{< z>v!4n=O24}?;BwuSnLdo(&M63Hn2|Y$u^?&tgy7O(97S&4PL>P$d$(jDI9$_ZqS4{AwYH*81LlA4A_q7thL+o#*fK^+Q9(%j!+ zzPWj0;HRRrnd^!b5z-9#>2>q-&(|R`9sZDrTjRYey-`NVF61qcKO?=Io0SWTxgGCm$l zUWjTMeuxRM8iv*m2{EkWKO7D&7N6w_TK)fwlnHlU2TWW?$HwYjWBOQdr;c7FDm?@v zHkajEUDRZ&b;7-{pY|(4!Vfpy7>HQJdSB==2Pr^~la`j&uU@(aV6v}{>24O>>)_8^Y75HqZ$Ev%^D@)!_~RV=cY&y|1P2Asp+$Bj zv$=6t^5UyWabl#u4(nPO!cRT+hDua38IGR@A3g}*z$yVByk+Y9^mGQeb#MX$nSjx3Dmawx}P*u$VRts3qdvn0v*B7b$35Z zPhTvm-`3cOguDua%;CNYS-_Xp>7Jf@oEEPAt=wDq{kyVAid<0x+T6yrg72<3p>Y9; z0wT4R21qYNC)q{He8k6OdF$Z)n8qllnEW=Q3j&XkS99;){tv%1;Ht-EAaNJ_W6j56 zSV{7(W@9r$>1sFM|5ouEc#(?C`Y`|dAvf3CGxA8Z{i!#5MV%}H_i}qEt$&FWbD#r= zqohctmYM?cIt}0Ry)^l{gK2&%VO*8idjZ~PMTNgJGB%ds1pWiz*Y4l5`8k(bc%F9K zg0@R+@1M34HFWxsmxeR$nOk6;xG8w;rn?djRGWkJekf@xVk{MQ@@q;>6pr0gUDxeTTGvf2&1ragT<6nbKvp<5o z&~`5Apj^8Q3suuBTco4^t5>B1f2$U-wYSXiwI~l-AEA(n`XDWL>sF0>T}e^YP%YFtf* zp7H=49TxVRv|A}kiry^3p2Zfg!pE>V7`~|5XTTrQPzgZDO`AWpd2v`7_lac(*w0Pm zJy~$z1@4ON4Q%j+!FaTaDg2ME4>-lasPnLsgC0WJT?sHi?-)Uw`9q7I)_#FzvufMY zQDLhy+re6r`lqu`hL-nSf*fX*kC`ivE)Q9od<7l$t;oZg(LAU`j?sCJqztPeBn2S= ziCTeARq9Hkfj!=pBn-4pn?R16sFX$}7xYYty;%}lGxc*rNW{ztst>^2YpGh`2E(8M z(YA)L{pjoa_weDAP^yD8H1IEgb*R&DOUS9?7~> z7Ybf1W*nh3F}(iA8T@~t(7eL@-EfEM`hzy%lH#z@D-N9SRsmIq)%G*&u&~I1{?GXs z8X2XqUP(rcDi?TrY+?e(QYl_e_5g)7rNu=56*>{GL3@mz>u%C?$XTUhv7I6yuv6)m z#U^UL`@7el@9N>5kULpc^ZXPC2suJpLQJZx*P#yn(YGlv__aR_#QCR_bcdW*e7KSL zHMQJ5Tc^u*fX#X4;M_;mW@Y&+gUvj>gEseT1&O-y+fJge{Pcy^OQgpH9KMXB7LWR= zZEv7zzx!l5oaeqK(}IGt@p~%{?o1j@62PEIIu3*}ng6@@z_%@#7)3n8DB}E{BObeXJ0SdH2n^k34f5I4<1Wq~>5CqP=qbi@(*W!{8zH znM*&)`zPx4S~y10zUpnqKE17Y@IsH#)0D*U3|VgyJ+rbAsfK3Cj&x_t3CwjgXMRMW zkw;u+!n=y1Of*o460;;zOqP#bXAkZ<9)EpQN$F0>+&*HDB-=yGrcU+hMQH>JVgAaz z14NF}@Ha|LtM9^7M%anFcfOWX@hJ$&4F^?{?nUgI2h?)*xEJ4y2P0#WZKD2%uW^!K zN_-Or9%46L$=5Z=G1ntObTer(k)s`AwvtL)lexKB{N1}7ePb1+q%5BNi8 zeV1XZp*9aHc9!kkyDuEkZWiX}`|XBO-g5B8#gJK*hDjKyTxESuGIwYoxAmjI7XrSH zx)ZQ+&ubVz62y86cUX%X(6@jw*m2JWnHA(5{QUk$VBrA1mG1Nnw4~!RfBzmcg2Q=W zNJs}dDe#+QHsMU;G&ATi7F>c_J9!0CzA9yG*(oV0G0K=?`<1C*0FZzv^orKj1(5ZD zdkfyGBDV`$v-+V~nVkQB6j3WM z?&+dOsse89WbvCbGB-=vuzzwjC`1_IFvRwVO>Abx8U*p z@-2TKR!Q$&yPrnyVrPE&lwESW5zB7QfajVORk26=AMfJdedgU`C4SX!vl{a1Kb+n( zaK1=f6>Cy{aiO;1=DSMk$!mTNB+`cvwH z`Hq`uz$o+AuU`_I%U35RT;U%8Z=6QDe5?m(%#}-F#0q_q)riP9Bx=9MJ&d)!0K=p5 zTq+|-ZEK-?%)BK<+`Z#MLh9qJ3mhj;(n`1w!&^tKz^@Vf*NabXUXw9;B)MLyN)ev! zsMO&kmOde`RklR({bPY$TKqfLoxZxPabukC4k+rRM+{%ige)INg#^Xy>}1&s10C@4jUvJ`!mobTtC4G8v>UN_oq193L`JgBemu3Y7neG;LP1T%3s z=p>){4vAb(cX#Y9sM@ckX>(NSW*WF9)*!*&P>(<$`Kp?q^uR9wGE?E1>T4XSvkMCw zXtFCd41_Z)F@6ar&LV>&ne%XRIfK|7xX%+v2xc@m@{|+gSz%3d78EBHHhTkV7!zt2wX!|CFgG%b4b(1Nmd@!~{B7`8+kX9bcdIJLzO_hV)dz2b z$De9r*(l?p2IHl&F^jW#LjA4ftS=uvcyJaU*P1amXU&ljfR+BD!S7J`HBHSBsC9>7 zel!SWYEundJZ*p48GX;76kj_39!d&~-Aoid+`f13oQZNO`FJ==uGCZ@KIOqG{j46| z-n0X2aPiTGKp2|=76igO1>cq`76@H61=fwOKd|yOqetKh?u5!ecrwx1c!AJI5<5lo z7q}Q*)ZX{tHTxrU;!2SScjCm3}yREUOW)%2b!2~6Vv^=x+_xJPyTL(!cMr&G7LA4^Y_W$ zfpyU>t$Cgm)Z{`VSrmUMmG!+1)?x?%lZv==O4rkycoHwSsh{VqGNIjBe_df1zM?@e zq*GXyzzcb9TFPW}0Dct=@j@t-Jgd1h}qd89^(EHO|0j0Rb zSeo*QEUvEnNy%!@6!O&L>}Y>9>>BSM7>EcDzbqA{bnxIoFD*6GEuxvMA|hG^vx;}k z&C!T__#uJ!tfYi+Gm1+vh;!(Vb;7%u2L{c91=Qp|d&eO?;+BL6NnTNL1M%2#TfwKH zL(D6raZq`oGnAp-v29x-ZZ81{^vii{$$8QPbEP=Z9xy|4jbpsM>%dyRVgxmCQ{cb7 z!zt;-RFN@h&&r_|bNmX#6V6dDve0ddU@HJ}eiHB`2>w{hIIi|fxXZ>-MdI4KhpL(lQ3OC*lBKBR5jvl`7M z$Hvc<2@5M<--bAShyqpguHU#}YG`N;L=K1@uGjX5vW$$3L0nK!+pk~m1dEbjYB213 zs2wD5@YZ39Eg+DM-A~zb^xpu*d+izeV2<}&A*Z)VAQ{kBlOP4y9sSnP2OqrG=ms=( za0o$*Fj}K=zbqvMBXEvD+3$yzFQ>NRv!;3q+2(;Nb#`=&APm!}fzh}QLIg%}M|Kgs zUj})Y9H7m3xdnJ8IOn(dHMO<7(S^5!26fLbY&hDXyC?*pkb9@8ogkcJ+D9FUCTcX{ zsa!S8+&C$a1V=r9M#$6e%0E!wL0$mxGy0Kn6Zv;#b{Yhu7%;(-(V9;Y>+0uq)8fsf z@vmb-QoPk|;ji7g-@9n5m~N&`za-x$6c1_NMBtGtYs?@GQAge~qjI^^(~~|B`57q@ zrbDv~GCV<^CCuLs9l21bzII41&@|GC4i|wgD7IM8A?qOW%ry$1Eja{;pgX%7sl1ki zeBi#{CE&e2u7{t0a40i>SpQV+aKY|jx5W4H!Qp@YPHh5CIU;61*NvrqYJ{&H{Fj$6 zzb@B9QHc09lu1aoJRuG*zjWP_$-%)NKR0UUw#&vfef=tBpFF22x&3NGb(AD4NA%ti zF?(dc`Nyj$$jI;s2w+%7WAwU-FHklY=0ZPz{=~X$z)8#+VC)V$0Vo5|(qSiT$~ou{ z#U6l+?;PCRIq)EvpAT$xnW<)TcsmE=hUUNlPt|WB0#Z?re(w48Hc}Fn+b=y?pCiE+ zf?iq%yru9&1Fap1rcA>oo+bziKR?+u-`NJgjG?`&+`qk@MzVZFZ{K`4v9&35m9|G} zAcc+Z^=0i$Ywr_sZ$O9VbP8UYRWfzn@^^d1343U>uhjML!P zIxU1OHB(7=FCBi-vfpJBdp%Ut@F0SH)qWQ?6yRVoMQicB(4wA@;nkrjUqJ!)LJ^K1 zTGaFq4#9=d63B1AHQ{rxd$)bxBAT&Bw@A;EpXp)vC!G|c{Mc^`lC%`naK928^ z%6DV;I5e{{-_w@0 zpS&-`yKOSB_}eZFcpzYw7@YZPr2|hr2)wYN@1Tw5_ZG{B{sAKTNWX7b@{I-b3sQ^3CR8pFL|FmRtV-=-T60d@? zB~Uq_g+D4Q|G=qZ2$*bKsp9x7@8%3Ib~~&-hVgjz#&-Ee(fLXb479*<|b87208`R;|We^p^9+<53hIc7N>5o{oq_&ME>9dt# z5s$A=S(}u_6`p(Q&9vVvM3Wj<(#IU1vHO*uR)0OCEa!+Fkt)w@ zDoc%NHN1V>LpJuSa-{k+E;~zNL++25#aR584#UO3XF%M2u z9fx(@&jW4+Lw2}-NT4`GHH+wg^58dRu?M)5g`PyPPbKK%nBNMgaI!}! z#H!A+al5W2v^YZSQUxEJYpMCS7>&oBuOjo!PnZz! zetL+fEUziS+IqXndU*%eaNwm(%YhimvCfsPWSpFhG?yeelzbC*&Nh?aJ z8$>Gzznh}-^Ovh+PGgtDC%~BwCQaol*vF&;MtuY~N_oV^e^yt^h$Mk4pe3+#tV*a~ z+klU#LnahW;YWi`8I>*8YD|6fzHyYE6;Hy1&7DOus2N87>4KFDv5)S=P4w)+0RXvp z*2A$@;NOt$!NZIwJ#d8EKYA4Yoe(awA{cuPE<4{E8uAEC;WuaC=;~BSWYs({=SSH@ zfsmE<)7-o2UK0w01IfqcpX^b88h^(aJMv=A+vB+MUB^mJbQA0Ix>0xnACL zBoHApZFp{e-EqJI`X|I{NHIAHq8%8Cdl=&-k)fKThF1+mIohVC%XBfVciAFPDO@r% zjJ5uSBMdDHb{H^5uiX^07uV(>k`m<)wl+2OPforK2}xq47{^9ajMutBd{tgl-AyG) z8+{e~Rr>>Pk%|a=+&P*I`^$Q^eP7(V=y6uzg^j+5Ne6W04=wtKodLxMrc8h7DP2hx+K?Q=14QnVhyp$F!CgF8XhK<%@Q^$eKHblq8~F z8OMt_BLlK2Xsl2}-pn+pK*b`!&z~cp=w+a<&llA!w*GM}n6lIan-cs_u13QV)xg}G zS253|g%fYrh-N2tP(Q1--Kad!|4xlNI$A|z3EJ4~$xOhmu%r_m38CqM18uOgz+*)I z>5D12yN$wbmQli4`(6)T-80>Fb@zdNG==A5mSP8&S1c_oeVjlVIUhdI-QKo+dyVqQ`(PijxnqgvN>f7 zOQ+}WkLM=!y>a*VgQ>3(~ec{%JhIXf2|;@IG~s ztMHlssIiDSijwr%bX=8QII$BvU<^uTQnMK&{{GzwU*8?CFX0#Q<;|Ih(@$INT62Zy zN#bvbcOKGF?)kEofqx7>Mf_uTL>5nEiV*1^XNt9~(w~Yt;?|$iClHE{Z_+;3eG~oX z{DJ7KP@bOO6ohT3{6XT5G~nK*y4$gleKHI26>*k--;8^Tr?E=h<`titX~j2w0@@%O zj;M(*7E=!V-@i~VzKyb`0`ZwY4=GWk&b!1Kyd@$~<@XbRnm0Xp$Rb?3O`WV!O0+&u zK$)=aV|_^+X>C3KvvkOYW0%IlxiIvgm=Y7N7ice_MR@sAR_?2i{vrrOmX=w==-F*dUzjKKfV#^25cO60NTtA0 ztn;oHr4)~K&e#>5o>g{FOCft_D?942c;)JypB^v{Yi4tTMJAKW+FwjTD_XC3(j}=S zqe3tqLbHfa9S=pcYse77dJbr{ma&%w^#9y`{{d2qM-EyCEGkRObGvj6;pDi~nn zY}7Y4=CGk2qKW{;Yv=&t$;L$FX{Nh+H?BEUp;N*(agaq&a1Mn8>TFDUEJ4nxn!7I# zS`>gmng|dE(pr|9BR5#?Q@KN8tmb7iH~jtAFFn3rEIfDsr8k}s*R&L9X8F(Kp~GrP z_qTdh4Ao*{kA$_L6;Ha8RD|UVSiaF^F<7cPSb0g9+FhT582T9ClRz1;#JH7eHv$S*N_M{I3*sF&AX z<)1D{6~(lvwYS#=ogpMLE*rCv6>l33sm7^zWP7GttSvo2FK8V1;dt>a6r%^HK?1?a zlZG94NwSGpsKEw!bB5iTR(@_BO0mWwaiP4fI0S(FAl)$=EmFeP zLSQ+7Fwk0pv38o9TmC%<7gr(BLMYF1jcDW>;8DZK$g=?2jo+3+WUJz+hq-KhW8*1K zPTAe#P`u2WZ!VaFYT@DOd85$g{<}(~>@2U%ln2A$44bJc+>gP?fXzAn1~NkdFRF!M zWSgivZh_mfx#YWf_x^pP9j(uPrPCIfAz%Bp~3p2#^*$ zjz>7op~FFa2{K2laJfeVJiR6%WIlDOvA4Iks%jXYikof_K+{h6E2EM!_zSTF+@Dkc zI+si~t3+6oS z{{0#7^d2ITb3;NyIeW;@j8cf=$i&1AcN3G^%&Oy=*z!z{XKa1PyAYXfulCjZAel~H zzevT~#OhC#_07$MdmH{1pb92|jIpUHCVG04yLXr1K)VQ+dSg}aK7pzOMuI^ia*>7^=lps?nntJlWI|Fu#7G)E)r#YWF;O%Y$}u#$jQ=5J65xb8Rr$LaBHeI zcpv=QC#ARZyl!~y-A|6`>ZIN7@Kf0W`#@^38lWl&l-?>D*Vl-Lka zU%Ge^vgKF>%o>0g@1f&PeE*&%5;F^Ys54A!Xxg!Rxl`hOu@}jJ|3X3HF~wv1+8a+T z>^YAF%FF*mR{^rXSLO<=LBB{OVD27wMK=NpFwh8$IbT%3M#yB!!=W{pKZILQP>m-D z3|{Dtx|@OpjC^t)!o5lex0&2epZ%?(GHzV4Az}x|= zU)eDeNy+Ut*s5={9}R|33M-)@UU9_+S3Io5F1#%W zCqZMqM^gPfc3>`1NzL^SNOB^ZbVidI6!-^#UG3hGf2z_<_N%P1La|Y_|<6x;ux-7DeX@a4^;9F25 z67PJ;5%2V3)mBoakp3@Q$nV7$TDLrrH-FDQhWN8> z^ddVhnzxRft89uy>5TJVg!o`NyIbjU+tM?)zPt7R)b<@vQDj@!jEp%eNdZw&qJXF% z8AX&NjRXZHgJc?nZgSR91XN@kM3N{7NCrug1SN@qoCGl;QIZ5fB>cNTC%(7-_ug7x z&$P?cc6Hslb?csU_St72f6tSYmhFQR2X+g{5LZkz1DZCGPsv%kXXw3K1fe& ziJf){(|Sj9@w3Fsz?%4>>MpmGo_)?&7wQ<^tv!l?4x`iM(6!{o1uut&<_aQgI4^2R zEz21u*Dh?Q#NicaqH~DNMKAIDH4&dN5!2~G9rXN^@Y}M58OAI!5!NTB|K=Ro&}7jy zg0BeIsaE~Vj@>VHFZ}qdj`$w;d|7_@`u0Uv2c9f(2h`zpxu-P|J|*!wMr?}lVsy{e z9^U6Q=< z=d{iI*F@hY$sYrXA}+=WqrpD-V{&J%5Km%~#o$}}{NvadiPy+}9DKrdKA|u=LFLD1 z@I-0u*O(oYGZ8|>zwo_nmCs5=b}{n{XP?2vkm~!G_nu- zF|GL09o6RA0^UNI@4ruUL@JG_9?>8iP?|%NxX^cI@cB#kGk-tm&|3_@q^7@Zxv=ko ze~<5ZKf(~a^#}YC-L*Pm-~tmbSF9HrPdmvpzIVqWzmK6;2$wW<)GW>3!@#cCUcTkx z!dJ%`aa9uU&D|YH3h_U_DuAy#KY_2FdyD7$W!35vm-TbgbyteHg|2pS>gvbg5KYs* zd*Z%EqUTklT{9ja$t^9dPX(0pG%_YSnovx&zuGFjYnSYr(If_db%a250vju_1NH^NvLy;LNaWq-B zqf(*G3{Dh^-E()0M|V_MDDpok7P*7sH?6-C|?*YHkK-0UR>? z)-5fF!-$GPZAGbZI|=mHWVM8{JXmd6L3r!+b8XkSAUSM@--4zr6f`L)#DMovmdD{0 zOHAo;7ToJA#J%p0!2{)Uun~SZ$qKresFn#_GcYqdi|Rpuomt{wMkz%CXGf^cOXm+r zd}L$D5j}4GzKwMN#6Q_MmBX1ha7Ots35w0v~k-3y_%bLK`F zJh%HoH*&A(+z1Zd&48F9wtZ+9P;Vp-PX#*fawJj|6g2Y^7XAW|6?i5z>D~QD5&xEn z^TB@(M>Py|MQ&$AdtD1}u=OdVGE<*pTo? zKzwN{;RnVEEhg|3r$8-$XN1TMDItPr9#(?N;zWBb$n0b;5f4^`>yFgBwW%p?1IMXr zXJR6$GFLWi*}_fY6oXHXrm&h;OA3IxLUCW-FzO>3-6D$)xg&%}a1=K?pxzr1Imvdo z^P9p-AmK3bKM}jB`f<|Og7x(|NP;G;s%jm=M+91mu^>##V^QtjpOol2^QJT+A_9>O zQc4!7mr!Dg{LuOHOX{F!4=~G-HAlHql=IhZP9AexQx3095O}7fprC3M7eF7S7^@cH zgjs}sGSEIE9m)%Sb&A}`__&6Zsb5OM*RK`zZ~y_3D(JBj_gDb&G|laVOic?$jryke zdWRjvr!go6xKZVJTE0{Wj1b0s@Fk$!=N8_*qgDp-^2ZeuGQon+@`ctuX9{us%9tDirxn; zY5OH?sz$b@nCR5E*8#@8Bp|ZJG`}?=?Lk6K-|^7l?6%tQwPH2JZwQDIUn-O#jE+$e zZKCqsSoHaWV^GWhv-&>hyc>N-^xNi`J@<$1D&J3VUXT-XCXi|aoq7{iWOwyFBbtXE zgV=Gc{JE3dsaie5cCSaHfWL}HQx#^o$db=q-i^H|1$gZV!> zhi=?7rXAu&-#^n=p3qTN(Z?g-?QoCx*Gnz z0}^Tm?&I&Pe(C=>(=8rL&eCjsz?NNMdQc>Shk?;WTkF+SRBf^?+XiW?x7!1$1Zw82 zPE5ql5eil-6ceM$d}yETSS=kIBzO43g}7haNNs72{#N2n7eko0aX)m9H;IsbnRlh4 zH#tsWCJsl_jPL@r^j^tyVjWpp+p~cBL_m=@QI%;Mx5&9iGCe`fzuD$0wUxy>UcJv$ zGraFUOB<6;{cE8NIrD{!)`YW3vswMs_|)UpFWb6)xt34OZ5ok3tYsNlJ+{Zg{3hpF z-ok*2v4XQ9)NRE&`xB%IkDg{Kn;7#ix`hoN>=ImMd}Uu-?vqg4;E|-)V|Y{QK*60# z+Xu`w!=uJV9WQ+cZ%p$N2YKtS#=<(@di{)t2x+cCwwr!;x*IL6c+>SZ{`>ci2xf%u zUKmpgaqn-`iQj3nOP!G+jfqThE_@F_ZOPZfkZ(s8eoQkE%aJ1?fl@Le|2Xo2o${f> z29wK{IWi7s$qGsjgmWU0&iMR!FbPjSGTrrH=066pppF}H+t$O$UfE{DLqn&y=+Kc& z|H#(jf4VN8Ef-Xi8i^IS50EOL*U`j${fC@B9n4IvtbRA%rn!H%^=*kuO0ohZ4RjyL z|ILwrB4Ez_NNCEXt=$fQ0P)j?ZQE>YZ6S$Yy_Q+n{cBeUGDAqWLtQbf)~{>_QnSW3 z|BZK}|3L|H3XL)GxP_>_nR2dgb$6*5b7D_-YgkgSBij`oo=Q}I(=6XR6Yhne8%fI2 zl9D@FSybd_1Gh;+R~ii8lU5%Jq1g*314@UAq7+lG_mIXw`VrtACv~UYQ|$0j z+1U>s?AyB+HDDZETuq;O;7<}ATFk(`tkWcjpwOxyWNf7R*-c6)IDdv5_ zubX=Yju^z3mZWBCo_;H}J*;N$z z3P&_hJNp3D6{j>b(8e2NPe2D8J9io_vYFr=VM2xW?%nVWc1~~WGfXPH!6#343J47M z9pz3}=LyEf4q5=cF`z!32u*7-)MHs(g(RC@JTIK;}dmEzmN)+(87zNN-STDSW1Y+uD{C(7!}N_m>>!2n-yL*nsS*mUQy`IPVb>#D-+zZZrd}_qjF6pzJ zRM9Pw94c!Nzg4Z^mDJ~7bKqGsBAEMGaaDm?gKLOCzFTebZ znlg|Of=s5SrvXVwv9|gtBP9b6098Ga_))mUz^L@+PhxZOmLiszrm=j=qw5U==Mu+V z_1fR5*PJGCrGMMOHFqtURNyQWvv-%UakNjze3*sk?T#_{g;FUz$gW+qK-+;RRaTG zmem~i>Nyui8x!XCE;g$4;fv_N5bJQOjGh2`{-`i(M)CPBZMO^&a)vrdb#UsF%ZWB; zu6MrW@yOX+?}uI5h5N=5LHVMJX%3s$HRmn6Y?|F!##a0wSgcbzlCJfn z@Fc5Rr1%+!sx^T&=|TQvas8@wI5R;Z@N z16D#)(+S<}n4w+*338s`37=kK(}~*pJ&!B&{0QxoK#d$QEXn8+tko zpCf|XN`|^S>eHw8Bt*@ow@t<~8ple$%0bgbOz+Ud=MeQ2Xz*oBpvpM4@?{B?GFV0&;xu}9DLiSl)w5*^be zl|H&3Q{pbaxCFHRS%34dqa1aKiQ45KUS+u!|I#*bxO`CZ8RPs-=OVOB#6v~71PY=O zL3<^#ut7m}LF{skVZLU_vc}4tj#@XM!GjhZ!3h5l9-TSUcK_(aWd%-Qki(!Q^%*sw zuJ9|fO>b(c9y)TQ6nPiKqaZ?*zr7-yj<)XTR~QIkODV7k@wlQbpXy!s&o=x-ToFg~ z6Q80FZk*(x&q7|&@oKX3Zl8|kQZs2m$2XmBb9j0}Y{s3d6}i)us`#Qzd#NWk-|Pr# zQq~@za=oj!iRx8eek8Wz(O##GRwUV7fz~~#Z?U}NzF!<6sf=0?45a$=&Q^~!?@0Q zPph<|I_t2y<^kU(m8@d^);*RtrrX2^viL+eIvPLU>V3_h7@lc4*}%?u zR{B8)Go9O*57YctpGfl|pOAGCSLh={Io<}kPdUwCna46jSzJtEZ^#c{%2#b@Li_CQ z_3#O>e)H!Fh;c8#h$Wv!6geUvM$C=O^Vv719?Y2(aS)`u2#y~6rn0A6w`yZ}bn07X z(J9u`9j3YJ*xRI?26Mii8de=tvwR$UMP`tat;U;dc_S>dQf1o?&8&c!XE|@#ri;v` z5T^+yS8=Gc7aguF-6U%^j^l7G{3rewM8D++Vqiq&}%?o2pvL+ed1> zt)G~BUs+a|(~z(hgLM7`SdmuZ^coDd&~jmt3x6#kaoEmFQ>=}DWxMQoOs`45+m>B42^if~VX%y(!pPR1dV`lWSsLA~NYX40! zt8kGz-!b7UI_yQPDv8Q_;<|4Jt{P|_Uc2d}-?hOZ@7jPZp)MzVFLXL>3#4m~T5`$DBphu^KNZ}cSJ()0ZHmfuzx3selnV&R%T8I&7_T>oW;;HF0D zDN6pXq>~TJHTs4GKBQ>2G#5`CPav1Dw_Nsj_$km+(N<&QYr=U>BVxD0b!ofOH}gpi zzRxNrVYa>Im6!)VeXP()h}`|9B#^P^^sqo`-->{mY5UmcGeXNBoylwG+ivqhJ)onE zSnJpF96pK<9LstA!8K;BZ{#{(3)>Ij7NbRtj6KhItz5Crq?cXW=i;VgIajHab5yr@ z5@vibTFfE}506F7+~XF&!s`4q4^M-B6@tx^zH|HMj zV4gRMwcJ;1>g1FQ9rFZ@*{${NOTp z;qExJLmkXodE|&#b;W3xWcQnk>$@WBFI03C%@SPI70oVsA^**ItB)S1^_z3ZruV!5h_Z^_8@fd z7c%;U1|8tu0eTAy^G`tvC)x{un76k#D*MT8S=@)%(K0e+ZpDWfYe$xBc(Vn06?dLv@kHOO zcENIi4)QBT-M&q#+@6fH*2^6cP@i%C6Wsuw&?9ejF9tLaO!_i$fa zH~V}X(T(@*{xi+jNQsg1c_*wOGVMK78kx09hf*eYDD%2kPBzNUnZ-lzlH=KYL8)E2JQ7ZM~dS(i+Q*nq!31 zc!gpdtFJq>`u-N7Xu(D9O)($XKgnHR)BL)emB`54BFOa4tZ~N-CUdgvmO17s6%?jj zTX(CX6ToS_5K@-ll*uh~1U~~&55l#!NK|uWdoVIGVp7?BF~!)Sp}q}*(hH&P>PTJ( z2wy-8zA0?E0l==)OkN>VnCB@~!ZLVWf zq!uB#z2F!}!qLgjc94-d&$NHnuCvi^i)_!C1J@`~S7XbWxuq4~!IyBy!}y$n)7yJ` zn+esF-h+P{?9}_{8PB7WyF6>r+#Ee&(Ayl*h#;+aUC@#T=#FY0Xm4lts>m&OK7BJM z$(*(T2>~!3{Hqa3=UQMoO+Ria&nwG7SlFDpWo!{H4ItoB(S;J4?>tGA3G&jdLd;`V z5tRG$HD6tW&s_z|uwvD>J$==8Px5*_x`n(K^LeHIb{9KljB@Xm1>3NpwJ6j__sIpq zdfb>gjM`bS+@Q@8iZ)GKwuthiuSWm2=Us>$5H7{VLG)u67^z5;76^f#sLb37Bt1<# zmqdk2+*PLsJUH5Zdq065dG`~_|H2=QmaBWTGn3{C7D1mm$3;_~G^Ap0Uv=cF!e40};Mc_yVH zv>p}=xj@rks^!68;c>A@Zgu5uRbyNnO(22EeL5GP{Cq^-rzMyt()YCbBl>6JS0q;D zMDV+PPK$o;kxk{%88E}f4k z4_YR~F+QQ+i>%5S)ygDR@bGAA3BY;;9FE_VBvzf8rjz2bZE(3Kl&vkV76}}5eq$z^ z#M=wchQL%S?oUh8Jd@8>Tx4@Sfsl6d4q32NRVsZ~FUhSMIO5;1TAO;?Qn`vFX=qK+ z>4L^ggW$B}6gknks0zL~p5UMEEZ3hBf1(!@;B=jQFJX{iGKDq{g+kN(%SsCLyOe9lJ*4< zC+W8*Upj(PpCUVXe9DcO{c8!qhaU9V3G%C8UYcy7_l)XH)uaUuWc zox2TQNbe=f%U^ifpQ|Wr4Q~2)F7ZIp!?F5~Q;|J^wg%dL>Wz0#NEPcAwr_RKoa>tZ z#Kgj~X64GhASTg7Z9wo1kIe>JTCM0mMZfAOLNOR01qHue82;(6U;R?h z+s+Lv`{5PH@(e`%`YT#<-SnF2WCOou4h+C7w^p!!kWoVRu{;B&mZAshDGsyJCCPutOZ>-_^ zTLV3>--|rU6^I&7u%G4R9ual?f~v?e}z1`FSsmkVqc? z8IKf=vx(Yj{r-g3A9+Lgi(rgqYr{s7B1CqG!6$)UOmk{6?kuMHH^nX_ugi^4k&KP3 z7h2Bbw~r*n#kCb*BlA=ihC)eDgiK9L;9n|;xx?&y06$3_e8V&QzgJiqOv0jmudv+1 zLzvVa+$}|?8W8L+TY}GzL}|quTp*7zTBF{0M6^?^-HhFj=3Q_f8_NTjpP}%N#u@NU zQ0)49x-esIypL!zmudQPx;xxf)(k}qL`{rrWk*L5DD~hcA!&!QV3=5HGr#Tw`9mx9@>Pb@eteM(&(dF9s!T}<23{%SN;7HS#F}Fd#R(0re+8p zGPI2CeOnB8Vs5rAh7KlWe^D}OCDE3()Mv-ySNU$2BydC#eSUY7kmV z#VmlQ5v3xFH-VnJc*#un^F>!GSH|^0%FR7^!5EXSXFgV2A3V{I- zcq@(O*GtdTwzY|&A`L}Mb#-?3A%u%HO%P0I3KbFV+;~*Q59TCx2ZvVSwH6I1A;iMH z=V@qo*Kx_IY>vbG0rd(A;i3TN)usx7ElOk+Z^tfV71un1{15j8^NsO`pE4Qbwlr>t zgj-^V?Z&aH%RX4K>)pHSkR>rSg|zza90>2CO$yXt6(4`7t-X#?$}bC`fC|Bip-F3f zHC_R*V3B*{tPNX^ht3*RnS9B6=6A;h5TNP!mW6dap~&nS!piHerEE&%{Rq-GvP>r% zb0)N>s%$>yDg<2MaX5WMfIO3ushQBOPc-_Y1*@Grdt-C*H0vJ5G<#lODUPAqNWRl*Dc-{N1LFA$4n;bnV$e*JXq{k`;g z(cQ!c3P(w@sWJxVPbe*4;p@P4A#eE-nmc%(P@?^rj%LM*6*P2CUr39`F8)cdg_VzL z9OhFX9TOlM+E|#HP^kRQWb2>0X}8QsNaJtY9Zl>h7PdB$I|cdo?%Zx-V{CiY!p2N; z=ShuYd?GuyQ>cbEXAP}wZA>J0+Su-tmXi4KJKJ%z4MlRNgT0NIGa2GU_|xzl{=lbV zKfWZk@T=zxDHJDL`?GxJ7B*B#Ad(WM7S<+wCN@-im+htw*4BLI45{XlJB@8^sQ8c= z;m+-3ld~3vd{mcnI5XA6nJPehD)8?P{rxikdfz>lH+FJ~p2P!0c=hqR{o{xO2Zc<|nwTEs6Bacx;yWN>D9C4Mc=jxxkkCG%1E4dB?A^Eb|LSM$O&s|I z1^EPpgi&=aBD{C6=sw|pUjM(J^#AfIh|`HKoNd35;Qqb%|G@w4*%oige{&8B)y3L` z^3Nmw|0`C*+<|OlV`yRhpD%(x9YXzaH2*mpvwtq4-=B6VVz*eO8Or?$yG}RWCzO6# zLPzt*ez9`Rn@@b$ak%g%w*SArek}06AEkUZ(lrV-OksF0HU#={9MP%oPtWn+50vU+ zG>XAqcN_0T+T)J{#RX_+{+P|bAD1u3a9tij>Jhvlk@Tk*1KfoFeqH@>r~iJY{=R}= z?QvOTyygCM9vYgbhyIr{{mTdD?7@VSvHANs|7=5; z{&LQ>5i~UaZms?OSN^=V2z&F#YYiGH{k|>#d6zw*v~(HqwH5g90`8~SeFA;>e?>$m AT>t<8 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index db6436c..c67b7b5 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,10 @@ "dependencies": { "react": "^16.8.6", "react-dom": "^16.8.6", - "react-scripts": "3.0.1" + "react-redux": "^7.1.0", + "react-router-dom": "^5.0.1", + "react-scripts": "3.0.1", + "redux": "^4.0.4" }, "scripts": { "start": "react-scripts start", @@ -27,5 +30,14 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "jooks": "^0.0.16" + }, + "jest": { + "collectCoverageFrom": [ + "**/*.{js,jsx}", + "!**/node_modules/**" + ] } -} +} \ No newline at end of file diff --git a/src/App.css b/src/App.css deleted file mode 100644 index b41d297..0000000 --- a/src/App.css +++ /dev/null @@ -1,33 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - animation: App-logo-spin infinite 20s linear; - height: 40vmin; - pointer-events: none; -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/src/App.js b/src/App.js index ce9cbd2..eaa0c05 100644 --- a/src/App.js +++ b/src/App.js @@ -1,25 +1,217 @@ -import React from 'react'; -import logo from './logo.svg'; -import './App.css'; +import React from "react"; +import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; + +import BasicState from "./useState/BasicState"; +import MultiStates from "./useState/MultiStates"; +import ObjectState from "./useState/ObjectState"; +import InitialState from "./useState/InitialState"; +import SameState from "./useState/SameState"; +import PrevState from './useRef/PrevState'; + +import DidEffect from "./useEffect/DidEffect"; +import UpdateEffect from "./useEffect/UpdateEffect"; +import ConditionEffect from "./useEffect/ConditionEffect"; +import ConditionEffectFromProps from "./useEffect/ConditionEffectFromProps"; +import UnmountEffect from "./useEffect/UnmountEffect"; +import MultiEffects from "./useEffect/MultiEffects"; + +import BasicContext from "./useContext/BasicContext"; +import PropFuncContext from "./useContext/PropFuncContext"; + +import BasicReducer from './useReducer/BasicReducer'; +import InitReducer from './useReducer/InitReducer'; +import SameReducer from './useReducer/SameReducer'; + +import BasicCallback from "./useMemo/BasicCallback"; + +import BasicRef from "./useRef/BasicRef"; +import StaticValueWithRef from "./useRef/StaticValueWithRef"; +import MeasureDOM from "./useRef/MeasureDom"; + +import HOCStepOne from "./customHooks/hoc/StepOne"; +import HOCStepTwo from "./customHooks/hoc/StepTwo"; + +import RenderPropsStepOne from './customHooks/renderProps/StepOne'; +import RenderPropsStepTwo from './customHooks/renderProps/StepTwo'; + +import HooksStepOne from './customHooks/hooks/StepOne'; +import HooksStepTwo from './customHooks/hooks/StepTwo'; + +import AwesomeHooks from './customHooks/awesomeHooks'; +import WithRedux from './customHooks/withLibraries/WithRedux'; function App() { return ( -
-
- logo -

- Edit src/App.js and save to reload. -

- - Learn React - -
-
+ +
+
    +
  • +

    useState demo

    +
      +
    • + basic state demo +
    • +
    • + multi state demo +
    • +
    • + object state demo +
    • +
    • + initial state demo +
    • +
    • + same state demo +
    • +
    +
  • +
  • +

    useEffect demo

    +
      +
    • + did effect demo +
    • +
    • + update effect demo +
    • +
    • + + condition effect demo + +
    • +
    • + + condition effect from props demo + +
    • +
    • + unmount effect demo +
    • +
    • + multi effects demo +
    • +
    +
  • + +
  • +

    useContext demo

    +
      +
    • + basic context demo +
    • +
    • + + prop function context demo + +
    • +
    +
  • +
  • +

    useReducer demo

    +
      +
    • + basic reducer demo +
    • +
    • + + initial reducer demo + +
    • +
    • + + same reducer demo + +
    • +
    +
  • +
  • +

    useCallback demo

    +
      +
    • + basic callback demo +
    • +
    +
  • +
  • +

    useRef demo

    +
      +
    • + basic ref demo +
    • +
    • + static value with ref demo +
    • +
    • + previous state demo +
    • +
    • + measure dom demo +
    • +
    +
  • +
  • +

    custom hooks demo

    +
      +
    • + HOC demo +
    • +
    • + Render props demo +
    • +
    • + Basic custom hooks demo +
    • +
    • + AwesomeHooks demo +
    • +
    • + with redux demo +
    • +
    +
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
); } diff --git a/src/App.test.js b/src/App.test.js deleted file mode 100644 index a754b20..0000000 --- a/src/App.test.js +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import App from './App'; - -it('renders without crashing', () => { - const div = document.createElement('div'); - ReactDOM.render(, div); - ReactDOM.unmountComponentAtNode(div); -}); diff --git a/src/customHooks/awesomeHooks/__test__/useValue.test.js b/src/customHooks/awesomeHooks/__test__/useValue.test.js new file mode 100644 index 0000000..26a7740 --- /dev/null +++ b/src/customHooks/awesomeHooks/__test__/useValue.test.js @@ -0,0 +1,15 @@ +import init from 'jooks'; +import useValue from '../useValue'; + + +describe('useValue hook', () => { + const jooks = init(() => useValue(3)); + + it('should return the times with additional text', () => { + // Act + const text = jooks.run(); + + // Assert + expect(text).toEqual(`You clicked 3 times`); + }); +}) \ No newline at end of file diff --git a/src/customHooks/awesomeHooks/index.js b/src/customHooks/awesomeHooks/index.js new file mode 100644 index 0000000..241679b --- /dev/null +++ b/src/customHooks/awesomeHooks/index.js @@ -0,0 +1,20 @@ +import React, { useState } from 'react'; +import useValue from './useValue'; +import useFunction from './useFunction'; +import useComponent from './useComponent'; + +const AwesomeHooks = () => { + const [state, setState] = useState(0); + const value = useValue(state); + const action = useFunction(setState); + const Component = useComponent(() => action(state + 1)); + + return ( +
+

Awesome hooks demo

+ +
+ ) +} + +export default AwesomeHooks; \ No newline at end of file diff --git a/src/customHooks/awesomeHooks/useComponent.js b/src/customHooks/awesomeHooks/useComponent.js new file mode 100644 index 0000000..7cdab92 --- /dev/null +++ b/src/customHooks/awesomeHooks/useComponent.js @@ -0,0 +1,11 @@ +import React from 'react'; + +const useComponent = (action) => { + const Component = ({ children }) => ( +
{children}
+ ); + + return Component; +} + +export default useComponent; \ No newline at end of file diff --git a/src/customHooks/awesomeHooks/useFunction.js b/src/customHooks/awesomeHooks/useFunction.js new file mode 100644 index 0000000..9efc9c4 --- /dev/null +++ b/src/customHooks/awesomeHooks/useFunction.js @@ -0,0 +1,6 @@ +const useFunction = action => { + console.log('loaded'); + return action; +} + +export default useFunction; \ No newline at end of file diff --git a/src/customHooks/awesomeHooks/useValue.js b/src/customHooks/awesomeHooks/useValue.js new file mode 100644 index 0000000..f68518e --- /dev/null +++ b/src/customHooks/awesomeHooks/useValue.js @@ -0,0 +1,5 @@ +const useValue = (value) => { + return `You clicked ${value} times`; +} + +export default useValue; \ No newline at end of file diff --git a/src/customHooks/hoc/StepOne.js b/src/customHooks/hoc/StepOne.js new file mode 100644 index 0000000..f1cffe8 --- /dev/null +++ b/src/customHooks/hoc/StepOne.js @@ -0,0 +1,33 @@ +import React from 'react'; +import withHOC from './withHOC'; + +class StepOne extends React.Component { + constructor(...args) { + super(...args); + this.state = { + input: '', + } + } + + render() { + return ( +
+

Step one

+ this.handleOnChange(e)} value={this.state.input} /> + +
+ ) + } + + handleOnChange = (e) => { + this.setState({ input: e.target.value }); + } + + handleOnSubmit = () => { + const payload = { value: this.state.input }; + this.props.onSubmit(payload); + this.props.history.push('/custom-hooks/hoc/step-two'); + } +} + +export default withHOC(StepOne, 'step one'); \ No newline at end of file diff --git a/src/customHooks/hoc/StepTwo.js b/src/customHooks/hoc/StepTwo.js new file mode 100644 index 0000000..a6f1c9a --- /dev/null +++ b/src/customHooks/hoc/StepTwo.js @@ -0,0 +1,34 @@ +import React from 'react'; +import withHOC from './withHOC'; + +class StepTwo extends React.Component { + constructor(...args) { + super(...args); + this.state = { + checked: false, + } + } + + render() { + return ( +
+

Step two

+ + + +
+ ) + } + + handleOnClicked = () => { + this.setState({ checked: !this.state.checked }); + } + + handleOnSubmit = () => { + const payload = { value: this.state.checked ? 'checked' : 'non-checked' }; + this.props.onSubmit(payload); + this.props.history.push('/custom-hooks/hoc/step-one'); + } +} + +export default withHOC(StepTwo, 'step two'); \ No newline at end of file diff --git a/src/customHooks/hoc/withHOC.js b/src/customHooks/hoc/withHOC.js new file mode 100644 index 0000000..cdb6f4c --- /dev/null +++ b/src/customHooks/hoc/withHOC.js @@ -0,0 +1,15 @@ +import React from 'react'; + +function withHOC(WrappedComponent, title) { + return class Component extends React.Component { + render() { + return + } + + handleOnSubmit = payload => { + alert("title: " + title + " \npayload: " + JSON.stringify(payload)); + } + } +} + +export default withHOC; \ No newline at end of file diff --git a/src/customHooks/hooks/StepOne.js b/src/customHooks/hooks/StepOne.js new file mode 100644 index 0000000..fa37c86 --- /dev/null +++ b/src/customHooks/hooks/StepOne.js @@ -0,0 +1,28 @@ +import React, { useState } from 'react'; +import useSubmit from './useSubmit'; + + +const StepOne = ({ history }) => { + const [state, setState] = useState(''); + const onSubmit = useSubmit('step one'); + + const handleOnChange = (e) => { + setState(e.target.value); + } + + const handleOnSubmit = () => { + const payload = { value: state }; + onSubmit(payload); + history.push('/custom-hooks/hooks/step-two'); + } + + return ( +
+

Step one

+ handleOnChange(e)} value={state} /> + +
+ ) +} + +export default StepOne; \ No newline at end of file diff --git a/src/customHooks/hooks/StepTwo.js b/src/customHooks/hooks/StepTwo.js new file mode 100644 index 0000000..e1766cc --- /dev/null +++ b/src/customHooks/hooks/StepTwo.js @@ -0,0 +1,28 @@ +import React, { useState } from 'react'; +import useSubmit from './useSubmit'; + +const StepTwo = ({ history }) => { + const [state, setState] = useState(false); + const onSubmit = useSubmit('step two'); + + const handleOnClicked = () => { + setState(!state.checked); + } + + const handleOnSubmit = () => { + const payload = { value: state.checked ? 'checked' : 'non-checked' }; + onSubmit(payload); + history.push('/custom-hooks/hooks/step-one'); + } + + return ( +
+

Step two

+ + + +
+ ) +} + +export default StepTwo; diff --git a/src/customHooks/hooks/useSubmit.js b/src/customHooks/hooks/useSubmit.js new file mode 100644 index 0000000..e7a63dc --- /dev/null +++ b/src/customHooks/hooks/useSubmit.js @@ -0,0 +1,6 @@ + +const useSubmit = (title) => { + return payload => alert("title: " + title + " \npayload: " + JSON.stringify(payload)); +} + +export default useSubmit; \ No newline at end of file diff --git a/src/customHooks/renderProps/FormWrapper.js b/src/customHooks/renderProps/FormWrapper.js new file mode 100644 index 0000000..43928d3 --- /dev/null +++ b/src/customHooks/renderProps/FormWrapper.js @@ -0,0 +1,14 @@ + +import React from 'react'; + +class FormWrapper extends React.Component { + render() { + return this.props.children(this.handleOnSubmit) + } + + handleOnSubmit = payload => { + alert("title: " + this.props.title + " \npayload: " + JSON.stringify(payload)); + } +} + +export default FormWrapper; \ No newline at end of file diff --git a/src/customHooks/renderProps/StepOne.js b/src/customHooks/renderProps/StepOne.js new file mode 100644 index 0000000..6b8beb1 --- /dev/null +++ b/src/customHooks/renderProps/StepOne.js @@ -0,0 +1,37 @@ +import React from 'react'; +import FormWrapper from './FormWrapper'; + +class StepOne extends React.Component { + constructor(...args) { + super(...args); + this.state = { + input: '', + } + } + + render() { + return ( + + {onSubmit => ( +
this.handleOnSubmit(onSubmit)}> +

Step one

+ this.handleOnChange(e)} value={this.state.input} /> + +
+ )} +
+ ) + } + + handleOnChange = (e) => { + this.setState({ input: e.target.value }); + } + + handleOnSubmit = (onSubmit) => { + const payload = { value: this.state.input }; + onSubmit(payload); + this.props.history.push('/custom-hooks/render-props/step-two'); + } +} + +export default StepOne; \ No newline at end of file diff --git a/src/customHooks/renderProps/StepTwo.js b/src/customHooks/renderProps/StepTwo.js new file mode 100644 index 0000000..1268bc5 --- /dev/null +++ b/src/customHooks/renderProps/StepTwo.js @@ -0,0 +1,38 @@ +import React from 'react'; +import FormWrapper from './FormWrapper'; + +class StepTwo extends React.Component { + constructor(...args) { + super(...args); + this.state = { + checked: false, + } + } + + render() { + return ( + + {onSubmit => ( +
this.handleOnSubmit(onSubmit)}> +

Step two

+ + + +
+ )} +
+ ) + } + + handleOnClicked = () => { + this.setState({ checked: !this.state.checked }); + } + + handleOnSubmit = (onSubmit) => { + const payload = { value: this.state.checked ? 'checked' : 'non-checked' }; + onSubmit(payload); + this.props.history.push('/custom-hooks/render-props/step-one'); + } +} + +export default StepTwo; \ No newline at end of file diff --git a/src/index.css b/src/index.css deleted file mode 100644 index 4a1df4d..0000000 --- a/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", - "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", - monospace; -} diff --git a/src/index.js b/src/index.js index 87d1be5..b597a44 100644 --- a/src/index.js +++ b/src/index.js @@ -1,12 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import './index.css'; import App from './App'; -import * as serviceWorker from './serviceWorker'; ReactDOM.render(, document.getElementById('root')); - -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: https://bit.ly/CRA-PWA -serviceWorker.unregister(); diff --git a/src/logo.svg b/src/logo.svg deleted file mode 100644 index 6b60c10..0000000 --- a/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/serviceWorker.js b/src/serviceWorker.js deleted file mode 100644 index f8c7e50..0000000 --- a/src/serviceWorker.js +++ /dev/null @@ -1,135 +0,0 @@ -// This optional code is used to register a service worker. -// register() is not called by default. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on subsequent visits to a page, after all the -// existing tabs open on the page have been closed, since previously cached -// resources are updated in the background. - -// To learn more about the benefits of this model and instructions on how to -// opt-in, read https://bit.ly/CRA-PWA - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' || - // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || - // 127.0.0.1/8 is considered localhost for IPv4. - window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ - ) -); - -export function register(config) { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 - return; - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://bit.ly/CRA-PWA' - ); - }); - } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); - } - }); - } -} - -function registerValidSW(swUrl, config) { - navigator.serviceWorker - .register(swUrl) - .then(registration => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - if (installingWorker == null) { - return; - } - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the updated precached content has been fetched, - // but the previous service worker will still serve the older - // content until all client tabs are closed. - console.log( - 'New content is available and will be used when all ' + - 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' - ); - - // Execute callback - if (config && config.onUpdate) { - config.onUpdate(registration); - } - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); - - // Execute callback - if (config && config.onSuccess) { - config.onSuccess(registration); - } - } - } - }; - }; - }) - .catch(error => { - console.error('Error during service worker registration:', error); - }); -} - -function checkValidServiceWorker(swUrl, config) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl) - .then(response => { - // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get('content-type'); - if ( - response.status === 404 || - (contentType != null && contentType.indexOf('javascript') === -1) - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then(registration => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl, config); - } - }) - .catch(() => { - console.log( - 'No internet connection found. App is running in offline mode.' - ); - }); -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready.then(registration => { - registration.unregister(); - }); - } -} diff --git a/src/useContext/BasicContext.js b/src/useContext/BasicContext.js new file mode 100644 index 0000000..552681b --- /dev/null +++ b/src/useContext/BasicContext.js @@ -0,0 +1,42 @@ +import React, { useState, useContext } from "react"; +import { MyContext } from "./theme-context"; + +const AnotherButton = ({ changeColor }) => { + const color = useContext(MyContext); + return ( + + ); +}; + +const ThemedButton = ({ changeColor }) => { + const color = useContext(MyContext); + return ( +
+ +
+
+ +
+ ); +}; +const BasicContext = () => { + const [color, setColor] = useState("blue"); + + return ( + + + + ); +}; + +export default BasicContext; diff --git a/src/useContext/PropFuncContext.js b/src/useContext/PropFuncContext.js new file mode 100644 index 0000000..007e1e2 --- /dev/null +++ b/src/useContext/PropFuncContext.js @@ -0,0 +1,42 @@ +import React, { useState, useContext } from "react"; +import { MyContext } from "./theme-context"; + +const AnotherButton = () => { + const { color, setColor } = useContext(MyContext); + return ( + + ); +}; + +const ThemedButton = () => { + const { color, setColor } = useContext(MyContext); + return ( +
+ +
+
+ +
+ ); +}; +const PropFuncContext = () => { + const [color, setColor] = useState("blue"); + + return ( + + + + ); +}; + +export default PropFuncContext; diff --git a/src/useContext/theme-context.js b/src/useContext/theme-context.js new file mode 100644 index 0000000..c635d37 --- /dev/null +++ b/src/useContext/theme-context.js @@ -0,0 +1,3 @@ +import React from "react"; + +export const MyContext = React.createContext(); diff --git a/src/useEffect/ConditionEffect.js b/src/useEffect/ConditionEffect.js new file mode 100644 index 0000000..68ee173 --- /dev/null +++ b/src/useEffect/ConditionEffect.js @@ -0,0 +1,25 @@ +import React, { useState, useEffect } from 'react'; + +const ConditionEffect = () => { + const [fruit, setFruit] = useState(0); + const [vegetable, setVegetable] = useState(1); + + useEffect(() => { + alert(`you clicked ${fruit} times`); + }, [fruit]); + + return ( +
+

Condition Effect example

+

You clicked fruit {fruit} times

+ +

You clicked vegetable {vegetable} times

+ +
); +} + +export default ConditionEffect; \ No newline at end of file diff --git a/src/useEffect/ConditionEffectFromProps.js b/src/useEffect/ConditionEffectFromProps.js new file mode 100644 index 0000000..556fa70 --- /dev/null +++ b/src/useEffect/ConditionEffectFromProps.js @@ -0,0 +1,29 @@ +import React, { useState, useEffect } from 'react'; + +const EffectItem = ({ fruit }) => { + useEffect(() => { + alert(`you clicked ${fruit} times`); + }, [fruit]); + + return

You clicked fruit {fruit} times

; +} + +const ConditionEffectFromProps = () => { + const [fruit, setFruit] = useState(0); + const [vegetable, setVegetable] = useState(1); + + return ( +
+

Condition Effect From Props example

+ + +

You clicked vegetable {vegetable} times

+ +
); +} + +export default ConditionEffectFromProps; \ No newline at end of file diff --git a/src/useEffect/DidEffect.js b/src/useEffect/DidEffect.js new file mode 100644 index 0000000..794e4b7 --- /dev/null +++ b/src/useEffect/DidEffect.js @@ -0,0 +1,21 @@ +import React, { useState, useEffect } from 'react'; + +const DidEffect = () => { + const [count, setCount] = useState(0); + + useEffect(() => { + alert(`page loaded`); + }, []); + + + return ( +
+

Did effect example

+

You clicked {count} times

+ +
); +} + +export default DidEffect; \ No newline at end of file diff --git a/src/useEffect/MultiEffects.js b/src/useEffect/MultiEffects.js new file mode 100644 index 0000000..48260b1 --- /dev/null +++ b/src/useEffect/MultiEffects.js @@ -0,0 +1,25 @@ +import React, { useState, useEffect } from "react"; + +const MultiEffects = () => { + const [count, setCount] = useState(0); + + useEffect(() => { + alert(`page loaded 1`); + }); + useEffect(() => { + alert(`page loaded 2`); + }); + useEffect(() => { + alert(`page loaded 3`); + }); + + return ( +
+

Basic effect example

+

You clicked {count} times

+ +
+ ); +}; + +export default MultiEffects; diff --git a/src/useEffect/UnmountEffect.js b/src/useEffect/UnmountEffect.js new file mode 100644 index 0000000..af8d08b --- /dev/null +++ b/src/useEffect/UnmountEffect.js @@ -0,0 +1,15 @@ +import React, { useEffect } from "react"; + +const UnmountEffect = () => { + useEffect(() => { + return () => alert("page is about to unmount"); + }); + + return ( +
+

Unmount state example

+
+ ); +}; + +export default UnmountEffect; diff --git a/src/useEffect/UpdateEffect.js b/src/useEffect/UpdateEffect.js new file mode 100644 index 0000000..9633c79 --- /dev/null +++ b/src/useEffect/UpdateEffect.js @@ -0,0 +1,22 @@ +import React, { useState, useEffect } from 'react'; + +const UpdateEffect = () => { + const [count, setCount] = useState(0); + + useEffect(() => { + document.title = `You clicked ${count} times`; + }); + + + return ( +
+

Basic effect example

+

You clicked {count} times

+ +
+ ); +} + +export default UpdateEffect; \ No newline at end of file diff --git a/src/useEffect/__test__/updataEffect.test.js b/src/useEffect/__test__/updataEffect.test.js new file mode 100644 index 0000000..a350b27 --- /dev/null +++ b/src/useEffect/__test__/updataEffect.test.js @@ -0,0 +1,34 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import { act } from 'react-dom/test-utils'; +import UpdateEffect from '../UpdateEffect'; + +let container; + +beforeEach(() => { + container = document.createElement('div'); + document.body.appendChild(container); +}); + +afterEach(() => { + document.body.removeChild(container); + container = null; +}); + +it('can render and update a counter', () => { + // 测试首次渲染和 effect + act(() => { + ReactDOM.render(, container); + }); + const button = container.querySelector('button'); + const label = container.querySelector('p'); + expect(label.textContent).toBe('You clicked 0 times'); + expect(document.title).toBe('You clicked 0 times'); + + // 测试第二次渲染和 effect + act(() => { + button.dispatchEvent(new MouseEvent('click', { bubbles: true })); + }); + expect(label.textContent).toBe('You clicked 1 times'); + expect(document.title).toBe('You clicked 1 times'); +}); \ No newline at end of file diff --git a/src/useMemo/BasicCallback.js b/src/useMemo/BasicCallback.js new file mode 100644 index 0000000..efcd340 --- /dev/null +++ b/src/useMemo/BasicCallback.js @@ -0,0 +1,23 @@ +import React, { useState, useCallback, useMemo } from 'react'; + +const BasicCallback = () => { + const [state, changeState] = useState({}); + const memorizedValue = useMemo(() => Math.random(), []); + const memorizedCallback = useCallback(() => console.log(memorizedValue), [memorizedValue]); + const unMemorizedCallback = () => console.log(memorizedValue); + const { prevMemorizedCallback, prevUnMemorizedCallback } = state; + + return ( +
+

Memorized value: {memorizedValue}

+

New update {Math.random()}

+

is prevMemorizedCallback === to memorizedCallback: {String(prevMemorizedCallback === memorizedCallback)}

+

is prevUnMemorizedCallback === to unMemorizedCallback: {String(prevUnMemorizedCallback === unMemorizedCallback)}

+

+

+

+
+ ); +}; + +export default BasicCallback; \ No newline at end of file diff --git a/src/useReducer/BasicReducer.js b/src/useReducer/BasicReducer.js new file mode 100644 index 0000000..de21e73 --- /dev/null +++ b/src/useReducer/BasicReducer.js @@ -0,0 +1,28 @@ +import React, { useReducer } from 'react'; + +const initialState = { count: 0 }; + +const reducer = (state, action) => { + switch (action.type) { + case 'increment': + return { count: state.count + 1 }; + case 'decrement': + return { count: state.count - 1 }; + default: + throw new Error(); + } +} + +const BasicReducer = () => { + const [state, dispatch] = useReducer(reducer, initialState); + return ( +
+

Basic reducer demo

+ Count: {state.count} + + +
+ ); +} + +export default BasicReducer; \ No newline at end of file diff --git a/src/useReducer/InitReducer.js b/src/useReducer/InitReducer.js new file mode 100644 index 0000000..0635433 --- /dev/null +++ b/src/useReducer/InitReducer.js @@ -0,0 +1,39 @@ +import React, { useReducer } from 'react'; + +const init = (initialCount) => { + return initialCount; +} + +const initialCount = { count: 0 }; + +const reducer = (state, action) => { + switch (action.type) { + case 'increment': + return { count: state.count + 1 }; + case 'decrement': + return { count: state.count - 1 }; + case 'reset': + return init(action.payload); + default: + throw new Error(); + } +} + +const InitReducer = () => { + const [state, dispatch] = useReducer(reducer, initialCount, init); + return ( +
+

Basic reducer demo

+ Count: {state.count} + + + +
+ ); +} + +export default InitReducer; \ No newline at end of file diff --git a/src/useReducer/SameReducer.js b/src/useReducer/SameReducer.js new file mode 100644 index 0000000..c794136 --- /dev/null +++ b/src/useReducer/SameReducer.js @@ -0,0 +1,32 @@ +import React, { useReducer, useEffect } from 'react'; + +const initialState = { count: 0 }; + +const reducer = (state, action) => { + switch (action.type) { + case 'increment': + return { count: state.count + 1 }; + case 'decrement': + return { count: state.count - 1 }; + case 'sameState': + return state; + default: + throw new Error(); + } +} + +const SameReducer = () => { + const [state, dispatch] = useReducer(reducer, initialState); + useEffect(() => alert('page reloaded')); + return ( +
+

same reducer demo

+ Count: {state.count} + + + +
+ ); +} + +export default SameReducer; \ No newline at end of file diff --git a/src/useRef/BasicRef.js b/src/useRef/BasicRef.js new file mode 100644 index 0000000..422ff53 --- /dev/null +++ b/src/useRef/BasicRef.js @@ -0,0 +1,18 @@ +import React, { useRef } from 'react'; + +const BasicRef = () => { + const inputEl = useRef(null); + const onButtonClick = () => { + inputEl.current.focus(); + }; + console.log('inputEl: ', inputEl); + + return ( +
+ + +
+ ); +} + +export default BasicRef; \ No newline at end of file diff --git a/src/useRef/MeasureDom.js b/src/useRef/MeasureDom.js new file mode 100644 index 0000000..7eff665 --- /dev/null +++ b/src/useRef/MeasureDom.js @@ -0,0 +1,24 @@ +import React, { useRef, useState, useCallback } from 'react'; + +function MeasureDOM() { + const [height, setHeight] = useState(0); + const domRef = useRef(); + + const measuredRef = useCallback(node => { + if (node !== null) { + setHeight(node.getBoundingClientRect().height); + } + }, []); + + return ( +
+

Hello, world

+

The above header is {Math.round(height)}px tall

+

Hello

+

height: {domRef.current && domRef.current.style.height}

+

width: {domRef.current && domRef.current.style.width}

+
+ ); +} + +export default MeasureDOM; \ No newline at end of file diff --git a/src/useRef/PrevState.js b/src/useRef/PrevState.js new file mode 100644 index 0000000..1d1744b --- /dev/null +++ b/src/useRef/PrevState.js @@ -0,0 +1,22 @@ +import React, { useState, useRef, useEffect } from 'react'; + +const PrevState = () => { + const [count, setCount] = useState(0); + const prevCountRef = useRef(); + useEffect(() => { + prevCountRef.current = count; + }); + const prevCount = prevCountRef.current; + + return ( +
+

previous state example

+

You clicked {count} times

+ +

Now: {count}, before: {prevCount}

+
); +} + +export default PrevState; \ No newline at end of file diff --git a/src/useRef/StaticValueWithRef.js b/src/useRef/StaticValueWithRef.js new file mode 100644 index 0000000..6e9b658 --- /dev/null +++ b/src/useRef/StaticValueWithRef.js @@ -0,0 +1,28 @@ +import React, { useState, useEffect, useRef } from 'react'; + +const StaticValueWithRef = () => { + const [state, setState] = useState(0); + const intervalRef = useRef(); + + useEffect(() => { + intervalRef.current = setInterval(() => { + setState(state + 1); + }, 30); + + return () => { + clearInterval(intervalRef.current); + }; + }); + + return
+
{state}
+
+ +
+
+} + +export default StaticValueWithRef; \ No newline at end of file diff --git a/src/useState/BasicState.js b/src/useState/BasicState.js new file mode 100644 index 0000000..be1c536 --- /dev/null +++ b/src/useState/BasicState.js @@ -0,0 +1,16 @@ +import React, { useState } from 'react'; + +const BasicState = () => { + const [count, setCount] = useState(0); + + return ( +
+

Basic state example

+

You clicked {count} times

+ +
); +} + +export default BasicState; \ No newline at end of file diff --git a/src/useState/InitialState.js b/src/useState/InitialState.js new file mode 100644 index 0000000..7471f29 --- /dev/null +++ b/src/useState/InitialState.js @@ -0,0 +1,18 @@ +import React, { useState } from "react"; + +const InitialState = () => { + const [count, setCount] = useState(() => { + alert("page loaded"); + return 0; + }); + + return ( +
+

Initial state example

+

You clicked {count} times

+ +
+ ); +}; + +export default InitialState; diff --git a/src/useState/MultiStates.js b/src/useState/MultiStates.js new file mode 100644 index 0000000..b2b8c33 --- /dev/null +++ b/src/useState/MultiStates.js @@ -0,0 +1,26 @@ +import React, { useState } from 'react'; + +const MultiStateExample = () => { + const [fruit, setFruit] = useState(0); + const [vegetable, setVegetable] = useState(1); + const [cereals, setCereals] = useState(2); + + return ( +
+

Multi state example

+

You clicked fruit {fruit} times

+ +

You clicked vegetable {vegetable} times

+ +

You clicked cereals {cereals} times

+ +
); +} + +export default MultiStateExample; \ No newline at end of file diff --git a/src/useState/ObjectState.js b/src/useState/ObjectState.js new file mode 100644 index 0000000..128af75 --- /dev/null +++ b/src/useState/ObjectState.js @@ -0,0 +1,21 @@ +import React, { useState } from "react"; + +const ObjectState = () => { + const [state, setState] = useState({ fruit: 0, vegetable: 1 }); + + return ( +
+

Multi state example

+

You clicked fruit {state.fruit} times

+ +

You clicked vegetable {state.vegetable} times

+ +
+ ); +}; + +export default ObjectState; diff --git a/src/useState/SameState.js b/src/useState/SameState.js new file mode 100644 index 0000000..294e5a3 --- /dev/null +++ b/src/useState/SameState.js @@ -0,0 +1,27 @@ +import React, { useState, useEffect } from "react"; + +const EffectItem = () => { + useEffect(() => { + alert(`component loaded`); + }); + + return

You clicked fruit

; +}; + +const SameState = () => { + const [fruit, setFruit] = useState(0); + + useEffect(() => { + alert(`page loaded`); + }); + + return ( +
+

Multi state example

+ + +
+ ); +}; + +export default SameState; diff --git a/yarn.lock b/yarn.lock index 25b6936..e558886 100644 --- a/yarn.lock +++ b/yarn.lock @@ -859,6 +859,20 @@ dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.0": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.4.tgz#cb7d1ad7c6d65676e66b47186577930465b5271b" + integrity sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.4.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" + integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" @@ -4268,6 +4282,11 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + gzip-size@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" @@ -4422,6 +4441,18 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +history@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" + integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^2.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^0.4.0" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4431,6 +4462,13 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" + integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== + dependencies: + react-is "^16.7.0" + hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -5041,6 +5079,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -5497,6 +5540,13 @@ jest@24.7.1: import-local "^2.0.0" jest-cli "^24.7.1" +jooks@^0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/jooks/-/jooks-0.0.16.tgz#0b5c47e3bbf3f6014b7b72a8e8dc3ad3da901006" + integrity sha512-8cYg1y14Raweo1F85rZ8DvAKGYckGn+YGJ+RIpj6njSj4V+Wqbv7qvmxEeDmXO0/S6fJ+e7owFBtIe0Nfbh2sQ== + dependencies: + lodash "^4.17.11" + js-levenshtein@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" @@ -5876,7 +5926,7 @@ loglevel@^1.4.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -6065,6 +6115,15 @@ mimic-fn@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mini-create-react-context@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189" + integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw== + dependencies: + "@babel/runtime" "^7.4.0" + gud "^1.0.0" + tiny-warning "^1.0.2" + mini-css-extract-plugin@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" @@ -6813,6 +6872,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + dependencies: + isarray "0.0.1" + path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -7645,7 +7711,7 @@ prompts@^2.0.1: kleur "^3.0.2" sisteransi "^1.0.0" -prop-types@^15.6.2: +prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -7846,7 +7912,7 @@ react-dev-utils@^9.0.1: strip-ansi "5.2.0" text-table "0.2.0" -react-dom@16.8.6: +react-dom@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== @@ -7861,11 +7927,52 @@ react-error-overlay@^5.1.6: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.6.tgz#0cd73407c5d141f9638ae1e0c63e7b2bf7e9929d" integrity sha512-X1Y+0jR47ImDVr54Ab6V9eGk0Hnu7fVWGeHQSOXHf/C2pF9c6uy3gef8QUeuUiWlNb0i08InPSE5a/KJzNzw1Q== -react-is@^16.8.1, react-is@^16.8.4: +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== +react-redux@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.1.0.tgz#72af7cf490a74acdc516ea9c1dd80e25af9ea0b2" + integrity sha512-hyu/PoFK3vZgdLTg9ozbt7WF3GgX5+Yn3pZm5/96/o4UueXA+zj08aiSC9Mfj2WtD1bvpIb3C5yvskzZySzzaw== + dependencies: + "@babel/runtime" "^7.4.5" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.8.6" + +react-router-dom@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.1.tgz#ee66f4a5d18b6089c361958e443489d6bab714be" + integrity sha512-zaVHSy7NN0G91/Bz9GD4owex5+eop+KvgbxXsP/O+iW1/Ln+BrJ8QiIR5a6xNPtrdTvLkxqlDClx13QO1uB8CA== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.0.1" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.0.1.tgz#04ee77df1d1ab6cb8939f9f01ad5702dbadb8b0f" + integrity sha512-EM7suCPNKb1NxcTZ2LEOWFtQBQRQXecLxVpdsP4DW4PbbqYWeRiLyV/Tt1SdCrvT2jcyXAXmVTmzvSzrPR63Bg== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.3.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + react-scripts@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.0.1.tgz#e5565350d8069cc9966b5998d3fe3befe3d243ac" @@ -7926,7 +8033,7 @@ react-scripts@3.0.1: optionalDependencies: fsevents "2.0.6" -react@16.8.6: +react@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== @@ -8015,6 +8122,14 @@ recursive-readdir@2.2.2: dependencies: minimatch "3.0.4" +redux@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.4.tgz#4ee1aeb164b63d6a1bcc57ae4aa0b6e6fa7a3796" + integrity sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + regenerate-unicode-properties@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz#7b38faa296252376d363558cfbda90c9ce709662" @@ -8220,6 +8335,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8979,6 +9099,11 @@ svgo@^1.0.0, svgo@^1.2.1: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" @@ -9085,6 +9210,16 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tiny-invariant@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73" + integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA== + +tiny-warning@^1.0.0, tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -9443,6 +9578,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"