From 967c74dbc48a522e4b0a785ae48884e785ab7be7 Mon Sep 17 00:00:00 2001 From: Jael Gu Date: Fri, 3 Feb 2023 15:20:47 +0800 Subject: [PATCH] add benchmark Signed-off-by: Jael Gu --- benchmark/qps_test.py | 114 ++++++++++++++++++++++++++++++++++++++++++ benchmark/towhee.jpeg | Bin 0 -> 49739 bytes 2 files changed, 114 insertions(+) create mode 100644 benchmark/qps_test.py create mode 100644 benchmark/towhee.jpeg diff --git a/benchmark/qps_test.py b/benchmark/qps_test.py new file mode 100644 index 0000000..6a5a9f7 --- /dev/null +++ b/benchmark/qps_test.py @@ -0,0 +1,114 @@ +import towhee +from towhee.dc2 import pipe, ops +from towhee import triton_client + +import onnxruntime +import numpy +import torch +from statistics import mean + +import time +import argparse + +import os +import re +import warnings +import logging + +warnings.filterwarnings("ignore") + +parser = argparse.ArgumentParser() +parser.add_argument('--pipe', action='store_true') +parser.add_argument('--triton', action='store_true') +parser.add_argument('--onnx', action='store_true') +parser.add_argument('--atol', type=float, default=1e-3) +parser.add_argument('--num', type=int, default=100) +parser.add_argument('--device', type=str, default='cpu') +args = parser.parse_args() + + +p = ( + pipe.input('url') + .map('url', 'img', ops.image_decode.cv2_rgb()) + .map('img', 'vec', ops.image_embedding.isc(device=args.device)) + .output('vec') +) + +data = 'towhee.jpeg' +out1 = p(data).get()[0] +print('Pipe: OK') + +if args.num and args.pipe: + qps = [] + for _ in range(10): + start = time.time() + p.batch([data] * args.num) + # for _ in range(args.num): + # p(data) + end = time.time() + q = args.num / (end - start) + qps.append(q) + print('Pipe qps:', mean(qps)) + +if args.triton: + client = triton_client.Client(url='localhost:8000') + out2 = client(data)[0][0] + print('Triton: OK') + + if numpy.allclose(out1, out2, atol=args.atol): + print('Check accuracy: OK') + else: + max_diff = numpy.abs(out1 - out2).max() + min_diff = numpy.abs(out1 - out2).min() + mean_diff = numpy.abs(out1 - out2).mean() + print(f'Check accuracy: atol is larger than {args.atol}.') + print(f'Maximum absolute difference is {max_diff}.') + print(f'Minimum absolute difference is {min_diff}.') + print(f'Mean difference is {mean_diff}.') + + if args.num: + qps = [] + for _ in range(10): + start = time.time() + client.batch([data] * args.num) + end = time.time() + q = args.num / (end - start) + qps.append(q) + print('Triton qps:', mean(qps)) + +if args.onnx: + op = ops.image_embedding.isc(device='cpu').get_op() + decoder = ops.image_decode.cv2_rgb().get_op() + # if not os.path.exists('test.onnx'): + op.save_model('onnx', 'test.onnx') + sess = onnxruntime.InferenceSession('test.onnx', + providers=['CUDAExecutionProvider']) + inputs = decoder(data) + inputs = op.convert_img(inputs) + inputs = op.tfms(inputs).unsqueeze(0) + out3 = sess.run(None, input_feed={'input_0': inputs.cpu().detach().numpy()})[0] + print('Onnx: OK') + if numpy.allclose(out1, out3, atol=args.atol): + print('Check accuracy: OK') + else: + max_diff = numpy.abs(out1 - out3).max() + min_diff = numpy.abs(out1 - out3).min() + mean_diff = numpy.abs(out1 - out3).mean() + print(f'Check accuracy: atol is larger than {args.atol}.') + print(f'Maximum absolute difference is {max_diff}.') + print(f'Minimum absolute difference is {min_diff}.') + print(f'Mean difference is {mean_diff}.') + + if args.num: + qps = [] + for _ in range(10): + start = time.time() + for _ in range(args.num): + inputs = decoder(data) + inputs = op.convert_img(inputs) + inputs = op.tfms(inputs).unsqueeze(0) + sess.run(None, input_feed={'input_0': inputs.cpu().detach().numpy()}) + end = time.time() + q = args.num / (end - start) + qps.append(q) + print('Onnx qps:', mean(qps)) diff --git a/benchmark/towhee.jpeg b/benchmark/towhee.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..caf63b3eedf96af5492d20c1970bbe1d9161ed09 GIT binary patch literal 49739 zcmb4qby!rv_xG|(cPuF&4NFNZ4breIy>uxpwRDS0m&5`~hr|*~3Q{5{-Q7~s3W&5I zqP~2;@9+6N@4xRncV^Dq`OKNQ_s%`@oH=LyE&tmDP{K8|GypjFK@dj}0Qk2B*ijF5 zbp`-*bpiYU0DusHi$ehb-c$JZ@i7kNe`&^hS}igUfOntc+((-@R{-w+&`$R`K-JFE z%k%%HYzAIIPQFGiUjA%G<`Uu}Y%rt$ApX;=7=Zu(FlmS^{9lG`@w@=ge^JE%01EWq zPQmx(Pw7PebDt6bNGJYZ{M>)B|KSJ#DBnk7F%dBlSrLi*i%mpIRzg%3DhdFAG?(v_ zZ~s;SssMakJbXM{e0)570s?$OVoG9SA|hfiIRz;tJ(z)k9!y8a#KQfM=>aD*9UYq> z8z&Dhgdf8AP)J0GPlTHf!uKC0I0OU)#Dv5&#KbgwOms|q|KH(XH-L%|XA?LI!r=e_ zsc=A4IRE+q%=d2x@BWM2Kga(B5H1i8ABO-ycwehZ3BUn?KtNnvTs$ByJ`f1P0fGQj zxa@eM)XIkVb~GG55orWqu@aR=P6TbwjJ@yamN=Ku8J%i+Bt17&!lCq@2@?+BzTN-R z!+(mn06hHrIw%zY2)r-+r-S=p+z;VDU@CT8YEfl88bb~-yAp7kPoql2%xMoN?b#MW zT=m}yfE09(q5@F?6ao7mAGpOE;LZ?j6z*;#@Yii?>(bmknKXW5ZL|^*yoGD)hhutK zIB~;_iI$+Rz%JzSm6=Ij*#mqW#nk`oirx^&cVqo{2dLw4?O+_L>O$uXy&))bVWhsEfT3I9iF!BT<}U zp~PC6gD#94Y286Z7}gmg8aU!@{4s9P^zedQ4Gnx8flWcdZ82JM@oEL# znD4k8`Y*OeRV*v0R+W7f8H=~O>=U=32jii(s9I<0cTVh5VHM+570)7u(7jqjA2B~6 z^3U3+Lj-qkLo=3ZzZ9@@X%UlY>f7%%u_!fM1w53oX|sF%yqxm_!}L6<$xTYPX{I_R zlz6|1LT|Pp^w=zjIZ~@i=lk)qgV|?xGrK?R4yTg9Q-_OLOD{8&5;r3hoPulQCOtCg ztVdWXJFT{+2E~tDFFp6JQF9LTP;@(eVh{+pnVG z>DvWl3+_y2-7_(Q}53m@!GFCj(Nxa(HnQ@;`-B&RSYj7r{kMlO0e!xJ} z!fMGQ>o+^>ZsdU6vYRezpDQZ1*rHykNV59ZK!O&*8e}$2mu3iBtCdS3xGTzM8`a8# zt)^1W>FUliCjF(^JXBSZyp=#bJm2*Ap{)-wgdtl&2r&I?bU)wg07_t#>pDB5RCIoc zlg!n{f)N*dSLG7QQK$z09dh>}D1Aceu6dJGZAr*BEkP;vz>Yt_NB{@weI!)dgl^g5={{SPw(|0L@s;+L9luA{YqG=DID;D*K z@!lBn)r=M4Z{+fS(zeF8)UmGFrnQx)hbq4+UYC@x`rxJ1RJ|lZ(&A;Ab)U=7lz;g~ zYQ4%{vDk`^P;$0A2W@x)~ zMl1y01xLE?5o|x-Z&`g1u(pa{Z`2Xd8zbkR`RDQF<7zD1n@xuRf!SuGP*Q~T7BIxY zge#+rF~GTABL~(^`JJ3Z<=1b`tbYK8e}DmQh*GeLqw%aAk{qONKr^e&(D&-pvv!r= zh+Y`Cc~81%^ha3v0&LZDXVOPoPq#gs2+?6MhW94niZ zHsfckr_sh!KJj?Agy_UUusX9dcrZbT%20aU{@H``bOAj!y7=LdgvFsc5ia86TlM;~ zV00xf)eMSX2WFwy*cVa)O(8;yl~1!H#6@_hI7PJ6+gjLH!_{O%)#-V4_`yICblvfahU&Hn%x zN5_T~xCs@k@XB7g`Yn0GDzrQkl>$zwTFgvX_)2^*5@C2i4WFk7QA;(h;PFn}_LLdn$C9OyZ+)k@H+N{<-yRW|AMaL<1g;Kt>Q|`fcVrBO9H*k=3_~0ge$63;oV z=V;aGI)6JM1bok>ZWgpf#>KVopN!rRWh0ItQmriBaKC-d4~Nf(1XSQIHq`#08fil{ zr^(QjRX;Rg*96DTwuG-}cI2YJHkGPv+6r>zY#m%%+H`I5yDAB^r;Scq>neGVuFAd_ zAa-5gexjjc9$d6nj=RSFi1Xv1-`73IhvDC%-3VH2r%hi4a%A~0G#66~oTcABF88Y1 zdW+%n1S^ggwY(#d0OCsKC{hMw4mPGUU6t1)c+(QeIX7r2r8Q@{!x1qm_Htt?BV5E( zLhyztyu=_CUebxWRZk2^ErO#Z|1ySdMf$Ip$djyvA-4W0h2g5g@jV?vcb{aLXqf)jO1#%C|lsBRpea&S7# zxrh6dZSl_fBI%v-?$U)y>#1~Yxm*~gzC_ya)VRc)Ef&&h_`e*m8vuJ2aYI9G)dTH|&!Z=US0 zyz8}TbyDNSQiyf_c8rl$B&)*m9UXF1UdI3Uxba2gi-1+DCzxQ*VDqI>4WBZ4kV0fl z^XALIEjr;Me7{xfust&^EY14JlwY}XOFmr_^BY9<*(nmhs-n%B0! z^-QH!Cg_1BB>W8h`KH>!jiD`=0D@R8T6k6R8dg$i^Oera)Y8y65n`3#d3qB6#ED2> z(WK;qw#-8i#AdHib~fOr;?iwH%$r*;+o1d*N~XXP_bQ&&qwC~VQ?TNqAf(`ZuStK)t+mFRmK&~bQ6z^JxX^a zj6&$pJ;tXc;z_rrh%_$t8QyrdHC=7OHiUT|hZcJUbAY%QdoGK8V}~)GrvB-urr0b`bU9a55mDib#q>kC zF+Vvc5}D>Xjl@J3djPV^_UR&q1aCz-4^LST1IHZ4I_<{BFdH1jCdA-|0$wUGvRj(&m3 zlE8F`-pt-#IYv*q3!pw{2$Amyk}il3R<1Go&@zCv1OkYnYVmdL)DJyFXo=1?@dzpT zdiQ;iMRiUyyg?}vQPpig+O#CfxgK3FaN&$`(j;`Ga^?s%7laA*C_`vPY43EqebuMZS&Y!4RY(;91(cK1|V!O5?0Kl*#iT$5^kvGLP2@D-=DT3J6#4K>xp4oMY%<9*Vxqhp0?0O2IJ z2V;t`2~PrC%^|ECvsYVFZQ0jSBTp(&>veAGzSz)L$3K&f*zwo3hK`MO^KUo3C7v=7 z1=9`;BYOVeUeL3*$>6kwY`pptRLcGqEustxozI=T3)(ch%%%^pkKAjN=)P;>|6=CY zet9s%cR2SCKxb{vPm4jdyvL7*shKt#j2rjxnQ|`(_CCbl^kF=q2a<$WeeHbh93Dfq zeJPNK^DsvXFIK0c!XOhf_AE9`DQkX}f~mRI>{bWU+5!QV$uaVlmrK^i5$b7vbN8h3Es(X_p{LKEKUZ%YHmcHK*+Ppm zs8xI(G|tXS+7PjL?;-t}4gH4GqOLjCQX9$6hvbNWfPs7*BJtKKqMN1O#J&)tMbUol zZbUJ$-sV-TnYo06i&FC*vxKgDkEPQMB3E>!6)p3z@gNNz0#iQSBOy#cGdAcyGKk3)9?@`o~^ zWm2T;Z&_M=ge5~$-cZew_3_8MLdaw)fqe^`D)%bOgD|eTtlE53h38O-Z(@uunBWg- zc~CYbX|>F4@IS!HvgeKvZAt@`sA*8Dj|nZ9?TQl2+gZl&yftQ-=s>ctEIfx`mP>wV z1WX$Z8}Co-#lg1}F~g{qa1b$2exvjqb&h49g#eQn92vMrV?{a#O4&8GAzJ+&dMZAU z*fVYX*hVIzhT!tD6?+=e*YJ8-^}6G)oVhZ!)=LFF-bBP~=o~-%x?OZ+X1{SaAEMC+ z#Se&T2KFEXO&bNU7q1H$6P_^KjMI*&lsp&`Raq^!9d(dHsEF}U#lwS=qd_DPC|wV6 zh_zKid&WP2f)BJ{pM9yw652EiAZ$0lGg(d1Tm&oe8VhC1DJ zFwIXKDHvH~I60dks5qsQlqT&Ek}-_jh13zI@rU+O>Nu}8@HpJ75nW%skhYn@A#%&C z^U6Qua#LhRc$5#bg{AzX*`^uUMyr>xQx;E-hgewc237hhMML4N9(-`#6#oY=gqjtd z&xkFnEO|bO%Bm3A&kWT}=MIKFZ4myAu>1!Qa3Ioj`BU!O^h)Vc2M|w8XT$b8fw$JL zAvxs_mrIw+6%ImEXHNJ^6BMWm=?zVe>z`~)5?~b6z%2k^ULF`TKt<&Ov$KETt~Bk$ z{VC3!zmxlUjE??*ebfKwmf9ua?9gd{N~5{Sg*_G(U0JHm`}m7kl7INTTM!|Zd7w4k7U1+r^eIEc>|>x8 zgOa$yV54q06}ZRRs^q8fY8A0c3?WCOAq`=A8sp2b-*H>?&H2~D$b7{pi#ko!6(i*> zC9-GpD<6v{%bfSRdV%SUI#Y#r$gQDfGA);#yBMYt8;G2h(2{7cP3P~!ZC{4fAQ5qT zu>%0?bwG3#H4#hcyezo764d;yCAWfkA5SV>w;fZ?39fepQ2;O*Z5G@&Zwx?i9CBV# zy3cn0rf44vUG5?HJdHnz9@P=stDh`i#pm8w60|vNz?a=pRy&w?OxS+N!PaJ27Q&pq zMEYC1WQDQDHs33xzQI6l|h-Rw+tajWU8z&2c*e9-A^!h?9n5%7X(%Fu_rGlqNjr5UA* z8tRBpgKN+?VviH1)`FCr@IP=xuP!z=HLu>*&4li#DZ^`E$YC9RL6PeD`(|oU3{Jer;Ms?s6 z2s{~2Hcv|}IC(QV@&OlV(V1{VmC&)!hfFASAOc*F1jDsSk1i704a_bl{#qMrN;ImV zV40gz?tCmIK8kyKL#P(Pz&V6w6hUxS20QK(0cklN;ekhF#>Moei4Im+#9&%ta(!&w zye?`C%SmFix(wy4HuiyW{76_G$PLzeN~<#fdosfzN}R#VU`1Bjm{S8sw6 zl;4zKtkWQ$2V9&H@Z&qR;-WArgLb>jViDo+0A;e^DNwoA0>>mL8<(=hGbR0ts<$3*>5CqN+ z;N~g_m&@g0)IC1|DdFD2gcAP&+RbiYfq*6@t8i|$fG^|PkHbfw&RYbfyIAh@)sZ&B zdd3WxwF*KWj)UGl>{TGdB~KfM?N@&l8PVBX^Ao$3Es2jwP!}f}Y&_5m{wopB-Z-S5 zpe|~Dn&&_Mis3Xz8m9b=@y9)Spt2#DOT@m?ykF<*0bOlCLN>c~DF(ssIx8MS&Tn5_ zum~*+)xvv90ao%q5y5a>iEKfWO>xojN=m;pF+q7o$sdiB0nU`l!K{WOG&m39w@xu^ z%pZzVR%>lXXdlAPnm@xHFHh(>Q+<`^a)O3yR#JuU%QHK}Ah=kGoBky>lq(y<;qrx~bp#KQ zi4v4Z6|K2M)ue0*3fJ9u9#YC6pyZe0OqI%~yb>It1z|I8xcQ*$U_Hm|G@s&MO{<&K z#HY-sm6W8XN*#~td1=1rzjQCqke-wnEZ51r+C+nc+|b%n;rA8{XMlRK#)%Bt=#y_*r z?^d4g>G|-AnZ&&gg7RQZxj+EF5q1^fwhlNmV7{i)(J2}>7BF){*i{y^ zXAW25WV?#;*5_t(D0%LC#IK3ZVUp9*LtRVkOz5f$j1^@Zq)asGJjKt~z{9hpP1%7D zaf?4+q~@24isGDK=HKf#>*7l8)uQ4Er|u`{EuAng)Yfb5Qr7KLR=UF&o>mm;27h>S ztqqFKjQ_zoX&wEQFr2u(o3dKwu@PqlPOh%lwq1H|f}R~B=RKGx3}uJl;Zlj-RucS3 zIousZl%ggw>dkJ&NU6f-;vD6oiHU4PUsZ5mcyQ2p!~-srDmO6)45_dpShR{eVN9{h zFAk(+G!f>C4V6a1NhjBv29ro&P%1Vh(~7h>A>JpY!D4gBOvb*&j3UAvFN^LTf$1Ms z4N_S?eB+{>pKWRTnkQE^u6n@d?1bO4cSC?|?U1zGjn=?KSy3UbH!$!wfBOac{R@I$ zj~*X69mi-i)~`X&)ZaRN@F%7{G0&SaY=7U@`LP<26&#!8LLsKE^pNNd_)pcQwI<-37TI$TR*uM%K*K;x&c--)@IBM$I{mZSPy> zky)$Fnrt+xhDM3-@`Z`s@2HOG+TU3%{?sFz3cBR-`6kiz7}VAmpmjKa+9-)!*^93f zUA8s=p_1dk%z_LTg`j)UkBuuKh-l)pvjQCB<6KI{7i>+ms_01&M+fcLIx&+* ziQ_@CbMNQP*`nQ#CBPES_hK1!M@#heU?I3Fo{6^Yrjb{H3VnZ7ficcmHvU*jI_{fy zV{0LU#4kHB}M>gq2MCtll<=B@fW zs}LK$=%^9T5R_!PeEq6Kt;3baaoCEa<{#M6r3WY^aV5RRZ~L6ScX1u>MTjFI&z9wEz1jG2uPYV z`5iJREKaiJA;etl8&x4j+MUO+lN{aaN6qNhX`fNhJNO7#L8+l8SX{?LC0`wMqaRj+ z=lBtJK!}qJE9Oz)XAavEA=y?aeV&H#;@9EdXd;AZy>J**)1g;|8S~@lz<5&eacQiF z?s)J-d{F{2`J*V4@iTE>CvIh#qA*F0Ek#*6>C(Y1oL3iG&q+b*FMXakNpM zYsR*&&$$~`soB!zxqz0OMMPtKh+xH_W@>uX+`W$HgOk5Lr#zE}jd2oLo7yJE*uqET zraqTZY@ZMs9nUx>8Z$#xx@WA^>|IBIYvF{RyH81{{HO`*L5#VDVlR>{Ez zOC>S=2yw~1S>in_jcIaNO^tDe%R&7Y^iOnaWC{TLU`k(irUU2`B5CR_EtnyNo0lHK zP)EUpIXOce3$&j35yN9&ruA4kHh&~4E?$9&R|~app<^WVEi78OCDu~XHRkp@c6;_aS2}o`($ArL{7Bx3PfXJbSX2{6J3slb4(ZhzT zP&uKIq4Gz2e`tkC`+r0X3K~q#$TbttOyG~tyRm-PCk}VWY%3TIz}S-c+JHHbI2$fB z0#|X-z7=5xRFu+E>GXg!Ln>KO!Fj0B+5x=wYEmY>I>xXUz31*ukGeIe_Ov`g-SYs8*rx@)46eJsm%}Ay+vr zqHCyMxgL?!$WgB%nKaZ|x>}mJ=~C=YQ+*~Z-Ace6gNU&qbEa({od=^(BGsw0yhtLG zCFo0=9d;nRgvE+e^5=DO`P;ADysJZ`le|UJ!My-#$*PF3sOkT3sYmt}-bG7L-?v8!70fbXaA&Mus!Oy;53Y@Ph z#&2PgSw5&?^<+H>bu}v@R33}sjT%r{J$EYo5W|%hqKByoG*01n#ZyRB)BBt6atrfa zZ!tFFpu8yAq3G~EA90{U-4)rn0Dl-DsgLVMUyShKRz8T7`YZOQl7H)nXCY*0X&Jqk z_}!1T4Az9~mwxStR~(t?h*ByRIZ~I^^SplkU}sRYuk`~XvdQuJPeVSc(_|ba(=QU} zoZAk>E`HnvWoAYU#;}VRg#IEaFK_dt_wm|iF^D8yQ?KVp}&moN@u& z409zJW_AB|dad!kJY9~QqH|0SM{~~MY+9oD2$VM3fTZ8^AAqP_>1Xmy0BZ6fbAbv+ zTJZ~ZYJy41KnYkL4(yaqfI;s5N9N)<=55UbV9qGhaYps265g$<;Bh^ps@!3%;&7xc zcuK>dGsoaaz5UcoTtGpjXVh>ZWeK_%U`2qezZaxQtV5l@R{J~DC*!I*`r;9WPhAz% zZmknXKPBHuE`F#K#7*sIGa>kd?rL1m?6{zrZZp(Tkrv5>4c)YN~*UEN(GHeP@X~#*0m(ZL73?|hC zpsbgFsUwN)8^!QkAmBFmuXsC=YNbS~R(nU9lo_SR29e7Z8aIgs_Riz7dX8EB#0Jib zV(;A9YG=+TI0C9^oy$Z>Dt1D`4If`>Y!TE(&37u6KgGh|H`-~-VIkWuOVeF#Hk0|( zdNmaJOT||w15VmZPk>z#=c66mQ$wj?f zci8!WnzgJd1ax}#Hb}?z&>EJ)lkqR=T`fc2&Mn(%RC};KJ@a(k<7iPNa}63wvlaRI zx9stks^xByIy0pfpX|At-{g3Z0L8*u+q4z&%phh^497dey_L8@ERr4>ij>q&U{26; z7jRzZd$E`gcEFdPeFCM%Hg3FE7Fs`x)U{);5{3ml7B2r#s)n# zN_VvS6pftoDlLDqp=~I=@#dVP(9B4$2qajxIM33jQwddA_?s>~W@=KO-bad2z;=|P zp^8WmqFb#OG`hN_=&K%zCmn7_Lox~k=&zOz*2%5z-xWu0Umhp+pa7yBQjvy!{xyGm zoUYf*#HP(!KR&DdWU(slwygd^w>d4G67^;a&;!7sV>9*rv8H$6>~v^oZ3`tbB935) zAdSd*yJAhV$4a&6rp89uhi|SvXvet1kkXh)O~Tw1Um>d1lL*vt3kUMUbgEv5nTLcA_43C@vw5Tv8sO>zUJ^9K;=H8M>|835 zkgxLU-niX_;r30uVi4)SIn*+EslMfj3XyVU4 zE+4R?lY5iT@Z-(xP%J=sB;%rjNThObo-^4_cM>VuF(8)^Gnl~VWFKQ2A19}rCQ1a1 zj-M4JRXV^|qh{o$I(o23nKUk^+!vjNu%k^8?}eW}alO{;RXK}slXUs(E7qLy(J!fv zy9Hfcn!otMcAI*e7|c&tg72N$!OF;_SL|6gz~H~MC0Ate;UC~E`#j|LsLxq!Rty;B z21~5l&~rDBC^tsXvL#m{zlsZXQX|y0j(M6_Q{bhsvmJd^@Hw43$MU9O0~0>doB|Q6 zA8-6dPQFVhZ4A8+8Hm zT&;@JaT|`kVwE`lfFn`+5UUb?XFKSQvq5;MzENk$LrB~f-LvRloFb2SDGv{QQf3I- zjk1-SBUJ2E(J2uY&3Lq%+O>C2U|SQ*Hnc9Y*SYX&xzz5I_0S|`5z6g|+A)F9R9Cba6ek_)C+7uh-i^nHZBd;tFYk6;530E?Pe~OvekI6y z9|#&gS-<1K`gxWNtt%%1_4ldWM$hc}f$me+%y|gK0c^9o&HTxOyGg-j>Of|7qF=f2 zd!?n~2TQZiZ8Z^hI{CsfJ`DN$nV>j4e+@sWyW$q<(nL zvzMQ(O6ph-^q2mAEguU-@1|Xd^%uw(HeYPm6TZ7wi?;lwch4M=6GrqBMx4hnr0I@G z8P(RS&=?hb_B4j*J~oY*Kf*d<>JEr_WAd{IMOuDSf6jc{{*~qwep(l#9^h_;n!V~GAHaR%2 zNqT?qvAHQr99GN|EN1MLKaoBh%_{46z=zrh88d5vT5-QoaAU|EUk=|^e!eZf8S3Nu z2l#70Z8m=IM`Y!MbzMpL2e|otj?gybrT`02I}Whc^h@buae0`5)Ksi zZp%La>C{E9{Xc;BAGaO<0k%=ntO)AD~Tw!>?i4Mrk}&v)zhF<0<4BoXi>5Szs%Efm1Aj(HdB&#ks{e*r=tv zBC4uTyd?;kXEP>}NnFe+G-r%dC81X0Wu!W&6K_6uwM^dm85P~TTUbJ~K_=Hrh6$gv zp^c`^L2sw^tK#%5Upk9&$a|4;XOBullk=*?&(fo+p^=7@&Q+I@JaHj-pPyQ5@D0Y8 zI*F$xvY|4z1uJ@q9zd)fJnJwbdK1=w6|T^JM~K&>kn#LUlIJQY0SX46WI}` zNn1fM$C6w;jE9MD-~r3XhH8^+`O+zv`@FJjhctbpv#DpF1#w--PLnVt5ajp`t{ zzJAj>$<`bC_z*EnAo*iQma(}HdP0de6XUo+I5(;rRu}q^VgQrMZ-SdY6uk3OD+<& zE%m{$J@$>rfvJQ?;_wD(hWu(mKymZ2{40w+M{a6mtH`A*t0f^}!atbqZ*5LTo27R0 zdOd7{MsEGA^gA~#zR+*Ha4e0f<(+btw%sQ~#8j^a`k4dWdd;ub{{XO@lgN|*2cx%`yhx%6f>HAI_-xmFDi{NP$J}~I$_V+dzGWGg!L2f&ew9>nv+`rJJ^z7VF;8KS8RAv+ zr?)GAIUL9KSpEStDz;DHvVk)%H=lCMS#>(~H=O>c{kSx48aLVWrgB~OZ}DtA2L`9# zgZuYTZJUq(HnY&}2{bOlfPz(v_K)(4Df9vFgASFr7Sc$#ItAnqg9Avl`z_)APGsQ+ z6Ybk~r+=dS;ied06S)lY7HI?8+SthI@;O@WqLY&0Dm6txjFGK51-rTPlL$9A&)d!a8lwsh7O1VZ*F5qvK`YP$Bf z=!4y)CfGl$wiUP%^TUn17S^uQ@_ux5sr=o#MwizO(DG$iX0R2#N6eeT_L_g@>y|%v z>sMO(ayW~APpAHSLE24U@Vfh6^nin)hz~|Uwkw|`UG2!6tniAPiW|^!|1Km!m9+USj-)Dtq4_@q*S~R6Kw0-cbxj3D=cs`;_Zae?@?XghXit2cs zFtpLQj;BO*cpUKzL^dAGSHK|3AIon)_n$y2=Qr(87FZZ5EyRXTj&<=CkT-lxTnN`1P`b2e2mk z{yNO4^W&V{xk;68wU)}bR0#tgzukmcJb5YnnG3oPW8rlZQ?!`NnXk2OYllG$dMbuG z-?gk2c11p6TM$i7-jylGn$uJTwl8iKKbz5iiVyvl7~_qsL)* zuuT;eiwuhQ0pR*nx>S!$r_1lkd6oCG`4EBpHUwP500so3tmYm+r_hz-Bl+rhlJ4&_ z@gF7L3q}t8gKO3@+kyb9(=0>Ov*xe!s|R-QpAF|3(<2g*nUuARMxQ=hE|Y-P$dt1b z#P&jy6K%}@y09JwTog2juK4}~AV60ZptQ&~L#Icp=)!LFs^fcysv@OR-jEEdQ9MufqI#fd{l%o&vEr$(ML> zqN;$_xMa)tgpEgVI7&IbP?;p6BZ61Jg>8uNmzO*(bC$8*oHp@yr>A|xH$pS#w5+ru zA`Jx_xSpgIm{fc*YOV=T@cg_d=SLo;SjIkV&v_!#{aF+ZJCsYDRW2BvvC{E_G%%Yp&|PNWt5kpT^+4`3GPOX=`A&=)Pb$`)JPa)U;Sk zatHXx-6iG?U(34|C%!g&6Wttaty*$U$-Ar61dF5?lfY#D{%3+j(Sv&tw0q`B{K-6a zV&quD$A-sZO;T2i9{%o#Kfil`Mf0TCS2!|?2_N^Y*CDzV>n(Q3w(}`o{Q;ZDh`}#o zb!&&v)c5}YtjEZK=^DMU#j8}RgAPu0%j8vE*5t(+MckxG)tyhwtM0>O(z6zGd1hR< zMOT8qc)jYJ#DB*Y9cEoke5rc(-jG{!N>pO7q3jf4gD4>IoAa{ReoRgUsC!|W{fTz>VL?0sZlWSCG`zb< zHMhxgX23AK5}LEYy1KDV*)V3n#f7g&Rl-}x*^P^Me={N_@w9hMD9UX%Pm?P;YOuXW z;cE+U^{467t(NN^Xe@0?9jqKM5CMmMGh33O8#UY2#40?VJ$mVYIz-96fV zO+jr*F9bF?SNtLNY5a}oTF4aI%10%J*Hr@JZe~gWy&%U{Qo3apPe<|n_({3u2F?C- zq%iqO=F>Z`Ye@c5hx^K(z>t(R?RH6K37Qn<}@5N#*s1RSyf2AWxLQt zL_}_Q5Nd~Oj}uKLYISe&iUx}EQth}*+r))V>C}3UqXwBV*Djm6B~Zp#s_ji$(KWSc zp28YZ0?L$dhJ{_t9PWUa0Sf`bD8rHz3(!|w%?|OzGVUSQ*kH5TQU64g4s(Zi^BGOI z5zQcn_GWYZEN90QOX;epc@=lg6%yZ(x`Q3_r{}ao;x+B#;rpWplKk@hTT6nFIP_{U z2D8g}#Sx>n`_xY!+H5U+`?+DS=E49e$7<5G{erPjp4Is`GWCk%V)c=(6ks09=_-75 zjK|BYX(+HOJ;M#US|Ots&g2tdyDq#}zt}oEZzTKMi9?|Lg$WM`E7s3vyZ4SW>tv6A z8dRVf?62{)R)H=kA|B?KlqYoa*4jS@IHi-P*WcUk$s1RL!Z}jOzFnL76Dh-Gs}h1| zp#n$+>#6rsha6Imzg?y!L**$C{{gZM5xE?zLLw;2G{eOV<8QEyG}$kVnRpT^juF-G zS2y7S?G*b|kPr!Js@Od_Y5^t{qB^?_ss=dGWNon=70r5QY>cjqQLTEZ8}KZzu;23| zm|-_HxjQaK-I%aA|~0az`FL) ziAl$zB=%;NjB#4kYW4^~Du^=j-f)_dL?GJTgEs5ml@rM$I!IjM(4mdv5mm|8tcE5z z^XR+)AC>#zzjaM6jUiq{X_s^4uCEAE-J6QbYEwV zee?6HvFDVL9odJwmMV7Z6haX*T}7bp4{kyZln7z5PWtdf~YJ ziqZumyAFP=;N0R<(Oz=%TBYc3-Z0IfKK0FW*wSan!gtGd6F%ljdYV)7sk1i{_YQ}u z@1_I3BB4hmzTM0byI@QRwW!6$=aA?iO9$MSPxHq*QuPh|eJoANdu0w%G6i0eNMI7W zTCB9$7e@(i!%Cl9wbf;hl!Mb&_&zNNdwwSJ-fn@eO{S>Yz?9254UD6PO{H@G^rwjz z^5YMxX6~O6m-t|WT$j^wcz+n*Mi|yfe&^6rZFQJ4=KwIrG~d$xtQFMQUGFlNQihGwXPV`Z<>b!vHoZy~U* zDpZ(tGw8oEAF}9lIDQTM;JdYWIq8h8A`Q{Q#rVL8i{rh-*oj%gzOcUz3 zA{ClyZo^3pd?#ZD4$@b(E`8RSo0mm$@x5+RsjNPJ7SsnTlI=zOxH`3!Jo6-nv!vyMRZ#oPHr@xJs+ zE#L*-9zW37>ha-Jd6-dYTit=4RV}$cH-0XD*jeqt$-$E6+jD6&Uq$GY&_?L#j&R@C zYiOwNT=|of=#QH&95sd;0dGiy?I*IV0xt0yyh(Q-KYV|ua7dw=uy8CfJ5j3Zo-mzR zAm=)1t)UvQJMqpIfX4kUNv-h5q}V0X_)07{sG)9;scNoS_s*OO%4 z(rn+<@x?}Q@mnhi>iU}RCz8Ea`U(h5;tAqCj%XK!tR*k+r+_MFzUyB@t_R2?$M$f3 zGKxWg%e(&lAD#t*qL0aLtKykNHmINA|JHg#DK|L2nQL>J-y@)+Z=~hh*{Z(Ks1i$< zRs9R*!f-f)XM<2$+ZOud(c*>@fz>;fF`1S7p@{M4R=V<2jKZrm(GAqf{7!~rX4?ER z#-WJfJR%AA@;VpR%I1)f2T0-da$rLU%O<>EV-ev1)s@jU513H{E!Dnj&44GD8MOdP zHI>280-`6rV+*U({0x@K$?n8BZ2I09uRdghoi*Huo{e7=5jmZweq~S_wzl+}@BFq%V z5hog77{a*mC=qu{&*%i>5Pm80x+l^iE!iYJS=I9$F%B_29Adzh${DW~4p>PWVLkNE zC}1vGy~s`wG^=nolRN_RS%51Y{sDMwUakg5otllPMu!TcV$uU2E}W--3F;I(9(cRx zF-?Ifl44_?v#kyjd1;j6YUaFgzz^V7+Ry2~GO=J;mw7Dva6zZ6SARa4DO{cKhwOmv zW#$RdA*a#w@f-e{aBuS?!!MUv_(|ucrtbf7ZPa-0$iJFsCCaHu1=nTomMp2Zb#EO8G+ijd<`oBl@-_ct|t%67w!)^fa4uX-3;_ zX2EFRlK!IrAzaI3JQtJ$tilc*>8_(s^;A>=qz>2fQ^-+g1LgE3j(^3$@aqSQpu$QF za3^7f)lwZfGD8!lp})USZkR8-9n(p~)@Ga0BfobbSrEli4AM(RH_ms{nfWuUW7OG zefQ3ani(pg?8j)%@=1K+JtHQw)2{u+~t z2r~#kT_vCY9{`I$biWqXscVN2;&`c4!N+mdd9N|@&qw`Qb&u`+{hqehcj|l-?Y7cr zOz^;t264l6X%j0n#*qvaMB(*%#wg-A;tfK%lBmsMl}N=XQj=GM0!?dCnF3f=PG2bF z2QXz>#PaJ}^^ECKW1}rHr1rkENg!f06CN^Rte=9)#!IOnjLgo_2BoQ6X|0vKRh@-5 zGNAUosvCtq+A7yXq+khSZ?l!BQKQkTZ#lro5&X|>@j`@0qlv(wKN&$+h_5aa&2?{& z?HG%6i}c?tEIy<<4%OaWqsnU%%+5nvcM%gD;D*_9LrE$-N~Pwja;;4aG(CWU@s@(G zRiG7>Q+ZicqOElmDSqKXQcPUDv~A_jvHLVP9%Eq~M@^YzdP&bo4XJ8|)oBO-f?}&T zR{KYoH5jC>>Z}&8PdbotBJSJ9R+*TiE!^v*L>*O5>sN_TEVhLw%u45sEm5s8>kB{U zpnH^&lUXfqbwlYS1M-TRy7UR+D7ebZX*__zYW^xy`Oc3LIz{4KQrcxy2N6q}h2^pX zZ=p#WRL-FAX#kRh_u4~h7FO5Il&v5iguh<$HXKMPJE-RbXwi|Xp0&(S)$+(EG>Wf0 zDzy8p)lu3)?)?ENLV<^aED$A-PmSUYD`np9Z21tllbQJOBNX4PsXTrfW zR`9{bsXZe=)Kc4=2?ZTRWuYr*q!6^wiiyW9Z>$2SlB`&Q0-anrlM6dC1{9V*fh*ifC^w+ z$pRdT5ttyR1L_{Q5#Ub)%K~mG3^;|&pR6)5SR{ecJs93fLqvmo9K#HZ#N)~pDy1t7 zB@&R&OqwCC4*Vm&5uis1sRmzk%wmr5$|A68r$~Yjk-{aKhy~&udq61Gw17gX6b>Fk z&I*~NDyT4H6-s%?!m?H;av|CfV0*_%rJ;&aE@3Dyag;p5+I1mqttBc+*+A|L`On8X z3!WX<-nK|mm{lBQXZIxk0H)t5^oZJ>B{S})hyMV)cy-H$QCqtpTtzo1{lonHrOzzf z`Zn>GQvSlrVaRCJ{?Y5nYVcXS=M-EHG*&3FvH8}MvbR1`(e9UJdfI^?f-B`dm++pd zonuI4^qRT=OQWbz{{UU(k2c$4Lg<2Ow-u_@6s?fu+5499pX4@@jCAJqMFjDAy^Tk53fN4_z>OxHlyzx6NH&l$$m4PS%xP=8~fnS%T@dIkiw&-vT(+yM1Sp35u<3Ub$TmoOLIpf^pj* z5^xmRppHl+(IT=@{Tb_F$zzgxr!<*v&#FRFo>Um9p&vP-M70hejS7XPc^`VX!zYU* z5J5X+LceWv$F*(M2WsR*PV?qMfJyBOrWFr33PO`anpY4Z^;Wfxx3_WHlz^;kCaIxQ z>;h*t{{RR5!`1vcP==m27GUPt;!0`$)4G0A(XIG{M%8Twv*G8Lq-yCke%u}?cjHVS zi22S+w$zcfI?`({sk6A-q#-f}5ikVh>{@xU@kP5@r-l^Pm*UG*l{skFwHH8cQahgC zDIs#o{6vdy5?S2-16Q|2F3mmCW7Td|nN(~4;RG0q%1$c{8 zV(#r%mJ8Hvlq-0IC;6LDtPSf;`@`kSNd`EPsCwsv_1Co~*JrA>hBamq6r`Zl54L|R zt)8hqQpY%6p{-kKX=xg5(yr_q{(hTqKknM9xouum!Aaasr{ND4>HZ_JVMuwVuhgIB zTXM)fXEJ@Hd`0+HzJIBO?`zA{w2e7MUm& zGomJ0ru#*X3WE^7t|=ly1fwd<#VI4C0+eQ>Ak_U~8R)CD{OUTwp(R-x!8VGD5fr5G zNykW^oB2zBV zv;+#7+2>66r7wYX=KNC8KA3#0!4Ci=C-V#`}qk+poFbqgn$ z{%c53jsT5Rag|_!;@qvSfZ}-qI};S&wk~bSZwsa;JG9hYO2Qm8q_yd~ph7@&)hDdl zpN36YK*zRMPi(br0sP=+;~_j$9&jaA*;;x_0C@{XHi%MBXcLMItn_$xS)Mi?+u zl-DvNTDV~d;_^jIOL^j^*$Ql+g$zp5+LO2UT!^Y`wCYh^naqxiQ?`_4@hg>P;+zX% zwG?h5!EED%C22M8W17`{Ho`yv2v+qJxl$=v(Ev9!Se-N66ydERkHRuPa;KL5Do*|2 zeNo;JkPgOKT|oxhP<046tg?7v)|+ibbjaNIm7R13^+lwrisnUOSh+UIN_l=^ICk?g z93I_US|TK5bL`I9Y9$^eEdmR70DyaSAHrK3{JEU_!;d-t0JvKL7*$eh&{KKPlAKm2 z%rvlmf#*lFgqW@;wmF_iq0I3hnh`npSd|p4Fcmq0Nrz5xFiF%33`d$8Oag{EBQ-li z41FCKRRnTU0hxicdUk|aA63X1sE&K97oAsh_b51 z21*S%eK3Br=i%&F$w>yLlhkbPH`g08sL=kc4aFmn_I{iDcdxsxSiFm(fb$$cNIvc+ zxjn^kUny|{aj&r9F6vsP!q!XWgd~oEJiqBXQb3$tB&AUWx)i9HPsBE$^jB0N-Dc!Ep7KI7}Z z-h4{(8*xI}wfZR|`cv2DYGo@?b#Az#ky>DUA+?tiZK}F}YsBZ{5WezMt|$d5rv6jf zS6Hed1EHhm=yBqenzJ?SS7Sy_Ul;z;Qh0_|&4iBiy% znt_UA2kR6gMp%6*CZnkB0#gy~I9Dn3hfUKLa`HLV4G~()eU-a5so>fG^X~y_z_&=C z0aT@WQY%QRK}n@Iq~_monfg7Qw%!%TBx=uT7YIn=w%Jo;{^Wusxt|I6dswtX!G_ql zDa!4YL-8VWWG!5%ld$g!&xkLy^p)F!7N5&gi0z#Col8@HUUdTv*mxxA_W=6Iy|YmP zNK;<$E7Wx!Vky>s*ytLYN;cu!HhG!0w9`oD*@W!skj01((5(BcI`)7%LoqiFX2B|_Tv+TVb9 zxCK(OIw*gca=P)Rp8JfrFRc~no=7=S2dE%t=PPdb$3p)A+y?m!Tr%}IxNV42Zl2>~ zBS6kcYySY*-qLk+S?esRo@d&$`;wvDcM@+}`&)S9ABxc(YTyybvXetkDJyZ}%@b7A z?ezUd-Spd)f84lFq^8etFB+GKbZ-yo%`GY(n_wj>Y=sg(%qYe>AXl?6VJ5N)WuQhM1X=*59`JxA`ic|%EP^Cc!GoE+m-5z;AfGSs)vAL_aev3GBI;q{hoUQKS$ z5KxYI$oS?*Xm*;WsPfaMFtdGbJwfRjD1p=s&&pH53nZi3uH7V#o2%T|K8G7|XmPVt zttz6DdxI8blaiPi7!OwPr`-$N7loIJ8FBO^@h*W!QBMB=)%<5&(zPo+R?#_*_vmtVhkQMq>I*8{IQqP3M$sy*eG!Tu<^(67B#5ZxDt8egM!*6F560wmyi|`t-vxj#&-_d_J|PHAoGW9Cd~RblyG8Ll-m!pLJ~od`kk^H zSEy4{v`MC3HkbGn8f}w1{;(imX!0+dj+kKlMW-dZg%lvACm_g{Ze6zatQ8`3OKCyEp0(dt4dFq{{Rz~S!;K;$xtd##Q=!kyME)-ZTnd8R@OwYd049H2q!g(wOuK@ zl=`Uls7|ih>;YM7Lhw%#)UU4`1Bxq{?LFJ7iVS(lX07eoSWBtp@rs=Ef&N-VzlHCc zcllIte(0RKK_iio*LNg5Q62#x5>8}goHxH0+7|UE9;q4RBr^{!+mz;@OIM3RZmyJ4 ztR!(VyKca2kN}lnG!I5rjvDr?Zt2T=#@5d+V1g7YKxazRE`{xrPox3NR-4ju7ed0) zhSF72QYr?16_cJ3)g7=awYy1D7U1BN8mT0j5=UsiFxwj|5{T4(%_z?j)#w9!#}QLl z&~fJ;38h5y`D}pdKpz;Pu>v=TN9FUGFc)GuImbz$R8+?V_M|Yz3*a$G^roK);l3dd zoaRX>Mk|mhHkq28u^bafAnLek7SeAVM^iDtVjfw*ArS^KP|6XCNEwC6M1m#IkAxEP zDGEdyhHC_cQYf>wV@RgiG2~LS0LCB@gcflCR(UB0HIE{{8I%;n95DGb4E30VqPSEX%^5Z6JZVXSB!!_mP=^wvJdmc=3RIKTBv6l}`Gdw9TiPdxuB{f5 zl{DcARd7?#{U_7yZ-Y5U-;E}w!&Pk?q_DH*GCxE5PLGt^#?x8;FWfVHc|$(RKeF0@ zwAb5cl!oq`^iO_Ur}Y&1&iI+~cZRQ=vb<$zJQkIMN>gG8pH^C2BI?zfhK*Zw0mPBm zio^3N_}V5sN9?<0JjBH@Gt(=Hm6RTX;v-0otZ6a}mMBR5Rg(RM!y#Nth*CKYl@zRA zti-o?X;Ajk5xxiN8oQlqkorF*_@>!*y4%Tc`+|s8DU{&<00|k+qvbFE0D83Lv9F@( zD5EX{1qWKx{{R`z!iX6-p2A}XM}jp8ssedb6WTFcmz5e&P(}h2qCkXCB^0&=Ni-iA zETeLOkT#mjVZfuwDG8-(=h$_JMUBPH%c-|v$2gi01!?~PCRw~Wq$oVASKCrvAh_Wo zsREPw=k{{U@4a@vlzr4mBL3Ojs6F%Sl*^3P8*v(ZkBhmf`NO(<%d zDkOM-prjlfrL)CKDr}S`C?^Cb0DL7i!NUh~aXH(qWq|dzV-U)qDDWS~Ig?cyKp`p! zD(?uIgw$^-kl&1e={iB7CvyRE*(t#w_XZr2K(A@74oeh(Bw}(Blw)LdY5KLXZO(ZF zoSINXsVxNlS}LEI8FJMv)TY#{W*TtuAxKg(e8H4&Qk72{5OzH$TAKxt$apu@YnBUn z`(Ll<`VOS}^>)9S-~p?GIVA(Ar%8D6E~ntP(9Qd{w$84+(Dkhlx{Ty(eshNf4T^AM z6rbog>}8Q*0}XQkPG0Zg4;T1P#5yq=fJ3QLKQTy4&6;%c{S4vHJIO^M#jUVNNm1N% z#81kfm}YqQ5+yS(-57}Uyr}iedR7MY`9K9w(9Nw(1dLq#qASK)ihU%wJT~a;@;@{Tu?PBKhk@2FvLkj$ORXL zyjP>$Xv0YHCX&m(iU?`;kPzpPG@-Ab)>X>c{6f-_P~A@yt9o?umhZW@`Yru~H%(h6 z(_3vpD?mIJoNPc8Q1k65sJly)D=AT?K^sDm@XHbRZoU=qUH*cwn_G@{)v335)wA$F zwEQPZzVQnh_K1~+9BnQqiqpsvlUh^s2D5}Pl$C`vr6l#^k@FLz_+_@<)7V30pjL#Z z*@~zd8jkXnn`+IGv<*_6KTZ`%#=ij7p^pqQr(3g%uo$M zt~zI|Qqy_b6VOXR2tXVXfRxa50u>0Lo?`QxCHj}rR4@Q=BAZVX(|B$)jUoUI*o8Wi z2B8$F48W{X78ZpQ%puRtkY#UG(VGv4nIR^*0!wPTt9FQ2Qaeg6t*k!k&lgq`&{kZc zRzQLdp3g6RxS}J787+xdpND86L@7t0kk<{O;r>MgS0+~%cW}3X3sQ}H%QcgZ{uM^x z0qwz^dhL{l#2z4!9}r^oP|GN)8w8Ij5~Vb@&nEbvgq*Zv@s~C6!nsunsG3kn_eBwxn9>Lej@p0I|G>=a^Me;lYu&5lJ&e5 zD^Dj1$|{|!AHbjeW@*<0no{ms?Ir&J4$;Wi$qZ$%-#)ZH<8B;<5Niawp?zaET^NwT@o60%nWgHiUNLS^X!Df{Z>mTc z1W9C?3CnypZniahX73d8xvPt7OO)WQ{(YxWMnD_+&o{l>4ZQe<%`!6WA~Irz;&Beq z$dsEgPLojx1|Y%AdSvvlM=4S<2nT31oI<8XR&Wl4!f}|G@gx>_;b@)$JPDMfFjz5J zNYxC&Oi-IDr5z9`P}D)GH6j^6lNxjKh8pB4)S4@7Mr=qB>lMrsl&G%q3bM2Inc$K@ zB5Cim)W9q_6J5q5xYr}Bcmt$x9XdcIV2U!HohI?5c@y0r6o6dF_ej4TX=&BGBdFVy z)xb+1QSHVaV*yKI0ub52L;$WHeD9O*LlKl0Vt*hPa(J;t-ujOCf? z&JJGQR}(OtMw6L@iohj;T{}q4bxKB&c;XMa4Hb$W*^(s0dXr)M3zm+{ZAm{#HJnZ- z>OXe9ha*>*{lwGLuJ~)$w#veTi1^cK!ETV_cMdlA;^I|B4>|NjyD4u@drokbAZ^nG zP7~s7G5t3EXndsP@jXbc4E9hYz-O@VP5~e>Z4t_fR}tQolGYbi_TeR#O~u;1psagG zz;}@NB9co^)D>*-b;g@?AQYsOih@QzgqJt#TL;?HgO9p~oTAU7gG`)^$sY(?r&)P` z%PJN;5M4@%1uGqoSdYQFf8uRZb*(K+arG4;wVEX~+N1t=m)#lWS-DtZ*```r5~jEe z1ydmW`o@B+vX=Hn+!QvRXhEV$+z~kci9Ab$d1tg%+ApR1fnJU59#hl~-+8TlK*k?JnBuYrCzw+NHt?;}y0-~&IUlHy+K!0pYUggQ zO;;mg1Xrd^avM>w9XwQ_A<;pF4X3@xJ-SU`IF%HE$d9aY!<>myG2T~__yQF+yiExs z;ACdIp|N_R>vTiZ{ORlQgj<536GC>94Kn+T^K4hWI?0D99#LXqGtxok_x2YSZ*Xx0 zgR+LkBPB^b-J_k z!=|55t>=n!?J{BJnDrIv*_5WA{7K?R>qvs(rjUSHQ^i%vR*F;SEQtcsF(bA5MxN%U zsax5$Qk6Wgj!HBM^E0Y{>>=RYPTyER{{SzivXWguNDD?Xpq-QkXCQ6Gr9y)}DZH}j zzBAVBtd(fR+SJeVIC+HpE3{-J2Vq=+Jv}9_66ji8mDS#av;;g-r)=rOD4bOzp{L4o z-A}~V?rP6m*xbKv+OQImGCL@Bm9YBDic+^Ek|_wIQYpb-IvEB=UARO9x0i0-+?TGM zF1oGMqeB`Jq~@d#_X>}wf>BTP6!|PvO+r<=5nncy{v;-@VbxZkl1FcF{{UIh{3f^D z(e2(r{t{7umkVxylqEolB!U6nZ->fLsW_wpqN*p6 zO$93|&j&;9^ML|c`nP-Q`#W2kW*>PCIdHBGB%jPc*hOI_CWL3sbCqgMYTu7SoC|K< z(&Hb_B$i2|(OtIVPC`I;mQ{^5t+je2tSbktGGKpj*jM?Q6)0eX6FCC~ri3X<6wI5_>_?)nRU(QMF>88a8&D(-;?y<}o*)1OwRYr8d@5?&a6F~k z&Gl^sc9&~&9-7YMq^9ajhObnBXL7%@Mblgr@|>T>Iy$u5vZ7R`)v@g@Z8t)H1iN20 z4YBDdC3|^EVSK;?ie}|(f<4t!e*&`8wv@gVVeCUZk>Dhu3=u9T}J6jtB&z{ z6+E@H&Y2iYV7)5jBr+8>z>h)90#%qqpLAJX3aK!OIe765f3gW(*V_MRTepk}d4fPAE#rvmUl9q8JhhP8qiLQ!V&%Gr2Opr*AVo%X0Q2Tat{X{)nx%^G>90@3M; zWObiHc+W;}Uhv)Bn$yYN1#FsBg^Y@PcKOekLuHG#Hsw;Js+rtRPqo~BDxziINBjD< zZHK2Uj-Rb`>&EZwZSL4LZT8aQNb?azOy_@R^{>U~?&8Qdm4C;mfO?M&99kQ*MQxRn17nDLNJ9jkD=>4xlAVO*sr0vp{9LJ0`7? zkW|`f%A201IFw0SYi=A$P_jyi;xV;EuxVO*Hi|-Oc+#{cH7%hDO(;61n}a;c)}^D? zHBAVH!zXad3veiLDOSdjE#UM`c`Sk{ygG_d%2EjlB+?03sC@EDg%YqoL+1-QN2Vd# zg^HSiv6a1Q!8fZ@j3^=ScRMTovdOC2Eh!E(uW7-k=@A_;y2(&llC6mmbFYxX+Uzko z%UZR%U4acdl?~`&Z?!bsGE>9d{XkN%TArJ7(OEQdndCQ+s#1`uD+Y6>Ck-Bzd?)c0 z=ygWmgaWFa`$g{Z2?0kG-UiX+08bIj;3Ob3ppDRCN>y` zC0`<@yU}eIMIp4M#N-i!^@%PS^-@LC7WYHD&C!4T(?b`&@~{f2*u;xks7WKohBDIOE zy(aY*l(y2MlkFr79{HAGasDQqvLou+c#n2xzZ8 zs%b2qAJZ-L8)vQCxi<|wdN;(R_sNXnvyxO!+e8<7#h#qY%3IB;`T&4e*1cq%!0IC? zjm+ny19?TOX30j~)ds-9BAm@O6MQ#thVGOP=SeC*0h&@)yd|x4Q5+e4=u!}84CBerD4iC%+ZuIksp384xGcnY* ztK7^D4v$OId~%Igsg$ysoK-53nvGm}YCDrT-`it&o3$y%9rS;!B-86U73E6lU!3Lc zw(zFG8pZ=le{AMJk<$t_0)S#%t7oiv2%(HAsm><~(|+UXwrNTf`kg{>1Ar?M&13gw-APEku~mPmrBn1X zooAI_50q#0STBL?>5c)k0`azGDIat+RsLpfk@5x^A8|A%H*xfQQU3r~v9rECz_BYL zd|NWpn!y}zyns)RG#3a0?PLBX%uv^fbazEle2;+yO9Gn*aX*rxLoQR91LA!#I)#gk z(yFE;lUk*N)Gghzs{a7GknSWY6$B7^iJ&D3XQW8Tcop@ktzT111QedIIP;g!9BC>l zRm)A*hcuK@oSYfns=;JIRQ)=NgHh5`ymM$$`Yu~ZDOmSYytG`prp*%>a@%)y{l!vo?~Tjw5o!j&Y|I}(|2H!qB$o9K-_q7s+FM7!f6Xul=6_}eIOW@{i(yN^z2xj87EbN8+J0H?c*LG{gc7ABtSe~P{J3`bF!>i)&qyQOGf=+tN zy{4yb?YUaqN(vHGu1BEUiN~1a#p!14wWp30k|?1~age1g-T+V}8q>~Rx`=M0 ziTCcNGnG=&=~`y1X{feWXz*ADgiwM$AjveV0&<;YxOlF}Cid_ClK= zq~@YNlrbc%&PIzxVNhtD;PK9rIS`}T0W6IbNLkz;fuBA7+R~Gy_^J0AMH#sMdTE+h zarLb4$yB2Kj(wh4;0=AG$px z2HORWL{tHSJ`|yr{LgG;J!trLg*IbHq|7vp<%q=@!6mnplL@Gxg9@5e*JwG)GAw?( zY;LscgaK8A@<{U&o7^n&Nf;HU&UJx9lS$3|VW+E4zN=vRE|Rn!$EcmpDBKNcm+C*u zM{y703`*P!qWfYhwOK(9AZ`15$aT9!5#M;Nht!{F6|C-OElg#dv$-$1#Ly%hbceWA z9HK=MpzazWR)=c+VF`FKl~H}dlqE~3t}EUswbas3v@B6X zP$zo%$cyKaR#co4M_2}4P+C%V8!8rA%V*RGa?5(tKM0b|f66FH6*&}wy78$8nY<@{{T%uj`fdqBaIY%iR@zCL((b>3HOYHPtqiDz`Bt@P7QNe&y;ZV zV`g<>?-J#@!8PODK(%nbU=?N_;cgIm{hc=^1z$7Q)&oy^URMXFCj@(ew>mk{7Kv72#LR>02seoaG z`Dm;!l5j~AA3SKZ6G$FZAk;@V=-6!vIu&yqlC{ObosRJ}+hHmooE?m6SH)cjJ3!n# zO+l#xA~q$dWLAD5~(iD5FkTVgag%A`zaHwGlAd!$`K#a7I zYgtTAxJLe?sokCrzTyx_!+zR);#-{=N=PY6x}4^+eWnoN6+=m4v$G4fKv*29+BD(= z;ZqoaplUh|#nzs-)o_w2M1RB&LoZ$!)=jRc@|2*YVHBk~4z-bb?w*y|`e~|FP_Rbh z&PDin*6(?!I)4(_P*5F6{{UE-10$Gr*xQPsBP#}Ucf=ZKu<>=x&7&y+#r`3+9;seP z{YZ+f(&dBf+?JM>Tm&IpapnhlOP|}t+iN#2wX55-dKC6Drt5$Bdjupq{`5%gqd4e)zpGR5#-z`vws{T}O2P9x)3<+|mhnxs zt>%Sr#-hp}X$lS?DK+B0gn!P`mi?oeR=sOvg#=uey(BC8#VQp~gs|Oej9$O}qnD|8 z%8}~|VwF1{zx9`+cfrVXdU?^VQ8*(-KZP_q+mBxM;^AzzpjvGJP?5Dy!)X`d796m< z2vWHY^QN%aX`~=*kOYm_bapj6btPhs56YpqGtb+)=PoCq)6u)jV>*E!HXd-(;lcT{ z0e0#Ul^jNDx^4E3^3t}{q;y(F2#`-badNQQ5Tz)Z00gmIOoopL?B^Nag+=wlWnNp{6FEv1k=P8h3$%yYVQ;JVoKS4yRo}#n>xjdi9J%<^YxvDc2=td zF4o+R#iaiLq=nQxDWzS4P|B^B{Y)!}`fV-4&nqY5h8N3cJbWiFK404wTqA~~WsZR- zGs^o?>VPPE(O>X|OB3D$qN>KCKv%|YW{ zBq!w&KH}bAC8()eRL*|l`t130{K|3V;=<}S>3y}fy_6_rDc=l#HFQcysp~ou$T1;j zClgh1h|$J5Y}YMUF*+Jh#bkmg`(TZXVw&KpO19UTWIWpm!)m+Vrf7$l=|BCS7KWzogLP_c>_y`&{fl&AtJw5H#- zE$^HOG!>m~g^}Gv`h!s3rg9;f@ehY>b%1UfDMjrC92+j35BkbO+Fimf18*To;(f{9 zr@XV;->JQnenu->sJZ~IiaS({&ZSWi7zahN&uw>2TCGx2?;}i_(u2rL{{V;Yh26MH zmP)|IO-&>LZIF@(8&Fh3SS=Rsa%`)S^M!p-zOxB22^dR|ZYVhOidxAX1UKuxC6jE_!=reGmyoWsJ&abG5AhJruW(`n^f>Z)fAsWW=q0Zpj%ST!HyeB_?pV@avUSanWS%uYRoW^yq6&2?sN zE)?5}P;s(S;uM-tgDlGt!Y=K=L2oF(h!hVq>2teW`cVCFRMNh4Nyc*uhWTEH=gBL8>Qd3s97^|$xRl3 zq7rMw(<9{<1Bv4$kZ@bVS}x_hz@u2uYc(RL5Kxq|nXyw|usX(&om)+E-9m~!Pl_go;OCBopJL)zE zBgdit01+Zwb%#~KR2`ybt|)~CS8C!FE~QQbxa$ZX0`H?Hi?<4Rs3(c+KS&1_mjOYc z8-v@*G^U6&G{h2?aJ3J1#DR&hTr#A)wV2r)gwZZ_peC!zCh zP*aF9`6dx5qG{BKooS-6kCcD|B&tHWAot%h&Wwe0Fi8Ytnu7{5C}fQl%i>s$Ang}h zfOpMeQktfqX1R+kkgh_55VEHOIEaOWbRR%I*&KAqu9b(BA-r7j9oGfW@&kNBKV#o9|=9r2E$&7Y{nx}7Do zs}u?V&>qz$o>S>Xna#fPXtvjSOIo6cP0g~>-~4GO_=EmuH*39-zvDVfPw3gO2moR_ zXgUtGyDt?b<4!E`LQ0JRG#~0`W70fDZKzy1ZsLCra+MLltCC3R?%KXnh1ev1B@f&v zx0o-4+Z&VAmpyeyA6-c+o@Ny#~p zx|XkHr*ZsS;VMy}11I#JTUi|!PQd}094j7Ww}A>sHSQ}R61@`NTTPJ-H+)mb0*ViX zcC3$Ik2KWQjNF`%2m?NQ%I%(=ec~-e+vO}Fg04Zw2HlbX>o0A#leCap7jJ|}^tJbT zaY#ybpb-Y8bS+RlHvLx)0(nvj*P9ki+o{F8v;Y*fS0~HM$~*Ib6p>JJ4)X0jSq$RC zlBUlvl#dt;E@97J*|&I<^A+NH9-?V5i%3IFgzZBGUFREjSf=S#JPXpQeBdOtKyL=+ z2#;3V##0dilA?5H5GJ617v@NbIMTx}Ii6bE>p{{VC;r2w`CJA)yuu9D@ixmgewF0;n92C`*bC9W6}BSPJ6 zJWpt}f?Zk(=yN8mbynU0p~N^3V>t7~4{{IE7S8>~7f_@8B}+C`%dv&gvOr`#trtl+ zAc#=vR6V2_%B{Re`Y1z(=O?uP01|S;!8PugPR}gQ{{T5G8?SckP9V>mhGSc|a-You z$i>LLZDOE<@G_0N8{yn?x;Mb5P?;DVO13ok$KsX6B`LyDIFQ0zf$7@gd4%K64x+n> z;zVCc$;yLTa5tyitegZI%FdMAqR={udSp~d{eRu3IN1Eo5RcX-Z_~B24Ip3%=(aTz zOmo(y<8KaZA)8@-t-2M~nV6%BL|P+-#t0`Mh^fkj8tpkAV-PIJZtP{6zej5rNgoM? zRE=>+LuJR8!LiiteiEfsPT6sQ%KI!8jFRF~r%9#~Hz#P0?_0F8_FK`#{{T^t+RnDO zs@1hn$8M%qE-u)%9;4p#U&~$RdX1cR_yls9`#gL1bFy3@%lM;Oas3tb-G+s|3P36A zI9oSKZRIVd+XU1S24_w2R=s7a=r=lY7%6qNB~7gkdr8hnrg2%ynok$0RQzj+)T~d3 z#xU5bJO&BN**?>2K$kT2l2+(0pjQbA0>8)fojEH9{LT~hnZ&o^#=?lJjktu53R5yRiQXH5Ht;O|JUQ_>nG6|2moZC;>GYT`eq6V~mw5ZptYKjEz?n4A;@ zsilRa;Kd%LXcTK$5-8an4}OLWo&;3yw6KBIE9o3clYbC03)=5$okSj?7@)X;FLk78)J8Q}) za!x_0p49A`xJh-P#O^>5c+R1+EF?77*Cd6N$hZ8GfwfXv`VQ@lv3LZabDVd48*Ycw1prA5}L_vJ%=1yXi7?ohysGO zJ)^92_a7)oX-ZMp0a?^MJ>Z9I?iqgN#3UhUU#2s*WoxgD0#U4!uS}}xv}dUZqysWRd;4XCIn@}|)WoGrekl~fZ`L0^<8NNU`n&Tc3QkWNUI{Zj1P z79C+>OsQqEf@%R7`NeLr5F|9hqZr8dhSKY`NZqT2Lq{T)S9Kl1&^4Xjn-f915be3dWoo(r(Afdark<*Kl<-l( z`F4yOLvCjgoFgcV{7!h5!&SPvQo;#MaY`mF_jOPLeZKfh`^?^p65yjlk%H_{8*Ha?Q{uCY>XN!fU*;-uMpbo<)Pmbf#r;_rv;ys*PJw z1AIdkLR}Xa$S(XrAW+FGMHdmCf>)gNnfADa0z9D`)E3Mm47xJMZIu^FZm0^xVR1@3 zlOR7DRIXp!jdwD{!4`A1}CVG}b!w;39i8iyEb&(z& zwN;`V<|?C+6>3*1wzpcEBi17o={WnXmA70YjR%WniHa)IQnORk*waz`(arPuTN$Uu zR?FAA#n~#UK+hV`Bt;e)Q`b(H?uqvrm8)~`5`DXNnMg}W2}tZRWXp3_&O9m_{{Vge z07X%z%g;Lw14HqvS9(sCo4aI(1$e9t(4(;(#N}>kw=O;l?gcEWyX7LgA35}m4=iGG zueyE}OIN?%?HQ^a{{Z^|Js166RsJxx8{uU5SUw};{ullpFd2Yp_UZxEyHn*&>Lfaw zwOLU}SmllIGt^B}>S*yIi6qfb4=GDka1T&=&c;w~UJkiqO1{&UT0-4J!1{vezp;^v+ZQ#^g7cX>#1iEtL0|9<%^ZqjS;;0F%PPKhLGS1rh?dQ$~ zf&_*O^Yg5@!qkTnMGZZ|ksZp15Ipyt%U#fIHD*>;fS2j*SnuaJ=Ch^TSzNx;ttl#P zR3P^6Jzmdw4bb>|9fq{)Fx8Gq)KNn*3#k>{Z|4RIlA5t%ljgVPk7Pf%5~ z`-EMh*gt)I)vHa_)tU^_bYBd34bbWwz5q8u7SfZDb|35Vmu(Znwpuz9>9mEuGwPI% zUs+Dw+(5w8x+FyEpzyDU8qn?3d8x;o{K_Jf_({@Z+%ymhR&hC!nUTq4*h}SPVkc3} z4kDf4-9Vuuc&Q_l3N#U%zER6hxWOMju`cC@m;K{;)L!Z73L&7`R~q1+TgqjjZRI5L zQb46bMNJIr-aF8LzUaygBr5Hit&)Ftbo}QGbMZ{RhQeGxN#LaZQWfXgdT%MT8n}-J zg|R-N`nQWD+ct%`>sJl{K*Gf<<|!sD{19(6dyAm|02`aL>NcL7Is$u~d?g(>2}4L) z)Uvt|GI2W(fv!Ih;cFtNJx34}mH8e-)96HRn_oCn8AIJ=G{R(wdpw5b&gR1K+TJ#% zt{XTf_a;bbx6j)+lq?lDN!7eTp;~K6-rl;BH(hNV9$yNM&~AhnA3CDXmXR=lDw>Htp;X;ZO~LR!>N+)yBGvfYsE( zCU}=awL*w=jwuLAMF1E8Nb8+q%Fqy}Jw^WjN;6-auWEYR_lorF!jjf%M_C@to9-&B zLh5^sry{M4?UyO|th3CI%TWGo?azrETK@o$%21F$c1>b`?;3-^@q36k_M}0vr%-_D z%_5NlF;Mih*g@-S-| z(z32w0TIS#q=N>cYa3j~1agqlrZR$Mb6W2jR4dXLC5;u$gr!vmvu~e63@ODBC?_bg z@q3NDYU-)I6`1{J#maq}bFMZMzX~KJ@pRPy<(|FPmiwvz)jgson{MeyakE9IrDZ9N zO=ZqRkPMf!)e=>OXUcSHn26%c;hjS`8{tv16J5<=aJ8XptyB3_4$&hQ$ylPOQg@3K zP^49&2&TqZ2iZ{`?5i4st*)qf)DSU6&{w@A&A*7ALp)q@HK*rL1pOr~*4DPo93fS$ z2$25(i*>vA0d)i30#lm#z@G_x(FK4A=)D1-AKP2JwskK|B{}9js$Xgizflyq<827A zgLnU#6DNeQLpAQXK(f=^ z6~tE(^{3sqEM2u~`sg&^;;w27Bp#JeCXx-y8=HHjjuo{O;G_Um@iV0jy!iY?7G-EB zL58}r@(;ZV6pn7}C0o*x(5p5sOQ=P_N|Q=eCpGILF8n_Dc%=#FLsCKBN!ySeMQTKNf8x4H`4$tE9YjKhtm#RC9awT7&h z)7Ztyb*B|q2Ou*j%v>d+OJS$>}DpXbY zww8dRG2Bi~-bpx|)hw@#;P(9My@!e{Lyj#-x?u|RmJa^_?N@O)#pi@?ZQm$D1x7_NI@CtVRymDFYUW2R6#8;f z?Z>L($)N6bct zyiF|}N|Zp{1D~iQMDF(fwNk8)55I#kI3T}5H05H1uO4zL)#SZy+pU_m;zH7Vh^YM{ zl&*=&zggnAmey5kU&;&A+PM%)SRhqGG^kdgLJ)y*D&`%?tX!A;N>AvAZH?Y0un@A ztupF@jH~GeET80R+UxLxg6t{4uELXCXC84%ZCy#q57H<@O6rniGln&`)ScqC^!F~% zq&C?q1C|7vu(M(Hwuiw&I;{ey=Pfo~A9B%YU8TcH>NzBdR_jDGIxK)ahJ&W*54^OY zE%GWne5UHGjW1S4pK!1IN}2WejDVVvyy`Y0@wb3_&9Zjp-qVYCg6!+Ra5Wp`1$s=Y z&}luwM-lZk`oONkIdR6AOoChAgLEOS+_?7-Qrg~xnto+(#$Ii-Htp{kKZhU7S0Fgh z48@)i)03e1de+cTJI9-+y3SAfe59wV$kZCn7UuJ8&N^NuVeo}ooCjzJRbMDDv$bPX zyqR6WV#uK#;8naKRzJ)VzA{~xYninKP{9&sl5^(-goKv3GGIs@VukIPB_|-o5aO|E z_ReSbR?VcY%KY1f(Pa)Sd@)}Ab2?(rAu3;RZSEiN-O;sG6x|$BDN>}3!2UleV`XQj zxQY6!ux2_urH7EUr6EONgG2xX>R)Zs$4I(SJG=)9{#qye*YupC!EL1>PLz6pdjJ^| zqW!Sc{a?n}I!Shc=y8^ebIsg5Ill4T2Er zMMxcp>LjT-k)9%Y<&75c>mEOeZL*|t6%`Z9Qz^z^z~HtgiAUn;pkG+s=sJoP?*)VT z96_j5l+;5P%CLRKqTPoS5};K|8pJwRiJjFh8MW3Jw&aE3LZgw`f}ix2j}u<5@5Bx` z%VDJ3`&&f~03CjN&q-8lBnxyXjhC!A58>B8PiLWO7gnx5nqyQUAl%b8Q(8|AubRl#az0^vbZD9;Hrb2VshNN?Xm( z5+ehvTtCx{f9uxsTQPibEyoRztKUV~`Uf#oom(rP0DIdBt^ z7_*E*QxGnyfWnTYlb}H2hTz5p1Bry!c+hDbgPkX~BU(w@4N)sUm;xYl?*nRgHm*GS4YP@_7Tgq4spTNlD?QY61?5o|*igoH@i+xcx z#at4DOm9K*5V^6%nR4X~iaLaZflAh3O{>h6tth8ONGIJlDm;o+%<==B56UqPEiDGr zpJ~N8VsBFg+*F#rm~I{}TM_AlxEL`R(;sa>0CV0>TPfDsEh!*1U5cXhyUDP9B$R=I z6bUe85h9p4YNp=dv6THL^Kr56uhLqJEj`332}-a)2PSLQ?I{#eIVf%bgXsg&XPa3? z+DGQ4Pk8pOhb_e$)+n~S2ar;x!3gEJGk!wrTt(LU zi3O^Oj-f@t) zf{dUGb!PaXYXfNwb9$BD)TK2CVj?>|P$_gj#s=;5E#6I<82ddIoEy`uy zprk0FyohUS)TNyMXhNz%#}Lk~$rtHTN#K!4!>Mz_TuJy!xW5Iu5 zTVA-g!)`94&PAtEYy)1s;G4TaaHtw8Z&Y|Q#Q3&{z#x8F`NS@`5ami!UxbfyRV4u` z$^I}V{VD_#2;7ebSr^5%@@ym;QnZNf?zuWWsrpE_u9HEXekvL66f z(?)xV;94%!G?Gtg6t`-kIe{H){{W?MJyVa2pHMrCE{58z9b|lI8is9sMJLe&Pdj*m z-!xG5i0pL+R^x?ciV%r|7$K8t*3}MkZNE)Jw31^`X*gQck`DC5fkoOMT~Mwh7~9v- z5k#m|Z&ML%6x$q3Wg#g7M?NQs+cd@lSys)5`J!Nt~nLyN6 z=L||*T4>?;MNO!sR8aQ!tW{eoD~yB&GMKhtHjyr%IWS8tr~ylnRqo4I(Z5{Hl065mo5w()w3 z(L#sIFsOYB9@R<;?zt$rT=%UEU1h7O2nUf`Peo=-{EQ!xZu~=Y^#w3s)ZnHL(ii)) zUY8<~UePl3mXng-(NdkBM{xN_DUHBql)Awv1tf)J97^)MLcmd~UHL^e+Vz{CnZlFU zrc|GlZlnA;SsS8WBdA)74RZ3?2b*m?v?X=@p;*M2(yrXF)R?%nT9UTPY7zY;f-}TucM{H@p7;8)ipaaTGcmmzD z-9ELnlKLAw7fhsWI@1%Tj&mOnAABQCnU{a?*_PNyN)d+80#Z8xv}qZId{I;;kYLv! z`A;K)by*{mlK2ePKAod#k-STDe{F1nr=3Cv`;3uXq;LW}fK)07?;&6D6{SCxwXAna zaR%p!Y=cDq05GV2(kU!Q%l8Lf1rumzPT7Mh#DZtUw(FrSyH6@YzpvS)Jd%Zf`59t9 zSGgzUK-w8nO*esdv@#jb5CsqAHrV*YPxy)28Uzo3mSN==c;SO^XUHd{8LynK{{Vb- z!Ike5J*h2Z(ZzjZf7)&L3XIQyZ6#AH{{S_WhP4OMjv?g%xXeHIH~#?hPtZ*-Dztcn zy++WLQV|M(PIu`HjjK6@w}nCtMhtVVsg}ypj(m4a6KWN~hE8f@DW3@m5tL^hLk%lX z)t_?oTrETt91kwiP5WC-O_1Y_g*LR*W2{}O=xyGgQLZU+xk=ey=^!nx)uXzrTYytj zPAci}o&CM>vrt}is-05gdTJWKgx@818gptW1fDXg=dEnA9102tAoQKRI)iMoqJRo} z30c(a>~#kemm3LE@)hST93ImaU}dA}`m)fV3cgaqXQ`pj&4b=Sz2U2qc($zvGy6q% ziSBJL^v6OkSaGF)xg=HymJWqz#D0WK!94cCkF#F7581iJ#I3RqO^n1`q<}zCS8}OrMI8mVk`{_?d&r$bPPFw2 zVI!8rRzZmDFvp9fwNih2Xq@dmajHHzAqz^Yz9293#Wc`$qsb!}=_7d`-M_*PFy_G3 z$aE=uh*`}BD-3Rrw}SkR05ZCpjuZhS>m1w5QT|~BR~|+~n=?A1njBX}q>KZftXPdj zwWfixnw`PKsoFSDr9I8Dz|-D$uVEM8URCgpC@U!hkas>_QgT>rLhY3}3RVS0Fsy^+ z3?6K$KsZyJXQd@F+WiSt18L-}6%!WzBozV)NFTSS#!n*bHwIb(Gy`G`1iDK}nX0DXFfnDkd@{7Doc(B`PqK^P-H?1LZ$Z#69jboL?;VDHyIHa`bI!YPS z0^atmUBziD`Xf$U-l06IE7o0|xfZGkanz+0+u;H_%T$Te3JZ-Pha2{VB%di3{)*yi zSXnA0l?I*wI1<6Ka6tZ5M_0z+MKx9yL;BvZ7+ULBNa zB?{QIc}RKHyt1qnCjfVueQLs}Lq??ZBQa8}CMKj!-Fn4s+!|7*AbU%6B}-{Sn}J-w zha6=*T|$LA#mWRG4qFAS$EUf9+qfL7-c_2sp~;HcyCjG@yDhaEiknCqh&$`EaDYjW zLgxae96!xI*?}R)R%NS#+esp{>lL?tY7(P^A&|N?0;lSsLrOyu(Hvp2sZFSY2(MV; zrkWTvCRYXD9=k!msnZp#*>_CK_a#apIHVDMfAVBE_aJtS8jmGXxbFnA3p%@{P*ld7 zn$t9pPG0-B5K6x5{$#P1aqE>=5RBaM0F#+rI)`%x=AlABGhxKGhi`(2_iY$;8mEnD zB~e$zo#PInxUOWemfEYd@EOd{#}EJpRMUP*%CQQI;8lY&Et$)uFWgo{8nrc}1lCvF zy&&%fyP&EbLPo5%rZq(nXuS4`?Jm|Y)J_DhF?3S8Al8v}z1dMJUJSxVIA;SHY^%Ib zT^cm+9xgej+~$5Vu&cw!fN2}}lV8tBMo9e|TX(G6kZV;!xvd8iKqw_OH^0o{qgeBJ zoY2YUaig#^t7sREDR{3gre($Ywm#wUm4sdHLa1XuxF{S~r1IB-6?qT#fl-v?F0~i)KTi@;Q5d#MPGBuO)(IbNiJC5x+<^UUNK@Ng_w6 z&lbpD3#dZEQw-DXhPd(-l|RN*2F77*?&tlR;*sy;AYx>VsI!|;{EehI?k zSAUR3;!mhp;@Q1)1=N6G9(A?l1cM=4)P2=3ioa)=I1+tQ#~d>D)mQ)%6(FsZ4mmOz ztM<^KQa}p`wIEf5F6!iHopC!Nyv%9LJ`9^H*K- zHMLi!dky3&yhD3tqJ^%cZOBA+zQv9!q)V&&i3C)hu`=7zW28btL};&j#P_cr9y2{ELV42)xb+o0V`V205#mH^o)1(lW~|mxxd1Adfij#V`7zD}D~#wue>0Cv#a~{@thl0O!c$ z!5}xVaC*WvaYzKK5QsUf@`N|Ssj?|k6d_flNR?nyXjCq}U?qiONHI34rrT<4@VRXz zKzmnAq|HN=HR%)~VwH}Ch6j{bdDZI|x?Ac+(@OOEEM+Pm7@cZM-sY4AIvLaylsef% zsY=^c=}@RLt*Q7m3+DEk@k@l)(q7*HXJ(D$EYeyZvr^5d?hQEV2Tr_c@|DyY)C$gt zrfV86ifv7nqSI?tKP!TV;*%&^mYt~EAg1oka+?t)0dpHDnUGk zg&5cA{6k4I-YxJQ=AC@|+Dj{b$a|8cny3#kysIVW&{CDvB{((2=$aRdUrNHNTu2n+ zqb$0fk)rs%#kC-}ZFTvI+XI)tjyrec%20^GWf$g?9>)U)c03 z`u-$8YU+j*(FGv?0K#Q@+f)c@goLlC5p}irQn$x=MCY_aGQYKq-6Nivt+b#<67wV< zs3t|;eXH>k0Y!w{T%|c4lftLq4J56epyO0iE|i}mEZSd-Uu1E*9-@2oh@5VYwUB>R zfW!FW@+6hBGy-kahJOP&dB?kiXA+Dbib zX?)!-ZSC$7fAbqkzlfD(zLjSdLknX>Ecr|FgKHr})CZ2o5UyO;@{vu)5lT;^H6H+Y zYWypfnu~Rx-)^FV^vL}sM^*bg!s@LvQ&Kx3;ky3-{{Tt<07%$xsh4LTtEID;=;h}6 z0cq>xp=PL1JZs(?TUyZdR#i$;O26PuZ$!Ng+%Oex(C6zku1GzFdVJ)5vcFM45yev6 zWF#^ULs-U8IFNnege`Xk)FoU7dr7(c{l%$~si3ceo zXoOvsTqr|}N-OUPB8HnqPF*znjv<68EgAux=5r|132~O3ASo(HCZea{BD-sgPwp)P zgz+MWIrHr+$+&q01h{x7+@r>`$ht#rmqL`MI;{E0&WtvzzfGb&C8a7mazCsRl!r$W zP@+}dys`R9mHX~E;dM?GD~&182un+aB?)O~l7DbXrG9gAa-#JX>seb0SWili%^VWz zZ6RDp3fjG3pHdAyB%}e@){*zOt~!(;kOF$7>^pf#AQZBZFRz~kCW^0FFJPdA`>Jao z81+Jdbqc9GK|N2#OWWH#vITJ!A%x?rD&@)&gF+-V<>Fd3<(QXQQ}(p2c=wQ34=MMQ zQl%vW0 z=eUd-#Eta)LP%*UNjd)jTF120%0kqpJu%S#08o>}J1t$^3gI;=3Q!p)0gXB8 zkf2g_PsUm?MS5zXR!FU4HrrEfEVxG_Py$RDL}NxlRypBqHMTjc#1_>8rm0ZPBt?#d z=Am+?>~0xx2>k0>!UAjYF;i&u9pGtEnsqQQSh5k#L7-9;ZONOAv8-=9ivA0jXeRPC`6onpx z9|0wtLrhyGziOOw1vJWOO}|*&B10A~NHrkmyn1eGMK_&V)4+C*_1x=zK5~EDYCi51 z{a#7`Ld`OMR1cpnSwH$J6!vne-2V4>mVOxtRC`VQP^Bf3^X=xQ*d?X5;p`17 z5If*~b-asJFa8n?F}tMy01#u*ndmV;i8~46_z4`hhkwJGy9eK5_@_{UWP8?EjsF1L zVbuImV?~gcM1E{~HVt^6$yP26FkxG|RcI9<$#E45N%}`2YYF5Pw@7Np$8CkX#UZm* zSK&OJNP|k51}?p{B<2V{LEcLZje3%f0orPB)lJEj{{X}jLJV+xgIfHib7N}oR1#`o z?r%ehpaW@HP0v#bF9|fPoR?u#9OCKZGXUb~x~IGgk8-M_R$e}$xg1FPxt+MxoKp!( zh7;CDJ9dZGl?}%5E;^O6q1Gd9Xh10&nV12Pa^q~~v5wvz9^ai}RDb~|CMH-Ungf{_ zWEAfoRRu?QCLdA|q!WWY66q8OSsp?eI%VU46tJpyGE9K&*d;=>6tCJQp-SaaMl%<$ zN4*KJrarJM(l5WDePnZq@pcQSbq=&tR5>T47voj`048|o*Q54h$j1KwYrFoLxes~_VI$}h-12whn8vOiX#0YNVT0lj*TuRAig@r*uauqAJX3jP#VTK_-(_$0ociAV zM+!NM8q`uqO)?}%35-l-!%m*rrFg2!^d%}+q~YkV^_B!Um5QX+a3(H+1B&Qm?w#Tb z+Y+Bei3#|lebJd1RomRDHqNwy z52!fSL0vkgmbTWC90&7k24b5B3S3XPWc7=zyghs34Pi`a=}F{yt!gw%6Wq&YLNUy` zYKWN}2D%nKM3)W;_b6`;^Ubt`BHdiZ>mU)Ca)0ekx{H8@ow0GUE9&~CARg4EWc{Do zyEg5U`1|+VxHKvZqy!HkT>RyEZz+zvvbXT_@zLca@=-!YO$elGYWHy!!Rb2d-)r=R zB!=$qTT$4aDg*S09Q#z?yVBK{O~*Df^Pz$_)Sn--9*KFXSIH_0J$jhbFVkNkL-Ci_ zKGy0;1hJ@Dul_Dc{{RsK-)_7>g($ad!^!^uW9iS_K~RCxJAW{+h_gksDFsTWDi7sVG~sSiZ8}K zyLOp$rATdMVN}g!pF+P2ZzLpv^_4{-#*|W|sW>=Lq!1T>) z`id?G4mILvaVyCba1{bUB9xlq*0uY9&SOv#05!<|JtU0=7$+wwR9jP(JOYJB5Hln# zjT=gu8K)9yTA31x*B~p%_KHJ@NC${Yy3=VaD;IE3;Np;zPjT3*y=1Ms%W2*T33UVW zB&viS)e;FV2L@H{^Pq}KlD4Xn5T?acO1B#dO_mwdlsXi)ihw65CXr3EgP9Kmr5!?d z_=78LUL>|nR8?M|^_q*!lDd@8`PZ?kjll#t>Xj_0)g=2&o=(Fo1zt&IlgFxt^!UOoAd0-= zFmjsgeiA*~lj$odQfW#f1b?g(cL;62=cQ%JV1fXrdASE9b(86aklhgC=t)$Kx?wlB z?j;zuXWBDLtI9q5^mBFOBrF8bE0$|b=^bQ-QKqF_k@$h`RY!c*Y~`N>EHcYlf_-%! zE#!gI{{Tp9do`_VxJXgtc~EWfk=GXvttg;Nj=Jiq0HNtaiD9>U`6z4^HsDS{6{OB3 zkh9h`8#Fc>x^{pO?o~(7$vb}+U$nIP#ivj+l+%~eKs4f=LXxzgq^B9pOe;35;Y)EL z%4`i!!YX@eZ26);Cj*A!&y860!k@KTNBdL^l(F$Hn{tG!*9{Zt27AL}IS zd_#Y1QkL%=S3;E<{{R_UUQ>^jUz%d$;vTd!8bC9jwc{)1(gT5~2;8YO{t;q4cE~C9 ztqp6QE7*6;M7+A__-FK3E{Sd`8J<8ABHzSXZOXl`a5S&HQb=1}+uV*!JcW($VrNB> z?j<28lcJ~r*g~ZVt!N4 zclUmq{<8O$$cuz?p#`bCCx)fw>akA(K_HFt4J5CJye$5<K8IOJ+z6fU3Mg|~#D|+%)POCCRbSLUI@~EiRN_S; ztgY@}%PhFM_DyGMxzRM|`SY}7mHuKALSma68*4TLR?Q`(4vF9EEKALzBcyd#>BM$k zM9+scm;V4Qo2dt?g+Gi|*MfCID6rBA-;%`ZWeDmjU|b+aGFezQH5yti2~u9U!1QfuFk5O&8!Gk zCWU8s7)vUI9N^+8Lg`FIXjC#)1cZX8l}#go#7vb!1wbLiP?Zsp6*BK0zZifjf;}!% ztbve$W*T;&W&>NYI+m90vQ!eK5K>On5DYnpxeiz3EmdKRgolHJN$^L8?rgP}u5Z~W zERHP|btkBu1TfdT`EC2R_Kd-$RNfdW9k!Xs$#f6?T}o1r02BkDn4!26#LokmtdXlc zM@6h@UKMSAB?+ZMQ}gR2wGRvE`hp04&9I~UkT{>xOr*y{7SBAgum=q4@1HiD-V5|O!4ppB09&~?>= zU1#Qx_7W)bv|Cn)rA z?sD)f70-gaI{B)!#@j#t0I6$7`H^>DZFCoiEq*bN_*@DfsFyM4905ZA598SDoPec#YqOASf21% z+S@$x?Jd<(IaL5wzH_m*^8<8*4`ruqMgYq%&kkrhfJ=^++foyi5U~+CZF0g8w^(r~ zQ8X$}55jdlSNna#PksOvo+lRSAcZTX4?!qiCAn48*7l3INKL&{KzAo|I*}*ER1YDR z3@GBG>LEE-YX1QCllnf86xed%wR%8dM9{0?Cq(cchb=W5vhCfI4qGrkD$ocgp!15i za~icNh~`2s8ba5|(0`b4>W091j+5y{_zS}~N+o(rNK&^gDM+WoG>M%1JK@`sqRW@I zO+)6NmAwIymPDm4cL z^`xEEe%|<-P6byQRo4N!ke*}eD=V*9Tw6Fr%MLcNnk^(!G!ZREsF;!1PMf|Ua#2a@ zO7LSYFHfehwIyJUq7oE6#1Z8Nweka~u4^S0O8)24ZM%9PkbqQaLKJfhn}+`Y4OW72 zP4^NZ^>bKRSHE-fnwJ1UAaPWjxm{y)wOy@klpurK&P=%C-cnWSo%2alW#Wg5g*F2t ztX_-ikO3gmVK!XY67xzS4>}T{DhU+*VNq}q#clhOK~qUyRmzk=DoVvGRVOf?j3EQu zF^T~vE^JNRtSu^O+ETUTt*hQBX>7czo1~@Ub3?civM$0^`BGA@`@=Hh30ZJ^RZ8q| zX5_{jDYtE>3euwD4@AMCl(v9ea3vX64m36IBP?}Pf|QjcDI+|wLtdU#i`=_mPd6^Gj#aQd7kAQHix?(Cw1b zXpo2h0Ql5SY1CJsgi8v`RJT-+m8D7jw9m#XUZT4Np=Roea)h9#Zor<=7MXH{+BDnb zmqI{ZYHJf}{*sNeic_SdaP-NqA-IrELz(v9a`3xyi^tC_67S)+_q-6Pz=De`vKOo3#+5fnB@rC0Ow*?6!SnA@vP{ zfJyp^Lf4sR!urHEpSjCzXSSA)qW7KOj#w400<}-|W8J<=q%Q!{HGblSpnAtp>q7P@hRLh)` zB7yUSLdteB;f_`_338YwXmA4}gT|vUp1nH2Fk~{#taOFvNf6b+tprqui5QA8D~2%0 z1$Tu?u@DD)n4za4$Z=Klo&<#o#s$|g+=tEzBr2OCgSwuK-|9}`A*O4EVTl)RI0>rSJI zI7vUcLB0cT5(h4z3pHHmH z?}$7vrfW^B@eBk#(bmNjKh|5X%yFfI`L*oZ!dk~e_ITx=` zWy4O??eCC1H2}V;JI*s>ser0DM|nSKdI?EwbSKYfyY}_oJ}nQs5s{BiSEk*g&Sf)7 z@hX|%)zw^2^$o3U8*EUuZ59v5tt(BDP*!OMMWM!gNCm@cHYK1#Ns!&crX&B7S z{HC7Kw4l!OAVTsg1wTmoL8Kp~B1cmohCqCs@NogDS*K9b-M3P>6=f%~hS5P8#PB(- zAyqk7AvpFJltCCTAJ&k&D~B24Q1uE_qrb`{(6pN`T^BC5>Nt`K3KglW>e}vuWvw87 zAtkrR<#hu;0y@ulcf(eiKvI@da^j8(k%aua&gku&8rJG?XATSfxR-L)R~Q_0qp<*up0=WoYHdd+{)wZ7ecthuGtHI zl48){RzzD7B^eaPBH^OK$t6@wYpW)-q#8*n8R;;b%K)n#tWy5IQa1UPE)b;Lu+zys z96(p`iyc-x;y1RNkq04TPuBbk;oVIDIj1*npliJF+SbdU)ZG{^#2uXSul_>i1I2Snhv#GSwt{FnjiGY$NQ z%@uqiUz$qFKPbrkBSWQ16|XAeG@nM@Xu4JAF0|V>e9J%|sHB6w`*-2nu%e51tyFd_ zx@bO1tZaP3v-1KO^oN0Xb8nPBm8z=%xGaQ_L%xQat;7<(OYw{!)ReL5XGbwQ!Xvm2ox7NU4kMo<+(6 zIj9;0JjqJT-#SABlDz>bvwbK)gdjU073~M9gSwon>sJp1gQfl86$HNUFr@x z-v)(Srg?5Z=e&bAAUYN(uXT3ctUK4mmx*oFw7rj{x*B|Mx^cfO3IyBSXpqTL-ztl)*Jhc!YZXIr@c0qP1tQpZ403^1a|&0ml|^_ zB~@RjDf5t)I?+Wr2OxveX$a3r09eB+-n<=G6$E2^Qe&5v?kK3KNbU|~GpGWGh$ISp3`cU} zkm5=aRVx6*9j!hQ{Fx2Cmm5-juB6kYX$X=P`A9zlSxdHZn7I}mu3RVn*(io(X1_1^hR|2r8(qM60 z82%vcAk-*v3`jDS4jS(jwC+6Qc*Id}TI4~N6N&Iwp~7iO#diFSB5QPlL5rId01cv! z8PzgtOm8-(cx@h>nwX+MXSK;vhr%dr!YKlgUXkDsC}3ne!I5Fgh^Y=zMY66jw|cFe zi%VV2!V(ZFMQX30jfmx-48~a0vuSX5nC;U{q^ai++CZr)G?XWNVymZK8hU*;5k!Tp zKINY-!jiwK>P|lLmio$;qk^e^oq>?d&JmvL8bmhTd&O=$RmBm)+EU0Yt717Sazi} zs47k{Mr3MrN6_#p9=kN->Fx8!S>?X9q@Vz2^^3OATyk9s%+3P;0JmNaPNoK@thBV-g#yzisr3{MYO0UR{AX9Qx3{unGib|9 zG&8}pgo?~A5_6M1&T((DcAS@^03bMpM=v?zs1H(Ma#t`|3RM`$BJ6Lf3=!r^mE` zYW3Du5(xx%pGByoiW(4i5~1Qx18MrGQ`V^#*GDx^ zKXK)i+pT&Zvgll6+tCVhSku-*Y5pN)@(}$SSAK>}rNp=@g#`oDPA%J8Y5BuqGmN@i zn*6)Mg94K_rm+cujZ=g5o;jo#R&hL~VnB|rkY6V?kFSqjVII zBT=}_d$~Ud#DGkRA_l3D0E8XjhQfwza{~)8grxQcLiob9h5$4`0Ga4!U(O$s#Tu7Yzb-9i0P^*N{jA5XW3?F0S3QtsDnD-SM!Rb=s?Yff9C zwgE>KG-?Wott;FZf#7Xk2vH$mP$?%r`bpcRHiVFhC$Z`9fzdoWf8q5C%$t6C;4vcr8~Rq7Xuf;yCm%QnXE3U?0F;lCN+frDxA++`KR0do2x; zKuyKc_?0@e3=#c3g?jHSC2H!WePtUrf+rCfYzkwIOY=M0PNdRQr)+KzI+ZjkU*Hq4!Yf;!pXJ zcRm@`7*X|f>y+21L09mEF0Nfjer$R+dnpCtfH)rt!lv-?6{s6fh>`0nhUy++)GN&d zK`BZL{lF2ij07H)n333I6L?4gv5wH;)e=;P6qRmsUzCRnBDo#1A(?$mIF*G1PL?23C^z3P^J)8&VxNfhelfX->wXXEroyfo~Nn9ENkWJGZDnNl2=c za!JIiHGay9!csX?7~e5ME{c$Go~c&Sa$L^4bL$~0YYFNG;QV2K45c;1EOQ2+{{XCm z7rX#cQUIoL4sXbCp(GRlGhB#VoXUD!KozQ~8c-5Ks%uOhu>*HxBZ+Vv?4!IoZ;}8( z;y@D#Fu6s(by`6i8gKD{Rl6jT6lw5`df@?c`FB-ruTp7@^2Bf3fh{