From 10dcbacd324aae29f098a2ea614f7ae7a3e393e7 Mon Sep 17 00:00:00 2001 From: Wannaphong Phatthiyaphaibun Date: Sun, 30 Jul 2023 18:59:44 +0700 Subject: [PATCH 1/2] =?UTF-8?q?Add=20=F0=9F=AA=BF=20Han-solo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ðŸŠŋ Han-solo: Thai syllable segmenter This work wants to create a Thai syllable segmenter that can work in the Thai social media domain. GitHub: https://github.com/PyThaiNLP/Han-solo --- pythainlp/corpus/han_solo.crfsuite | Bin 0 -> 242932 bytes pythainlp/tokenize/core.py | 11 ++- pythainlp/tokenize/han_solo.py | 140 +++++++++++++++++++++++++++++ tests/test_tokenize.py | 10 +++ 4 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 pythainlp/corpus/han_solo.crfsuite create mode 100644 pythainlp/tokenize/han_solo.py diff --git a/pythainlp/corpus/han_solo.crfsuite b/pythainlp/corpus/han_solo.crfsuite new file mode 100644 index 0000000000000000000000000000000000000000..98fe82ee72a6df9900d54c3fd7fb48596ee346e2 GIT binary patch literal 242932 zcmYJ+1z1$=y2kObTkOV81Y2wwySuOp3j-6oyRfl8u~88f3k<|YQAAX1MU)ooMDeWq zexAL~x~{{X`SE|=cf^S`gL|Jb&APVydMcfzWv33!Tr6^=HU49JR*R*Y@t^Y+rm;L+ znZ`0LPdbZ_@qaB_H0j>iu>N^9*8kZ3d|s!_sb#IWnnvw);Ute^8Ka#3XYlq#XqRBv z2gjRCzk+LpK4J$$mo68LT{=X@vH0`r-h-z9V+TVwc~c~eU3x^uakSR5t~M9$vxA}Y zcA&A#fXF!3czzz0_Ej`H7`m|=Y3wp0G7kGwIo^8KylWb|gfTSEW@2Tr^t)6j%q{e? zY3OQpqH#8}cEjS`?LAh6nTD=i2#vE@jO(yw_cpBEy1Bg7xM(r{I(S@r{3=iIzesj4 zbZLEQTrZnsmd;)?TpQ<$VFyF^X%CHEcI~qK8}3pn*@qnr-OxWYb~&_rl3aiLQV;o= z!qENmqp{1WT^}!>xYIE)rlBjgjmAA}v>W@dTizk_jZBncAE+f(vw;ES11@Of2cv zb}-(S^E9qkkd?)fJ*oEgbOoQVgP}X|rVflC!E|Wg5EW%W0e~s$H6Q$1iRe_Jth`-LwcAyJFf6UFb3N z?VDSsp*uZ|##vkK9!K;FZu@b$Y3Q=KO@eW@xOT_Gu2k4^Ig%ZW-DMiP651_#(>U^3 zRJ>{E=8JK*q;@m14r+FL;9GVubaTYmmD29Cug!;(UZ2^)&>a$ES6aKQKgT_{z5dcP zbnjDWoGqhWY_U>ZCRhGs8oFRH&X(2gVWx*!XFOcX4u-Bon=deS<+Mxu5prUh3k6K={gQ2SsNn=+*yXD2_tQl@E&wnsebQSD&J*~eREXR#Vr zEtT-aIMT+K{_$dQ1UndJtHsf{haDp0n2_xVPrt(6&a^m44qv88oOHB zy}$d${gb2oIbi4le4}C9qqcUA2MY(ae0It-bU!E4xSpeSuMRKiP%h0Qb})1gj?mcE z(QfX9qCQK?Jv0qn&@vil>uQ&2RFTO)Tl{7RL-(H;yL#HyahevqFUvZ1Fm#{WPld6o zubt=0okx>C$ZIzYowpdf2HI7aaQf@iFnNxJq1!Z>#;&1ulf0HzeOgoQ&oFdO|Iyer z($2Qt(?LUv%X2Xd-3uogyT;lTyT7H(^_z2?a219wWz0wzJAT8kPPT8m_*DqzReV90 zT7t&TYFx*$yt~7T?a8U^tj2Y8Y5LRHH8HN^NW1RS$Ci#a*ul_!SxRHq6p?Y%D3!x_ zRhGvQ3|+lSG%PZQtl>a8pKM`V$5AD5)6|QL z`mlqct2)pH#`RhvGLCu;ERAWLZN|#Crx4pLpN%042)eD?H-RR`1IJ@aCR_sX?dEUH4BhD(xnS(NYq#WJv5_e@LrgThhXS(i*dI9|GKLu3uQZg*)((wuF<&O0PSWT=p6cN{zuc$xr=djpmtL` zZ1K1_;{!Vwy38GE>;|cI^a?3jJB_@L8f+Mj)D}&56zuz+voOrI=}hD75JbkYvw7Fx z@n=KX!O)HALSr`+k#WR$jK4A{P~KO-(A{vPan=Qqaa<|1y553ONv5I8T$sl7hOsi< zn~smF;uwE{9SmJv`?oN5!?jzU^m>$Ci4*K#=w9V}2V*xvyZpa9r%j*P5`?QTbUFUg ztj0ylNPIDlfvwh-nmPX?XJP2}i*b)ph>Rm=uTWRJ5>f16=n^~8*tsGyj$50Hj5$$9 z&e37$zPZrYjYeb~Yu^V9`c+Y0S7GS#_|Uk=7(~Y5<@;=52@iQM1VcA{;&T|gv51Ug z>%OJF_xJ7Q9x!yz$I;l0Lu4EmPNo@kVwRjI!q5eup|NvAWE|CcE*(Cm@fFk1{q8{H z9^+YAEG?T|w~tF3Vj8;EO=+B+pxuoJjqk;#ePtTD2r?G}S47F*!d)ym#Fm(PqY3wFz_w3QZ;7y0pT5%PIuE}9qka5v61z(Kg+x~sGs&#crC9K9(%W`}%j-Ril&s#M16FV4Y4@T0s#|lKo5u9d79>|p3JAKD9Jw+fMQ6l~)9H(#W@&x4^0o=s!78j*1fw;Nuz%Vas{ zf}tBH#yvdL{w1%hpE*+uZH-|#E`Oht_&txD@4_&9=M#K+9iB{J-!%+=YtXx_9V-DIvBdlu{3rY5E+Np zs@vyWZR1Tt*J?G5du%kW!(QDzZS7v9oYlB!*@Q2~Vc)#nyc(xZvV);(-ipTcJP{ek z^gsOv|DFGb9SmJ+GL7A4M8;8|+^>OguJZGPq5CYxZVMvgc$Tu-<8Sq3)6o5nq;Zd} z#&y`k_K9`A&63-^&A5)^MX~!$Z~m6&D;Tan{SY4r}Vss_f7w#jM6f%Wixzjys2)n_r1Kz*!i&BA;oT z-Gj(DdcE}kT>@i27xN7C5sRePS}%=z+DYc0VHH zh&=xw*UkUr9217Fcp#140Yt{(vH16t*E4@O;W7+e&P6nK2k{N#IJGosPQyb}*}>3l zpY#F7&Kr?&EPOJ0K$*hf>|p4kAJfMW&;%JEB%%QzrMiSaV|Pru-Y#`L#!i%TJs7&KVw^p$-B+i~m+jhIG!5Od zf;6soLc1w7#>Q{Wl*$f`BWUab z)b{x<-a4yeajS9Fat>dNzv2aVlD?L6M+IA8aPJoaJerX#)f+w|59AQqpQ%v;^aeaYWp$*Q!evdESMgyOFj&jI*~88An{*BkyM)mHR0S z-I_WycDE53$MD7tE|?s0G3xNDq+ zVK%Fk#@V}wjHA_zdPT;Sh%*h{&zUsNhO)9)el?jHnf6yCI~cm>4m5W6wCfq}w7iaw zoFBl@xjdk8HcUImg%kaD7YpVrjNK3#yZhQTy&3Q$zWG;nFm%y3XzaqZJMJAk^3w-7 zFNUF8eSpT<2ilD)vc1}s&W|_?LpQt_jom}-Ru0U5t-8L3!qBZ6Oyle$?OgAK`q%4| z%vl(^5n}8jw7dHG;N0WeZkUFy;YM#5XCG@9v9fo-@450>9}L~oku-Ksw99&QvsaJN z^8OcwZv8bH_jsyZt7`q@wx4)w8oCQLX4|u5~{eXJ2TyWz@`szd`aE1w;2?1dX#VwQKm|`u+Ab^v-gxX zTjX&LLsx7Ijr+dVZdvyI7eeFZ{s%+%FdL0sq;@I&JTCeVjd#LT7`p0W?A{pHaXfJ^ z+V4_(IUj|(Ub)9UJ;%RNFb;VKMWPZt`ySbW1c z9*kU8X3SVQ_kp2XD8|`1M8>iHdfy}4n#gk#4Bh=}G&yw8?xye%+vxvJ9GeL-X#WluJ|_v_t0b})3a_S4vXMPwY+`{i1+e}Mcx3WhF| z7-zpBGLF!39>F{I%WEDC-4ijc_Z^XOG$|4Bqf3d?oQ0v=R+7f<2O{HGnjz1j5_#lv zU>Ld~S!wKkA~KHdA-m7+pDfRlFmx;D(YVJiM8>f?AinX#iSk|&hHk4E*ZYmgIIfLq zJ0qmRJ=4&&8bRZFDXc7(V+H;@)_S-6o&<*Okr=x_+I60^zvPfc^11*+H&Bdw{M9av zwO%{NMEM*YhR*m!G>l!Uc8dejtbH>)jTKj6=mO5rf{crnfB0e?g+4W1((BNB-WC|T zk>6-sk6_rDG)r?;uPm<%FmylC(m0z2U>qswGyG{VIl(k=+YB_WmsY!4u{ZPI8@0tW zaQb8#XVYm{CL;R!u0B86!N9#^Y3$N#H$SKCpD3GW>|o#@8EEV>XqR)r#sAX#%jXs_ zcJpbR&8S`6iGwp;M#y^{7`TVMH;i2-?H)9p{4hRn5BGq9+jgR{%dDN}(~FB<-`~m( z1}=A=#x9F?ZlSYJ7Rx8+_b{++7>!+4?YvJPSdc$V-Z#R)DJN;{vT2t!?7;d0HgcO` z;B9MZye-+aTOIs)TI;xTrh!A>(zsp@ojvD&pm)2gaxR)vXDd9)xBFfe`Me1R_I*g> zdN$hC*mk5~apxe@z>)?JDOUoc71;Y*ypj78rP`4J`lkk?um z_^=q)%cEW5u2<#$^pJA~82I%`8gENpwJQDct*VnphmnlSKR zG0qm!?#%h=J~u{p<17r^W#kMPyTaP#%HUe-jO}}NFz_@Bja?D#o;_|qXVV6Mb}(@N zK{R$nwVUqiy0i7sH>QE(Ceb)sOgroOh&~^8`I-jy2%>S;R=f0@AOT82GRl*Q==A^9vhWxexwf8aPgjx37}UR`^`M$f2B%X?8m6oH{Qs z{KPuW!oUu8^I_~NYq#jo;(VWzFPjD)zK_OPd+o;Taax!`Kf8v3_mrivbI`70k&>I1 z%!x4#T)QlddsNYG&iJSm-izhEBn-S~0*$j(wJY<`En{GM`HT?;b`j%x)wHYLVc@s( zf4`UpE-uFPs%vMHYi_}OGo#qSz&&he>}qKDrRnEa)%~K`!NC4?Y3yohXS1TDTiTZw z*ulUKqf5Zp)zU6yz^n{ui^^w4FmUJ~8oS!sb?UnQP?-Vp*oT1w2hi9#YG=DP)ajGG zye`1NnVZviTk2?6sKu{w=PoYhEDU_37mZzA?Rrn}FCEe>k{t}(MvPrOwO-z1USIDk zKj->7TcKO`lH+6K{VEK+!kNa|2HMTplXN_^uD5C6Rt_}o+fcjsz`Yw=HJ1Aj3|!$F zjkArkv)&$fGE?_N)7Xh|y~f(zblntkb;onlz@tafIP0Wc?vafW0w>7d8w~u+na0kl z-OV3;L+90y#|#V{^q0mxnrL@w%s7uMH!qt8J~Nue^_pro#PM(K@G4VH1MeL{<7_kS zhDF=Bw!9wBrYw03Hb^A%kA?9E~B0Rt~gOJmnwJKK2ML4SQy zO#|DDakhhYX&qXhbSwCX9SnTCGL2nF?b4hr{P|YC5A0yzn`db3I%&7}$krs+>vAp% z16MgjW7k=`!Xw=5_x+RKdBMPYo6xvN7wxLw+tbdiY?x`_W`}89ud8;qCsZsq{O|+Q zzz4)Q+fBPc4e}oPyeQT*aL1-J&UV*sXBT(Ju=?_Ifq|civFo9oy~jVN@WJwY3IiWn zLu1!dJEu_l4ZT*U4>G=OfsrrMtgv3%U0e3@S@qM;c>7@Byz6OP&slAMn8P5K4RYSu zTW5PU^55c{^C@Rx;Db&y&i2vn;nlFwr4IH|I#@W8w+0Ax8GUbK*UK|EK*>oz5 zv;DNIa`xqh%$M$P76$(L^*M}Pf9;-mo*QoeTJFy<@SCIn7`p-5Wr(W#rsB6a)4-)W z*Mo77f!Z}(k+-!?N%>p_26p;D(Uv?WX1`KhnBU9=|Z~ zZyOqChiEr(>xIrAXUJJw@1aCvM&t0 zunCRbFzp&9`M(%{c9Ut~p`kSHF|nXjixX`aBy?$onH0xNuJzyRq6`TU%{J@Xk=vz^BI3 zxW_o{=GEV@w5gvbI~dq6d_9bvn|Ah3rZ#_GUfzeoz%Q!P*p1gNb=;Z>HQ&fN2n>8x zjNJt7YL`DXxuTu?Twvfgg=xGk6SZ4a`t;c;8Ra<<2HsPW#%_{!IZMx5@0RHy_ke+S zl%TPjtlhu{&)X-KlJ_4l@Xfw7&Q8&;*YG{5ng7+}EDT)!F^!$OcJ2>5$GrHKU>bPr zeHv${Y8O*{NA}c}pG^Z#E>Gj^H0?HB>=)}YLp}q5fxTjBoSm-S#L*l34Rwn(4P0d+ zjqA|o%{ z_i5~AYd3F{?fCyLEH@2&dM=H#b9B~o*@cF;n#uXlT%8?!yKZ2Eq(_{EfuruwI6F_f zYAdr>4iAcF2LpSFv74`5r1yq4_5R53aA9EIqcnC4w0nK@%|@?T@;eb2*!3`tdo0xM z)eZZuP6gyX4g&|?q;b7P+Bu&LJ2)&r&a+|Q*1j~Zw^+MHBiH>ZwqIUXVc=myY3!D0 zm-*_Z66G4pa}Esr?Fx^E8#%`H*N6$t?CoZ|k4hGJ3hQ@BW zb|tp$N@G7){yt#f%7HX?E41r0=sq29 zz2m+x@KsAL7&}kx3VdDO-*$z3Ru2Qme4%l6vvwC2%=)#y^)=JLfnr>5i*~;Ir_XOx zPM#BC;2UD>wrc0y_r~vv@8!=61E20qW4BGa58vx{oKQsmyfCn{7`yFiAv+SYTzD+^ zgB?2i&3W=TcfSWt#)t(5p3sNJ*`5FEst)a8|K>V782C~V8oU3ryEuN;l!YfE*ulVg z#Mtf9?%LyaEov2)&x>K;CogI2ytJzkG^Av3skdAY1}-GVZnt)e-zNDC+BwBE@UB`P zV4U5f-N{(Tg9mFpWCsHui=naGtDW;S+uNh}oG=YMwmyxs`?R}x+V@#e}jRmJ)*HYt6dqp z26f)~Z8r_P`*VF5_x0DVPsuU)oIbT=2LmrX=mKLGpxxdQYeI_ePhbZF&n`)0cTO$u zt;!kp1+1f;*V#tJ$6rr)v6Qngu*)Jh7`qGF1$l=0?93zYIbq}BmLxH_C^SLU>7;D0VO&R)^(Z4<{)-@nW6C1KztVw}CI-Q{K#Ttk}vG7UVtIgRUG z)2`CM$hY?#K>P3`1;BMcmG zxe4R#yQ^L5%vm>A?3DMbFz}7}H0~R!-TZ(zYa<*EaTW#+Nusg4r`@c;(_V>lxz_CQm?Qs=5eB}No5uC-YxmW*(fZ}LzH=4^j>t!27p`5pCH3m|Tm8s1 z@D?%7KG1G=joYOyv%}fJz=NC7*ge$l=Kb~OYL=IC9~k&&IE}N9)M~V9+uXaS{5~o| zXAe~gxP5SfJP*OZyQgd98qfeMi#RJ=3oK+|e)ByUOzr3>-Lz#yy^E*Lq-P`xd(bIQv5FWsZSG zRt?)~8hA-T8fRZ>SF_^Nf7e#OUQN zyfO`(e<+Q!Z?$V5<8jhux;($Yz=hw@*uB&4%9@a~L4)M^1qKe&0kyrC<5aLtW)PA`BejOyhd7+Fh@5)viEh`Md-M?vs62n>&wt(J711~;AW0$C1;`XPT zKHPX?8u+ysXWwf#_+CNZ+>x>DVBig5GZ}@yEndHnnewl z&sAXH;>T$0K4`bH`^7({U2m8M&eMm+Jw9sp%7io)7!vQ zb}(>ePa3<=+U-w>s$IxS?k_NK?pPYTFWL>*aerEyb*H!<418h~jonx6CReEYFjuYX z>|o%ej5K!Nw5#zndBLkE^5=koD~hrEuHBtn4#nHul7D{%1K-U}3oo8HNI_0(b>b7|An>mxXum+esYz@_5Nu0_=?}Yi2U;T5DYxUpT^n0+O^H>-QeFO z`Ro-2&Qat5j9sdBPtIN3-p@wPX<*>t5j1xHw3|EgLR`3u{GG$Vk7m)>{qKJWt=o?I zwhQd!a{(B-C);S3jEj~uhT-tboi(vmna7-kq5D;u#xAXP>DMgyJh72{W(h;*zLv%= zopxEytgANRpqz8T(49F&W0zjL4ZcGPA9!}&G;|BE)0~WpmJHgxPb$^$dv*CN5{B+r zGL5qtwR4?%!RORoc`kvW3v{Qk%cPyx&`Hf(E|qfu7`kTzXxulmc3*p*@Bj0PocqAg z?G)pBS+r~5`s&k-^7}XoLswxmja^pldiJ^f@J}8&*Mp&JB*reAc8k;Rn0IZ{FVoQF z$w1>C*|jUSa&nVe9`f1wX5G~R6Tzmxj)0u zr4{48HriE5fAr#`((5@3L+6v~17nvOL9LfYkP z`|ClUVsichL-(Q^jkATdvwghp_|ndAO+$Aen#T2tXgBPXW5*9$ADD*js~?TCMYX$l zt|M3|+|^G^=sZVyoQ+|AEt+?vUqk7`mNTY22f@ zc71m(DckJkL(|Zm-bdrUCA3>Gd~Sn`eSsrq{^XbEx>7p3?A+yR zcUH^u5Dc?x&(gSFY3+hiDn~xrb;&ezi(+Zqql|XDU+(VIB;=E6=+=vIwybu6wFlN1 zJL;Ng=xUasakiXxiGe9E9sXvp8sE0S(0Pjm!OE+x8e2BuXKE2Etb)$|SJw8JH8FsD zz%ctV4~=_N)UIG?r`DgJ>}Ll?ZHRm~-&OuS91PvGWi+dC(PF3Foa4To zy&S!`9t>Ugy)>>@S-an%K_~Bd%fAe}u7eERHyJM!8HLpSj)ja?1x{3_my&U->W_kp2{6=PRZ zyBas6+fCUauX!+Zb)M1K)zU8f?k!j6Qt7P5w=FPqzwgt6V70Zg=@2<;;I9;?{~5Zw z?P*-kQD?JNn9#jJuR>OIb#!)V`@0QngZ^U&!)(R!G_F@yyDyKM_nhb_=W8%@$9!n) z>S_12ZiKJbFgd4&@wSwvagX}i9bT3a?LQ*PG;~cD(zsp&?ef-5Iay#{xM}EeiE*}} zcKM<_f}`%p>kJHCx+gStjkI&>|E$ZezjFIv=(6>rv1_cIwef+N8Hw_{Xc)RGO=#?# zv>UQL#|q0Oc@G9d_sWyzWL&gZwQE~;#*;GZ}U^TwoSCe}SQ!+-L!eT{G?GJ!*cU!=ON}2SbT(6aOnUW8cD|+muY3Qs! zX`F4X-N+8@E|=;P%npXGU^g1OHridyHSGA4E8p3{(Crsv*H*j136G06{?BR}x~30l zoNcGwnkY;8z^?LI21B8*Fn3;u;qKFSC{vaFm!|N z)7W*?u8Y(39g`j9a~c@Bn3go|(Mh{{AvwB_KNDmcy0&*|T(7fs-HVkj-SnKF!@{shOW98yFS{D z%Rlhgq~%$y#e_Gxv~l z6&Th#{Dj8aJU}h&>d6`HMyBI>19f)SjF6Iht|W0i7-r+A&^S9tyVt32yW4D#Ss1$Q z|7bzRMay9AEUQKa`h>`5r7(0W*V4G&5bbJ?_Dbu%OkR72s^#f>xXaa2aqM82-O-=M z+vlQP_iBrFj(akI9Sq(0b_-zahG{o#d+BGjM?5tRUF$70&JNekZ_MpXJCDb)gYh=I z(%6mAZu9m9Kiig+e?tmGH(@7@-AL_TMl~LK!2Y^v=-kD)$0+UA)amgvXvZVd&@HG- zqcWYRl5uswhcJmK<+~@bW_B5Tc&9@GHd=gcRzW&!O-Q- zNaK3bwR2xNr+MTT`J4-eu9*jo-3;w+B-Ti-xA}!>=ysK=3FE#qwOiNMI{f_*d2GSZ z?HfVk>@4ky{VMwST?t>)&>iYS<9f5T8xz@eQc4~9xxml`E~RmHj&`k_BBysK8*Cc7 z%3@q^u6F+oYSeA^fE%=VY7QNXx9{9oUXNgywRE7do3CBnfR~+0#+)?`-6FSFuuB+O zpk24`^%ghiCZAEj&Dd`|YZ$ z+f0_%6d1anw`lCPYxmr9e!e#q@r{n~xHP}^Z~ZTb8UhOX~58fOn^*DblY z%Zrv-O+#1lYY7<`?r})F zpLxHrx`w;m(2@G9YF?J`k3vae(>(~eKdIUrFwFQlxpLRmGdDOx>zx; zcSgHXUJm#D%E&nq5F7n<5hVJ@& z8oL1Prnjk?r{xwomx7@?F2+61Y1j5+=E4b1cTGe0^aG9So!9P2)!ZWnREjhWT~Kuz zXD?{Cvd*ybqx#DEBn;hxdNj^n)NZtM>B$A&U*;?fonJ2+yFl%RtZXyf_oX~$VCeF! zqOrTAU4tg~iZ=I``z{RK{Khoy5v1LbMg`OK`5@2FFm!fKG_H49yFs^CIfNG;Xd3qo zp>e${+MQT8Y~+8HKeL0Odn3l~s&=D8eD1&e@|7J7T}3f=*R-2*di}DN7x$ZnuFydm zXRmAbA^iO9`ZMJI3_~~S0gbaawA&DOVz;%OyspB~4HRQ{Q@aw)H#?2!n8|8<+Y+qy zI3=V)bkt++3&ZS6G0xu7&Mi&w_jZGmO+(j9jI+13%UdpA{WeA9H429AQgIr)5baiW zEEk@0)I-zI?GWQ0ceJ~0DOh;dC4Y7>basCVz}Vf@uJ_!DHTq4Kb5R(&FPmwc4OM%v z?0Dl&m*i)9PtD#je}~+Y3UDB`##;QaFBbzu-^EIG_H4FySU0Pd{Q?LW(Pyp z(VfOFT)TzkJM?R|{EunqI#r-?_JMXSpEZ2%*jnDZz|h5tv3sapKbQW`UM1``4PE1r zH16?8yNDKD!pDVpv4f#2-kHWOLc8@fLWXP@EB7H7x;|o@eXL#DY%3zVok`{_3|+bG zGk2iU>THJMLi_d>gKt*@t_S3>SDFm$b2(b&Dz?%3P%X?E0-`!fvP z;&(K5ue1xk8PH?@f$U)D+I^(4 zd#BycguXxPbeHE-7`m75XzZf3E4+P6#&sWeay=Nj(Ec=bG1|?UU;57AxOePe=q8D= zi`DLWLXL8Gs>!(?4Bd?3IbocQ)2?T$Aw#^2%3~Ua?n7%DyLjzttX)z!)J}e;Fmy$? z(by$ucVx@lJeL}#@V3CvUEfS&m#AGvSIe-7X7amj7&<30t8vltUc1!wUVCf5S;F;T z=&lZ?alIt%YNkuSVB20fzk;EgkcP(DWbHcDZ@%%d<1f?DjS}N}AGFIj-(&m8vDewb z(0!RqWA{PHNI_up=&7?1pB1j{L_2i6|A1hSs1#qV%+1icBl6g-5)XH zooVO}c+oifMQ7*q+y1@lc6opFRcBlLSe-PafgfjKn6>*(7R~OS=TF{v)6iX* zM&s;v?PfbZ-Q2T|ysvfuXCC>okn( z{n2jAn&^NTRSubkE_FAJ>;2Vk^~evuX4aMSL>RjK!)WYMwHv!-#rez6<-8MyuD~%G z_xPt>So-KbpBl*h9)@nFnANywya^Yp(_p}^Ut#HKX$-?L&nt7S3yPO>j z2JP%i-96X(sGOI;&{Zr;W0z4opHYwARg07N1~7DcM$p)0(k|uv`AqSzHM`p_9DthN0Vkg~l$6cK#RpH&0w9|JELcF7_~uT~_VZe0x8%{s%cnhoSTN zKyxxKTC!>Pwd}S9|Hd6O4c(6lG_IFjyZx6tI-Obci5(2xEiraEv^&__0zBhFF6ZCcV#t=o$>!#mWSJ;B?}ksh%pV_R58xx)h^S$qiH73Ph|%~ zcP*60E}wS2rg)y*9(C0;bSx?vZw%Q%9T59t4Sh>Fx*UmPjexv#sf}M;JO9|~NRcKyvWja|8hV@ETrg6QJ+V!28 z@1w(u`<#WLTPDV?ly^O4UsVd&hGXP<7|2D zB7C1U9e7n9=P-1sV(cntXCM7(eC%2I-?o9FyYP<2uA+A7F8o)jiGPA==!T0q85b>; zw2Pn87#Pce25+6|l8xZ8$-r?>|UUGtlbVC<@B7dChGuDj3DT8(d8s;Uk5 z|Gcu^UOAtHVKz*Rv(>cA*|<{94E5#j5{B-C827EN-ATWJxnIOx;VcZ@>`OFuHM9%7 zo+fS3Z(q~U)ykR{#@U+MwRv6RaD3A+b})3C#Msr+&Zo(rRjaGJnOk4|*quRM%V6kkd(t>tSG#@_ zOL}JymirnET@^8Q^|VXdYv|R)Eb>|bL$^wdU488u?K|D_Zi&o6#@m^Z=VjxF7LZx z=u#TfxJL)={^ad*pxa^jxxmml zrd^SD)sOyt^_Ax!HEfe%~~7!D5{4rQO^PJON|IQ471(+bz~t*So)eWZ>cJ^7|AR)(aKm9{sdyc>G7@G4<0~ zjc;3E=qiW>!TM`Ab8GE)Wkcn23mCc=V!V9=wDbMi&9mT1IhTT=t0~5P2ddRrG572C zCpK2&+m=B(+jC_9kYRC`xgHF&gM+4Rpk5> zhHhy~8fS-U=QT2G+xlBSnTD>c7}s;r&b5j21E~QT)OgfX!Q~!55VCX7Nq_G>J-Q%QwJtmfqG!5O0WE%Gvsojy%FUFo+C;tWm zhHh|K8fQmo_wYu6gxbU9JPd|ztQgmG)y})MbL@hm@)-{d-PE=;cB8fXw$FFUh3;=m zLsxY_jr)$#&SCzh;kD<==QJ>MQS)f*#;T27=-aCK%)D0P+m>-U+xq#KQhnwgVF$zP zvq&2Eb<^&~sEfrHUzg_>821okH(opY?gLjpvdHHzFmzeE(zwS2?R-YAUN>Q@yw`=H zdq0B4ZlZQJ{U+UOb_>knlua-(cthI?^~hRlDxJF83d@M9yDe z=$>_=v74sdjL}o$b0)}r5{9mk8;$!;*RJ5mxThcY@8v8E-PF-Eb~CiwZR?znzsq0K z(A5#+>`d(>gN5zgmzjp{KrtHkSfE|`#cKyTgzPa5ox?&JXBTQW<;uS-K6<_ZLpS~^jol*c z_STxP_Tx5rtisTpZ9wB5i?!=qsQk8v;qrTN7&`X?G4i+gcjC<=T1pv~#QWa+_)B@?N4j z85b=pwCj@SQM1?t`HTXFZkHHmS85k(-B{(*1o`vA&^e27y;a(!3G=Iz^5Upz=)CUH zxZY~*{yMcPd7<*Fep<*h%&r)m2;=M;?aKcy)u+zZXQrWB`-8^Wwc3?z z@A<&d!`(D=ng7x_yH2~Z^E<_Vh?n~~4BehNG|sNqZsW(qYAL7Xxe10YI)=t>gLW&H z*2tD;kh~{>p*tbQZliXQr^2Q$$dt(20z;Q7#%_~#9fMuc*p2&U8oHKZob}Ysc4GWx z|J!mt1Vh(BjNNAKjua{tv&d22C&SQ{v(UK57VVyA9p#srBKJucx-Vi}Z>x3-5B!S% zURL(qrq=ew@%ytgbYTa>?2sok?y+6FUX$iMP3I_&4;Z>iVw~Nf-Nma1G)ld~{% zyT#b;)Na~F|2~lp4@^T>+>^%H|Flb3-DuE}%<_H)hVG>YjomKoJ`XPxU({31ePHNH zkDzf6FYPjf-YSro9Kl%_x@LE2>~?FH@9^R*p8j#Bp=&9|**)5&&dmC*WO_LthoMV5 zmB!h<+IbAV(dE}Rc`U%tg$$u_y?xqc9si~H2oL#;2ZnC48;$Gj*X~Qg6`QPK;ijQ0 zl}zJ$2ec~``l9uKIQd;A4Bdz@8oPtq9bfI-!u^<>v%=8bSwmyztzDhgSz0|SBcJ8M z&}D2z<83*lT{D|8FE*c*pEC^I(kwJ~hqY_BJ0RDr);G8Z4Bc-rc1N^Jc8O28?JAE! z7`g_%Xq@%Yu2t2hKc+;+nTD>Y1C8q))h_i{Ca&YsjRriJTDx6Sf%fuXzBlE&_ob{{6xckG;5 z&i`QOa*d{OkJH-CT^ZQ3Ymj`d0z+rBipKTMXt(u4{!iAM@;eL|x}#$3&T6;&_@)Ja zKg#15#!if#zjoix9==!U!hYTs7`nidGK?i*b+h+TFYGF5mCQ@_8K$U62^N3)+3#nAW?IQ#5Z244wTZ8oP^X54wMz zx+*!97O1o1-rv~2c!2z_9ERBuVqEW%c4JfilnXv9d%)0b6yth9+BK{ba5R_8Y17b! zigCTm+VxKETdUf!4W^+h`JTqvE4s&ymo-)nTqyUUt2#TU%9oaXqU3o4hS@*|8fUMm zeOvNl?YUx}wCg%srsRi*$4@1hhS`Q~3l|=3b3O z@dM;F1%|FcD2=nh+STk6)1gxHWX{6SwG?A_OS_A0d?qYj_nI9HT}nF|yW83o*jYcR zdBAPc(Cykm<7|j_f&Zl>oa--t4j8&y+iC3XXqWTe)m*-3TW~!XI{!c#ySv&|%euey zom}#nJ`CL$F?ONaB^Ri@dR3%q|FaHO$&pxv4dPGc&R z{%9JyjAER9sNDkFMcvy($a_f`x|U*`eWYE(J%y8e#>)8`3|%`ht{0(Q@r;R;T4a{r zb->Uy$xP#VkG0F&WoN0rRUVm!?r3Kk*L$Mf#S)#%Z+`iQ9Sohn7`vz16K zpJC{Zte|oBnRahNX215Caf`DsbgRYKJ=ZQrRA{Sx9^R&*i%X<&_Jww1PI?r*Qdd6b zf}#6$hQ{utcFU)X+voJLi)rXO%%E|PSK8&Tx!kcsrZiUL+m_dAqr&?>avc%OSr}&R zZqPUzsokIZ+1$GQyk#1?l2>V*eWTrB+uGe*zl&xEL$^STU6ghMR_$EeXnqj8w`y^> zT`R`^llM$8%vKR&_fEUeKOa^vA9ltxbcMdsxJR^h9iH1SD*svDGr`bx7GoEqUHw8) zr9zg;^F0h**TOV*vD&r0()Lf21M5sfH}*Qs$+&2V(=NRFfi*koy0e3!TW3dO7q4CF zq0~kTbIadvf_8Dm>L-N_mGinp?Mlth@7inBX|4yudd`bzT<^VF=3WEWX8S7VG)X$! zHOmJZ2mRl8gJHJ47}rbI?rOQRalOOkX8=PNCdTfAcGb2WPMTOs-tWWE)e_@v`KVT| zxox+D^X1R+NoQ{t+t49(qdafGFk7(%jeC67F3*p*6Fm3H>naT0pYJs8@kP52W1{v> z%_Gl$Fm&n1(%5~~uE6LGJH{r;IWP=eUNP?bO}j}c3!LAbm-`Uy23d7Q@ehx%gx@F{}VeHIu|i^zqEUQaz&%s zneMZLq04xR#_qRvMH{Yr`#bfOY3S06aW+Le{~0Nxvw4M@hAw3~jkAArkFU*UZA$zl z?nLC10-T z^Y6@8b})3g#n`3MZc6h%2V85#u!Er+Eygabc3EDW_Un^do?~I?EMlBZr(N}wd^Qnl z<@Z7`barCw(rY&&YlU-7p1$E8Fm!6{GW@SA{@MNM!wc+S=-P|1%cz}w_(hvqEize+ zZ(A~{6)Dl-YW5o+I19t6tOYL9uh#d^wf|WFO zxwT8UdFAMblP66>m;Dxvvw5_elDcfn4QIKZ!qC;qupGuNuXdeZuP=SVM;?PPbnY){ z?DA=M_V<8;C$GrQ9)@nQ7;j5{?GBDud3p2DlbnU2tJ0Uou7GyKR$S=6JMfNa=teK2 zakij#Z#|1%F8S*>I~cl8V(bcO_c~;Fw=K?*{5MK4bQKe5{5ML4wR4K^-(W()6n^gakiLt2b*?xEcHO{r!aI? zo6$IHt6iS4xB6zSBj@rkbg^S-?22m_*0Z$x{rz&T2SayVj9m%s*1YOD=|x@nJBOir z^_<48q;{8De(Gv>*E|+XDF+qM021D0f zjI-snyIre$Uzelu``QX>QNOSJURXf>-60IKp?_$ct*G6SJ-g=3>9m*o!q6S}p|Pu^ z-M+S^!?rsuVFyE(^)ro~op$4^XM0no>=$-0blJt&Ro2e)>xwlM{&O-7-P2hsVVt$s z?#j&bou^H$%MONaSsNNV2km^<)%q}Vsyvs#&|TY2V^>8x+c71!~=A*=uUaez|gsfakhqb zUyj@z6`o}!XJP147Sq_()XwH_r~COT%VQsgPK{kH?d;Q>_3U`!8`p!OdvBq!tF7Ie znBmsx8RdK&hVFABjh&-*arJ6X%$wMl>(x=q;Ca7`Zv#2!f?+nD7-#Eh7tm$!p7Z*g z4MR7+8;xB(?QX9r|LkopIah|Edm+ZIzIN{~e!Aw;L%IfP{S)`JJO6eWZy$_*jwBjq z8)_GoJ*bsphHilvyGGi1ZF+eO!qBx5W7k-_JJGvNmL9o|`@+!0*m=R& zIcb;i{oC|QCWf(tp-U8FXVq><f+zU20IaCwDVW z84YgmMK+$-UR}`Y0Xb@h%ijw}gKNBojoS|D?&S$N7Tfm`w`g$RrO`R4bGK`?)T^01 z_H@)%@5rO_Ew{LEi-v9Nel~79soS6BbMppyhti?JtM$M z(zxxSZuHK#|F)g}V>Gyt(s*81byXU?DP7!iz0u&R)o0_jo4Uo1ty9aciZ&Wth%|1y ztGhSTDZI-lxh@)9kTkj;>XJSG&OPCo$n((PEEllR_0;yC$9lgDb$_t+((Qk1cJ%V7 zB!A}<4cpSv=z6OQ9r>(f{o(TSOEkDI(&+lAYrNF4-k0iuA(@{xp~3BvM%P!}vhWcV z?CRLt2^S3W9U%O~t($$?Bp(auLTWm zxD6YxF-Vo+vG{X#zc6mCiRf;St_b5S?5)W>eQ zXUO}QXmE?A(YdP2S0?D&^HTDh6%8&+SvFpGjJiYNL19rtFO4i3~^t)Q=apq!40=!qjOVNJ9c-zXEiF>XMWl=LtEkEk0<{gm&)s+VSA?-8@Dsn zHHj-S{_r6A`}wz?|bKF_k|maknjxKh%1 z-8tI!M#q=-UMYVscdl+78qdi(@b5LAhlXu)Y240JcXRaiS;Z{g84a$N3mdod)$JOT zO8DxzHbrxl@1NAh%`D6bwTT^UwQLS-UCI0OOnQ|r@Cm{(uo-h zrfzoR;4A%u^Vt8d!FfpwMO&`!^^DhTW*n98trgmS zt~JXss=yoG7Bp-#*0AxmtW-B7(5p_#CD-ZD;3{8Yqg$nI_Wr;bDa*t7c(hu#N30qT zYT+T*SfkDD{OmgYmVDnjm_#FW;F2`nQ+Ny zaMoYgc-|IueNHxsEj%aIXmDX0*tp%QZur08@#nKWrbB~k_m_=so3;T{w&u2+J(+I1 zZgb`cTVh#Wo_C^Q`#n1ww>#9`@0x$d(3=anMT6VYjg4-nwn-L~huS*Jzt`BM+eOPx zPanOhF1Kjd#;j%IcDK5>Rp(8NDkaYk(BO*HV58fk?$(08HP^0|*KcTW>lU){8hh1Q z+Liul^(mNJG`N%&Y;^n7)thv(fX{;7bZBrHE^KuB)%lqR*K0mdo)eAg~Iu&n>jY2U5}iByapQFhY4)FhM&6c z>$2Q0v(TFk4es-5HoDX52HXg$_qwFKK1btqrO}=F-+AuG2YL2N<9TPbrLQPH!@ic> z-=krhZ6zDG=hRLAR(yA4wA??V!A+4ycV1oTiEGjqt&-;gXmBH?@w)!%s@R9^NZTsU zZPDOvO5=F}>bB*IuChHiid!_e=IM{n=q{*R+v3)ntAjrn4bDXxw}I-uwYZkc_hT0O z%uk!p;G(33qFq$y>hD~`Zohn;qQT9S#`A*Iwe)zkv{c2DMuQ8O$Hv=oNw-zXgxVJH zm-jM)bzAu1sHVI9Jh(-})**_G+YogfrdL=yYrZ@#pz$_K<2F>=fs+p=R=l~N?XqsO zAM;%9Fl-^uL&LVWG`cJ5-mDH9;NDSw|IpyhtYM?OsxEh(!_9|elRsZHxLI}C=)%-Z zyEtq|R_9l|E*hM#G`jHrxh|ETJmfq|rsFv&m=sVriE(JP!@-ab7mMYwBwD zi5+X>D34`maGuh*y{;|G^VqWK^?!4FL$^o0R^*N7eU}am+dye_k?Jx$tJP>QM&36= zgIn#zMt4(P^`?uL`8Dx18qc$1<27!nyHVZZ?VU05x(p5Olr*~A>bh6HeYnC7`CdSS zi><^)cSqfs2Jf$)%p=c-(BQPu-Bo8h(|O{3i*TdCeVf5%m-(UTp1RjP>$MNA_{C^& zaniVrQg_O+;8iDgdESl&w_h6FeRXGlI3+(Ho@O+-?b3LS2kQPM7P)_RoIFmW!DW5L z#_dCG@lXHRPG2EE6Mm#y*Cs<^KbDcN12k+GN#izJon3kBs|~-)b2Bu!UKQAQTVm9e z`gZ$Z>(fcxqQQ-pMi;AYRrK{q?K;VGM>M$Z(&!$m8)JTH^_fd@|Az*5N*b>br)|XD zy_4T`llPIH==Sxr0W7 z>w18V+ZXDxrxZP5`Xuiep~2;o#_daWPnz3CryY{}95lE+(sW(k*b%-vRPKO3}Q5xNAb;q)-x5+gllnxCpKpNc}b#**Uk2Jb3>K4ZRTu}MTRXQ}dVaaTCsp>3Jx7<4&D~|zaaK)u@ z`&C`)REtximVDwC4ep0Dx^L=SPX(w?7VS{)}5Rxcr~l=zgeM8S1||!%N;TL4(^ZjoY8v8n(3axph~*hSGIgX!_zd z#iseup<%mkG8?b)OI^FG5yz_}$bIo|ZQr)uOSnsV{F7Wn-V;QF zdpnJd*Zr%mT)lsP_iQ<2G`QI6Y&`FuI@^XtRxa+JN{0qlO&VQ>x}d95PW=5Uw;2tt zM;IHODO+a9{GZvm{!W(8iAICFeU^>a$fBh^v{!p7{~<@p90wmbf@ahpxu^y6I@-oGHPSX*Fs&6 z6Vbog50d+PG`JSh=yGZ6mTSrvzx(oy11 zy-9}#w^|yVrMlCdZC)Nf8elZIAZgqdP?x{CwRz6fYm5drq6!bY5Dp? zgS#w^+d}HD7r(x7)j|)W!P)=0hQ{*>>ozSkePir+d7WHDw*~SzbZBTJ+oIY6F5ak| zFG;?S&~V;?AU2+7rLFwECcQe^$j>l}>DE7Puw(u~@|+6|+wxD?c>9X0YxKLyjie%R zMuSWH#l~xtQ0M-uR)GaEa-WC>S3jMNuB5t(ccyLpIlZ6J;F{fI<26dDTa{#e#`(Q` zAECiHO5?V)y8RxWBYsSjzw3tv7wyi*^UA2JmFL*Z1smk|6pgn}8qX`MuEG`fXX9c+ zxJ84z6T(JUPF<%g_X}0pEU)d+;B2MQl~-5s?uZeOHp_cFXmHo1@fsD>1y#78K4_~v zHlo2bkjC>Wsynx`{@f## zXmFjR*=2rcs-kX4zm6x*){xgJXmGuyaa&d0`5wi_Ry*{NTQs-;X>`@pS&!O0YtZng zMuU4Mjoa$#N*#}iMQ(e;0t$WMF%I`B8 z+@51>+}6^zKeAijsiE@gsIA)>?p+VX+>rYhG;BvLWaGAux+imHUum)TiP7Nx%x2?l zsjJ&g<0`zL_UJlWJ>4!o)64hoAo%Xj+oeKfe@X>4?j)aCv3DE#Ot`B^0zoRu`X#_A@0 z@3`4+kGv;?1~*3W3-S_Fx;Fe3HvsKq3apTUu)#dpR8eF9WHoE`Rwep)jEwHrQ zH=)6$__FaD&9v?7_5H)sIC;*{T(_r6ytra{QT~2n3vI1EicG)fDfcC4IB$|W8_%;- z=U=`>^H-_z+6oQMO&XoOI-9fZBkEL?=K^SO5B=EaTB>W*s-|D@Ci3?W(BS-9veC6t zXWRbG(zBlOoB<8)gfzO=>JESMS^FuameJsLoMN-f{Ls`!w;r>`Ps})A%hp!6o99M! za+oa7xzMoPB#q~_Q@1SKtd5=eGo!%;hOzOy_Ua1mS$*g8@eXuoZ~+I{=sIZY`@U%x zQ*=@L%ukyfbo+DQ^Ih5Y$$P$N*j69F#`8LAd;Ou|?SxYD``1ZZZFAS~cO&F=S!X@( zYR6;WOXiaQKUy@LcT1Xm=7**(>H^oK#Fb9|$JeH4a4AdJ_}a9qI!DXxHebCW`RhP~ z8(4six38PJ3oFxt^VXEt>}YWFRa2r3d@w^_|ep)!yu9cj~ zZBN~H+Gp1;`0QPyVcS6(x4qP*&g!uC%{_VCLW6rQjjp%4ZlPu8MlX{4H8ePf5H?<; zkGeVzOWwYGBd=l6;8NPN(e+g~>*B_~59-VPI2zn8X}oSfb?0hSC|Ug4K5o(Atg5lm z_1BjD{E@4_JIi?kbel2Cd&@b;|F2r2Ex zIzxvB7q*U#&PiQ#!k+0}_R3=g8l34V8@GehIrkp>_u!5j+@ir<>&ZqpSY5xU^%r+O zGlk+9G&m<|_Gm-YeaezFfB(HeZqeZCo3rs6L)FDQ{JUXST)wB#;G(6`4b!%BWZQFf zO>+M?T(`SdeYEYfG=|qe!}j88Hg28OU0t7OHS}B*9U9zjX>=phee9j%(u^kZSb+w& zUK+O})g@jv9hu!Nky|vlsbOq%qtva6ZJhY=ojgxOgY$UK#_eczMLmj6i(2H*EgIaM zMQn5~>JBb18M^Ud5*->`_%b#+S8e?*O84w(VQ!!KY10_pW;=hjaoI>;Iy7u!&$02m zvFdtsT6p+n8+lHM26s&wx8u|;>+-I2vua`7qQOn<#6~w>-NXI2&Zkz6H5%Of18m$* zP*?WvhQW5*;*AEkTpG6%)pZ~K^3>g&@|*z;uDCS1N$Lg-s@%vjT3&CV!S$2IYfM(> z;_z?+TNbyMe)eyhDlwA>e?!PS+W&URy5`6ic@2gJmt!a! z-6D16Y#Mj5wvw-VG`Ik3HoC>?T6T3A{PN#jUKb56x(gfK5^c4r+JBkUR34L;>bBH? z_ce-^lJ_jpu>DUOx69OdWdFK%!X-am0}XCvMk*TJa&;B{JV;%TH~m}ySxo+})k@t?>1Q`_g`+%wLBqC@G;UX^8a6@5URfFN zfVTw=u9-BtHR?u8-~TG2LLoXdxLIy&bZgbUusR*Kt)e_`p~1bC#_c+Fb?U5Z-r6$3 zXmE9<@x1lA9aDN>r4teI7~rkj?hA)MXs}J*Q$@pesx+RrLEV@0(NpfHJmq<4aHag& z=r*dGnh>5lVXZvAp}{?o#_c9`&Az{FnA>TZ(clV7<9VCaji?;{c*ZUHc_SL!OljP1 zQDaA}thctGZX7chZhHt>qRCZtFZYUU!?i*_Mu3>pl%O8eEOS zY}{^FcYNZGq?N1W?{@FdwxUSX5sRo1+@fJyH#-}*JGFVu&)2E`V@vzYPn&k>_Ke+( zC&xd^-(5h%Hdq?ByVcD*o@d7R{r8LpxAzzuue(Rx>ym!!%udOBcxZ4JrP1wGwYhA1TV?fLxsO1DOO-~qUtL1DcafA^azBX%XCA@E>mE>-=VSPh zOS!gliw1Y(D;wQGb*I1N?Az>R8XX$k25EFY>I%=;xXJ3Wyq}E*S6Ujkhtw^<`{iTK zMe_4=G`P@6HoC*=cD}sWCw21!qrr7}&c^E=QRn8_;PR_6^4bLr?y5Apqw11k5+-k( zvcPC?8>88HjbrLU?1$%nQ*<948eH`jY;?!frOcl0^J9|SN1(y&k;d%_ZT&9?2Y>7K zi`$dBoz|vugIpaf>Cm_x#YT5ZT~Alnmy@PnG#cEM@oe1ss$1w;esIF^P&zcYXlZnQ z>PA)0>EU!nUSFcYHIYVlT3yX3uROii%{Lm{xEpM|#u?ov{+VAhz)k*b)mhyhAK3l( zg40*HMZ?xz8n@@vnO@BpbZ$W?9U5G~6E?c@>fUe7RqM^64@QG~E{$7%b(8%!eyebH zKOGue-qUP!0qQ=!3V8Tr!#_GSxL4BXE~s;AwY~Jbt@8aFsP07Aos`A3zi@j|+u^*4 z4UgWJ_hf=}JMc>6_^}O+)1l!SD?-_LjZ50T$ItwmcZK{LwqV^ht3EgOdh~ueG;A&F zu<^VQb*`t5g_mvif({L?sx-P#bxt?uRr`V`;p`9o=@QGPO#r>2lwGSGV<3 zCiq;tc9{+h+hNjp-aT!3o6UcalJJ8rO1GOYZE|cd<&n{_y&BBM?R|CE9Fva5u95p# zG`MYp*tmV5uFuNXX0__eb00Lg!qRx&Lv`sRR`}1f`fN0~C}}+Jk-A#-YBc|xw7_U^ zsg7*iMypF3V{cyVKY3pn4X({tHg03oHLP~M!{P_>J`EaNiZr@dby<#--g)SZ{63?> zg&k(&bswwq@v-RhbwmueXuN#~+34cbxm@`3uYPuUU4aHSRvNcYv^^YpAj8$^H(R`J zCw|Xaeo%@$7e&L?LK?4;pl*GSZO4AJkk?>naL2o`(LL4HwA+&@Zq?*_;hAoy4vO9s zI&Lo=8n*s}*?3!?Ym0C?Rk3^t`S(39bh~!ht5IEc$YU8AwiTuEyqD^dS2_BQ&Li*9 zqQQNUM)yix^$w$RY#ildG`J=XY`iUr>c*S@{JYy#o;RVv)tAQYYi)g+#~=CHP`<|B z=ytOCkKOST&(on{o5hTc*GN*AJ&Q+(TlqMn!3CSKar;)?hM*5&&l@bHL*sb?Y;^C` zl`8b0Uj8L=pNIyhjobI?au=@F01Qu?&T^4cB^u8cHpKWHm8 zyo9MmjdX5PbUWwb&tpAHXAjMsn9#7DAk7}_qq>|UrVL&={TR5g_eEW&?on4R=aJ{xXmHJ>ahs}cZrL_b z{)^@D1C8fN<9T1z)rgsBH6b$EXmAar@w{*94$jyyXmFDhIyATo(&)ac>-V@)j#=B~ zF#rv2pfqmN)P)W^eWKI`A8yg$I!dGap>D#&XKx#L$@5b*IBj%4)!lz~`_s>7Z;S@_ zN*b?`t}gFXt0p$v9q7>DI`3tp`=xH&f94mz@v1c=tOU8e9`;blKEJ zCbXN_{p4<=!TplPZFY6j%J;sR5GMCIXmDes(dAHg+N)>$WQQp{4-Kx8CmUT(b+2`U1@X{>VD^rbm>1*o^PPReU!#+E_FM@FWyP3D)+@`a6P2)yxi*2c7=yU z`O9N18r(%`JTH&BSzb$ytY5W=TQs=iSJ~+Ds%y}!XoX{q<=>2=!PSu#n)#tApE`%U z8$X;5zs4;Z-2FUkyheU?1G{(^IhH!tXmHEBvvF&w?oXhFcjD#T_L-kH70@<#Znx57 zD$8qUG;F6zk~fM?8`?mA576LBNTVyHZG5BoU9IX~MaVC_i~G9 zE1f4T>nHthf}r8N^xSMbuc*2_)m;K>mzL*iXmG`)@fud@ezWJrqhcjQrWy*=TV0m$C60<L+NzBVZ_@jeJkLhM zwxu+lS3zC>l1KYlU6K17G`I@V=qjok-mb`v*CpiFiv~Ad8n0VPonP6Kl}lWVsY(d7MFm8|=!)Yt&Td zRPRi}m<94{LxUSCjpx-;_h8(i896^Z;I_851{ZA4tvZoRhlXukX>@he<$PGj-+eF*pBlZ3}e=pf+*dCI`t&O_3ey=S9d|%O_!Np0V zYpU*4P=P{wtVHD7d-Ri3vWwH-R{X&FYd+;`MpQOc8fG_Td6xe-M?Ik zj|Yqf_i8E|&ugvQ63Yucs@BlVKJ(M2Hrn#_+gspbIe9JKR?n-GIN7GjV|mSqhV!~e z<2Bl;n>aVQ?D}+h&WZ*%T^e0`b!HtNc5O6AUPqz9t!U3i*FjyIYW@q(zIjFOH)vsW`7T4*};EGA3>!>b%WCOE1lOl`;S92^Ix1H3TYL~jG-wU~~LxYQx zM%P(g@paz|#nX&7QYpJD;JUB?kBw+>Go{h>QgmrS=x4JpokB`h4cExCLL4$kOm5pwIx|m6$F9v3pzx##;w`?*SuQ5>Ft53r}E_n9MXmBCYc%Gv= zuVIz)Wy>W$vq7U9%Eqmex^1JgG}&w;&o|KET&2+s(sn1(cFDOGa$ho7w`Uf2$XPsE zwrJS;OXGHkx{^nWI(!S3$51r5&?9WT%|q3Nud+_dJ4o(N(cm^qqZ_6!Dd^mcX5#{R z4K%ph0c>=`)s3k0q-9V{7#$kiU}<#D>Q3KnHo@wsyuL((dv}wK+Y##at;jX#NKtuy zfCe{YB^%vHb^R@#_zi3+|BVbZxc1UQGe0zqQupaf{^oru`ErW}XK|H{w{Nt%{|0VO zJk(j9bD_b_m&UD&y1xD1?%Cub&p}+ZJ+I?Yx59(=JP!@qDka#s9iwhSzA6z_YWf)s zu5*4iZpW(Y-9Ki=s_gfS2Inn}+i~j5@4gF9bd~2DXmIcEu+fcIH?Vc>J@G%~F&+(W zyfnHA>H>?p=H6l<*F}SKEyhMSQC+vR;+Nasi#HlvTWNNgADSkq>$T+De1})^UL+b^ zmDOzAPFDBTs`S3Fr}Ew_8r*YfbW_v~v+f$T_Je%CP5nRGG;N2vWO2JwUA`C4aNZbc zynWOE*G?1~aDHQVHn;zy&Cv5YPW8BXx7AQOG@O@p02^=LOm)8N8x8wnD?e{UgEL)b z<93#|6&6cYe>@^TlbfyEEW-nOmgy|Nr)by?lg8~Fb=U0Q_o!7vo`<2qB}t>3tIlFo zY|$Ha{0&vGQrkoOqT;9g7Pc7?j2cDv_2yl{nEG`P;v z=vJy*v|-2X`}NH2Ge2!wrOvf({hIl<`*FKk-A?aOT@L1dXf&L+SQ^h;qb^Gsr#Hz9 zF4CdF*_URcTdS^b)ctckJoXt4Zj3Z;*Qr~0wV}VwPWhSodTpD29P6^Kk=%!&VY^Nm z&+}FnIwG{3yK4!ahXxnAkd1DGy7gl&TBXRdyz*y`1~*j&$eEO>#p1r6ID*Vwq-sxG6) z%rgJhUN#!syPj;^Zc{h1Tj#ZpOUwN!8r&>tblbJvS!CVXKIJpd+o9Wsl{~iB43^hX zXxRRd#_djZ-evv_h>wx)eKfcVrP=6qsS7b*+rac7+-Pupv$FBJyVd!)yIFV4@|_M1 zZrOY`x;^SP`xe}_HLv{K1r2V5G;a5*i}+gN^NqDJ+@is~lt#BtU7v*b+&ir0egh4z z_cJzb_p6IMN?tr=@9a1Z-pZ?8gaOb7*x(C&nYVEJl#G)P@8eFGx zY;->Aepa3M_RVN{3`K*>UX6|Jkh;qk`{bJ)D?gJ%gX`?iMt4|Su|0ntOx-W{#Yc48 zu+)!^grn(>UFO7uhV5Kw+#XkFHM&gN zoI3J#j|Nvs8r=zP|Kd;W_Zjz(=bhAT@egk051jcyhlZ_{G`dsjZv7bSv0DGXO3>im zN#oX6U5;5P*I$o%W;D1_(s-Vqx}l#QJv{mI8yyfJ`77ebXGaH@1I>!aKw>h6VU^KWrUToY3sN37Vkn_Z`k#uNq%cap>Q1@om_LC!W zY%v%QC&!y4wXM_f~RT^EW zI+I=5LwUdY7!9sfb2huo4^5ZV{kK0daQ^lLqrp{{#_bh#E9^3|Ou2r}XmFdFvvGS> z-ME3LO2=C~r9*=Y8o)*urfx#}eO>;`l}d*O=PHdZTwV7X*12EJI7EjA7f_9jE<&Aa zE8FaCHf^FqgS#$`?wY!hH#YZss78JT$oJ(&%oeD?fik zTH&34jRx058n=<^q8)m8eD5XKMT0vcjoX{*IyF2rxaSyotU!ZnA&uwVQWrn^?9fdu z)-jjquaBUe+7m#E5Y;7uq{@FjoZ8G?nD+mpYO#@IyAVG z(&+A~D=_uF?dU6VKZypHLmIbH>N4M^S#_|!+~1?YZIwoMUtP@YK%am&?|2O~xDaV{ z57cE0KUk@~uY6xV)Hdd zvrL{dpuu@c<2FX!7s-&x=(z(AmtbM9V=&gL4|s#_eNuJxU#ETWI?i zIyAWB(&*yU)fjpF=c1nSUIrRm9%8r%VCynRpAb?9uJESs(x4bm=HgXLXaEnv8k) zSYAV*!S$BL?H6q$oHLr|xOAA?RBhcenmUb*%gXju&)ab@!)v*d{NAJCyq(f`-ZynM zVrF)p7j}(XG&rYdHoEWXy1%}BD_>$8qrny3&&F+9gww5%W_fy@bTd~D%O_%o+(BP&@<2BONwR$ySamj!3b4fI~zS4N!FLgW8^Ipg` zI@)M($E5MR-|BW=d~vnIWqI63gIgz!?vJ|Xd22cjcqi{qqQP0_VWa!2F41${xwF^i z7!A&20b5Asho*n(=JrkNcfqp0(cps0vT>WC&eYYs@|&LWb&m#TA&t(I1E*&GoX+yb z2A?9Icpe&Dv4U)LS=5DJI^$dPXbK$~+zDxPX6laHl%8}{|1J|6+&*b^=IV}?*nR%C z)jOVt26tQALZ(iHqutT)b;5JF)Hk-PaO~*%W3%O=AxO}#3+-6soUj63N;yYd% z4epyXZgZ&H*DR;Y_#sI~gF7va+nnlV9bfSB#wK}>5e@FeF*Z62b@%)tpJuQ1gy*5b zJ(fn7OI^2d4aRJmE!RbZ>mZFTw>oFvwqZrA<>%dKaJBu|=<=vLGc@m<6OZM-6AkX3 zG`hU%COPl4IhhN~6oCuCQ6F$-i#P?=u=)HEDGD)wTNf!TRM{`SV4CD=v-B zQr)>K6)$zqD*rYJ4K7brHo5}p3V!i-Z`36%B=gfIG`Kp_=nATHDc$Yz_wFHdXmD|* z*yswW3tqP7WMCe-eQ0o{rO_2u*E+f0l_(2&PKX8<`<{)ih&so`3nLEZc*X0Y!5x!E zS5(~&x498HlY{8c;9O_0(OIcGTjZ|kd8b))XmG)K+31R?`;?U4YWZ#X`a^@O{+5ld zxVo!@LvO68_?YLR!POtaMpr`Jm9j9U7d&L^ite>Jt9ETk+_hyjO(=XYrSf zu7Wztq85dJrO4v~8eEG)Y;+a>=SpO~<9A5j-#~*aDUGg@x^U+uaZR(z*A*JvWNCDj z)p@=*`_p@(+>fKd6_!R=z-KpEjYvosvdZ zO`Ta6vmt#C%Ht&(oOfq7y6WmC9kraE@Gp$#p~2;nMpr}K;3KAwCqw1efdNbY`+*07P{Q086J(ot;P+iepb&E8+AwSVDqJ(I5b{Y8eJ20o8|VQ!IhIn*Gyfn#)lSl{^iN@(BLxav(YtI*VsL8 z{JH=0~pC_=~QsZu^DA3>aBRzJ}1S^^``}PTlcU@zZ<%DsD8m zd+XVFjrO{AZe?d~UP0b}>7cE2SY^u#8n`Md;pHP31Wu8r+whY;@h!720uSasEE9jRx0RT1e)Hrta!~eKl(l zlq`>pXmAC-v2oi&Ti-lQMi;6h|BaEJx~+P1^7%&ZpVOgXJ3tz*(MwyiLRlhHOUi!> zqPK3BG`$qt`a%%5XxO&2W#hJwx<`|jud?bZuek{+Ld_a$@+@fJSCYp`ge(J`Z ztdMqQk=#G`*VfF%tlA0d%iN-2`(QL1w*%CDE48@cUB}5rgPTy2joX3hY85ZCZD);p zbZBt7q|rI5YgRJ(Z_6P0`a^>&Esa|zZIQE{G-jUTmrD zk$m#Kg@*GMO5=G$)Xl%2E93nz`SV4Cn=Xyl7^<#&;VIssJ>@Y44X&Itx?$>OotSxJ z=2dy_g9dj{8r^Vh6({Di7}7S1%~`kh_bZf1OFI&hIWeJO+b)`oZiKq8-CkrYjga3{ zG`Jtq=tgSW(J7zfsuZ#wFQX03e>h5?)6`q_f_t|K0SEO+}MqQn?%_2tkzRWEe+^98dbYs=^ z{@Opjb&}j4puu&MMmJ8KW$vgp#~UOX4X&ItUSqtvH>Y~Vc}L&MlSa@m+dG7`dF1;@s-6VArx)zPk>hhiEp}|#^MmJgACcEtY ze9AmD8eCXQHg2b=JF?~OnT_Y=`v?v0mNdGl>iX5_xqL&0Jl3MYEtke?OjDQtczTPG zJs)w42DkMX8{Kqui3hBTckLu!2X5L1JP6Bjd!O89G;C{1<9RdG9oS-fJYU9Jo`(jv zPa54!bzUX+*o=Q7-!o`%G1BN}sq>5Ws<3&JnSJJ`O|!Lqo8>s`c)Odt1{$`HrExn) z+o68#5~@!1rJJkU_>(zpdM!UihlcI;Q*3ne)J;A)VOHFo?Dm&jpwHf zFM8;|hY0XBrSY2bEiQeZIJmPt1aIX%s(JfI|=6Uq>r&}`UmZ}@~(7EWlgCT6o z)H&_yT)Esw`5HpQd4r_!yyfbW@(w?n+{o8xaOu)`-U@Y#942HRdMtu%rM6rXooBbd z@x*A@{+qzY^H!<*KT7_L(BMo9*|=S;&UyOgeXG3XJ_ikMi8Q)3>VkIdpF8m8 z8Kc1s-OI-7u2mPB(qRAF-L7=&wDm03Ddg8=d9H_s?I|lZZr7_@ao|<4QhuMgMT1)} zjm}%$fHF6CTxl$~84b=^8n+wNHSD@!Q^uI9+@is0quZ#i`=&8{O)m{{u*ZaME{q4{;w|wvBQ`f!Wd1yHAq%@wlQ(Xh=Y?e{g z{EY?|(3p+eUFvLdlyIxmEQW5kwvKIz*E@Iiq|vag+M12qJ?e(_|LHgToZOe7!3~v0 zw^v;cXP?AlbL75hpSHJa?z+x=@PgOaukFF5uJH}*Zg7i+^W3G;9Zd<9R;no&-FvoxP_#XF!8HB8~2lx~r8ooV1-B&ugH; zg-N43tgg`4Jpau-e3$KrwzkLLJDoT%z-ZXkIL*fMj;hOACHB(Z?kkK2w^mHQGjI5%l@C)7p6j*sor&&)pa)25T!evhxQD>-); zUIPu=G2_^{J*BOlS;3=S`n{*~)$N-YtE2wUvhqAMY@bLA&HT{hr*6)MY?XiCjpP;$ z&Py7vaavu@BGv4zuLsbf!4;N9cSc>O1h2=%pKUZ6ob7WqZqKTFyJuptd^5c1(BQ7^ zVxv2!?$`XFe`W7|FdAICG;YtUdv3XJqI=0~_L-kHp~1bB7K-MtE^JbdLk|X;84WH% zntkSnrT}%P4?f-U)8;g%8?SLmUC;L`Cha&Szo%$$eBUJ{<|ld_0OaKk592w*?I@LK@vQb!~idCKawB&zsQT zI!L3tuC818C8k5w&YI0kJiiA8X8@nh#Xa(Kjd(48miM$(@4a~L{C)CV9u3>Qz1X;o(sr=m zaR1b5`|UD6ZMv`98jm{V`)wxghoNCRSQ@tv)E(b#HD*G!S4M-2kjC>Ksx!;_)Ou<& z`MN@bvysN_BXuPU_RZN~fxH)l2A4}3U9`GE3s#LO$|e8q2@NiXw9w2CO^?-ev|RT7^8|UGg9c|KjpxOwn^WDg-o#&T zjRv<(njOx2qVDGMU^mx2^5=`j+b50Ncy*=^U%s|3e4bl0xSG=F64Y51?0d|wth}B^ zgEL9v_Ng|XJU%YI*`nE=={BZW zE95csrMj3lNn`J9oXG7fb#Wbz-dw&g%xJiVPkT0AH&NZ3pNICY^)|Q9{Iuz{w&s;* zl-OD8J{=mi<)!hwH|nM|&FI~4wftNh4bD{>U6Q&FpS?S_xg5v#R$IlVQyVru;lcJ! z+bZ`yfBKo^&m0ZsZI>33`Jw5(x}d4gKYn@miCZ+dr_$(>)iv$WqCwSvzv(_`TRqit zzE`}wE<@urq;Z>~u5_PRvwB11@e&QLsx-Qf>gG1w>}z{pzTeQ`yrt27(w6Pyu=ryI z<@@ckZvTth*`<4gY`H76ckxKWY4LM*LCd^k;b1 z%>P&tw`g!3r12Vm)%l(1{IA~ObUHM+CDQ2rsk5zmJ=f{6my8DYy9yh(8R~M^b6y;> zbRiuYoPS+5I#bTfkomu+PSxLhj+5u|S+t#P@;A@@^YZ^sW2UWnKg*l8PvkkZd1k|T zSKA-3Pi!oYms!ab4yrO*?i11A+@#TE*EYPMomZ&~ za$lT7w~Lxgt$n>n*3is}2@TtY((KW4s=GJ3-rW-`V|iQ9;L5wO@fsG|Hm>|wy_2il zm*mpzqop>7I!%(FH=<#iA&uMI>Y{^d-l=j;u7L(;EsZXZx@lwcjmy7C&O?LKMweGz zouvh@w>l9XlKE*98eDB@botcHaJ<&z?hCn($gj=qS!!DJWw|d#!*;1OZY|Z-bEujU zU?V@XMuV#$jjn*Yy1nb(Is8q&7trXW(G^tJe8u3(=9MBtGLJE#!DW?3S4iE~m-R~5 zm?6)V(co4~qbsb=Dr?KE%X`V+T|k3dV9rKYNZAYy`9l`6}M<`-qLuDQtC=R>{j$+rFL{^ zaKEI{l~(8Z&S~U7U%4MbgPSRh+cN6DjyL%ZPm$j%G`JiS*mz!9b+d0Q8STIQw$b30 zOXGRv)a_m5vSit2c^?D~ZoV{b%d1OUaCTzdhcCEAgUgUcS3zAjtE9N5l}{QC&ax;Q zw-wbD@1NoFXPmqzhz3_e8eJuI_ZF}F8qnvH(cr?Q@fwxY1r&SR!(z%yIyAUYX>?W8 z?OVQmx?7{O zrf=W2kgbNgqFoz|ahW4ulQq@Nx5|+%vS}Qzfrj&zN#nMbI!~K9*=`S{FKVcGn0C>a%yUe6QBm zt#g){ottj+r$fWm+Ki3oHPE(ZYQJj!a8`=Qa`a$aEL z_CIxrE9OKD{_~6u4epyXx@PLqA3d92Z-l%iLF4U{M%P@O(egZ^le+RN+IsvR8AaDw+lMTlT(UaIV=@|U%U5Z1UDVYWoSgly zv;52k4K9bYkjxKFUDcicNcan`Ag$@-P8pyu_)hpjXZBhgY%ZgZFg;5YkqP% zIp!m`J#<_9!=+1~-Q+O^4cj`>=z6M~;bEWLsJ6V%fCi^6H1k7KFLm!??p_@-Pg{y6~D`41sYtKG;W8e>wW3kimFN1j0R^fjpq$j7yoG9vFITQxKUHU_ykRdX!jxS*yNrwhEK^omebvMdI$3Jj>LWc&IO&Z-K zbx}7ye!l-8nGOxEQY0JQWObwFg-yyG_>2w>uB|k>De4+HddEe1B+{Y5Sxcjvs?M#~ z!L2Wb$gdX-u77Vfx@qc0mZ-Mh&q2PA(BRHVqnoboa-roX7u1$t2O8Xz!fbSI>NZb* z)@)i!`MN@b8zzlzhPtcGciFv*kmu-Va8H`C(alt6d9s(;?-%mg1r08{G`d;poXihL zU-FjsfzjXwNu!&sE~Q()5&lkcKaK{M*p-cLj=DDatiHtDl&@1XI4@~*bJYc%+1sbl zT=`iq8r)lHbo12RI@RKLw(at`j|LYejc&fW5a)^Ox381e`)F`?rO~;o`;~F9RkXSM z`~wYcp0tq64^1BGt~Xuqv(N&0?-dO$SQ?$Dx=NE$H#T&XuV*y4R}3<4FAvFcYBacA)7a=1s`IWHbSP`;W8M}txaHF57HQiQ{@?YV z0rKC9TCCefeb2pVHC^84Lc_L{G@iFaUCZ=JwLP64^Sq_nz8?2=Eb=jp@AaW!Yjc#1 z@AWOyW-3s*MnwmCJX)^XM!qXo^mRDI^U$zOIK{^6u22_~b;6`Fz2x=zN_AiSJKWk| zLEiISrLM`)UaqI!=d{l}#CS;4Ca|qn_cg)d&T{>4&wH!;n!oI(3v(lQT{K)byCoa98`L%L z()egdn@dK6yC99*jp{b#%C>&LwS0e|!5x#v?Iv}LZl&cI=j~QE=|`8J0j}~rhz2)J8n=7YtvL6r@D=^I{y2+CkPq}$pJdJhWUBd>+fux(JEjprR!SGms2q|Qg>_8n1I zd0xId@fm%1-cfb$I{$gn%io9Xm^!=3i#iYgKFXE% z^1F08Ki%%hU2RA;A9=474O?$%bf?vAaPAd6eX-mYG`KC&c#Sjawr}w8JKk5mSJB|w zZe-(mXVr~$?|0&Svol76>+iwF^UkRYU45uayG8Qnc3xZM?!W(DJtFs~{@SLvd$u~` zBmX8nK-)HNGne0U$|peodrz0Nxi+3++LZq#9U8WSr1899b$w^ft>Y9L zY&5taY21dWd-?b5>@hL&`~?l}g*3WQbu%K{W=|URgXf{a9g{|PS=-UpQ#-D;l>5mm zy8YaK`L9!-&Hst=86AAKO9~xXKY21cuvmZI< zn%lOG+(zg&(yqgg_vhvJ9u3=R_H5ic~C!@)la%uO^JToq}&#!YpFkIY}Px~_b$qQTXd zMt4iy@bz6>z7APrG`QT-c#Ye-ZS`))-cl>Sv)$3H=lTiLsRd>vv@WIwNghHFfdMi-^-zjV8MYcBqwLxZa-jqbj-qoca@XpDi3s<&t~7z z&Z+YIf`;v#CTu+Kp}I-!FAa^Gk;3yHX>%`e%cnuDpLA&0x=EvpR(G)A^udeW8aaF_ z{h~)>IyATy9ogufs++gjW1Yi0b6(?_wvRsc?)AUjr$fUwN*d35uFfs0<9@H>SB(be zDUI6~>h`>NyX;QQg+_xLBaPda>Z~G`<}Fc3UK^mny$NUI_LaI{Ni`m>D>sK*G`J$le9itC*D z>}zJvE@z*8&V45s`|Om?f4_S|cz;Dk-wlDO?{}uVf50m2j^hqwli7RQIE?x)=S{AgxaL9OozV9o*)+-*cZ@ul17A z_ng4gccb!@&$nd){MTXyx)%_{Q4bI)()TX*r+Yi?@%tLpX` zJ9y`Nqk8|oOyiL;-jji;?swC5tDAi7JDU%xj*Pl{0#n^y(_MJs&-E@ktT1BKU4MZx z_1$N>^BU~DdezMLRYyi$i@;R(hv~j*@KDCKTf%1@WYjGPOnv_}-SypHskVOgKg#x- z?%sO8KGE!@@N96vbkiI5J#p{9;X8Z>O_%xCn40_Rh3B%rO!q*8B`>s0U!}Q_vEDg> zX&rwXJL1SCm)89x%;$g1x8*r0kM@2pJjavKw`pMN`>(NHoxi;J>=xB8MzI_+-=E$s znSZEZ7;`y_CD_x{{A1T~kB4VnGR7McnC4f_*q^t|nlt_T^;*Ya#-1BiT-xHVFdo${ zUO~+jGe*Dtnfj73o-y@3+}M3*{+)Sp{oTrHm~Ymr3(okyXLz?>({$JO{Op?_^AD=- z2-B@zaqMpwof6(PA8EQ@Iy^9C$>G~nca*UaQ=S~U>$I@09c{jA7p9iw{uFd%%x`R9 zD{(5dOgFFpy|Zr~75e@d)76~)(e&N+J37aj?&R)mS2Z}{cdeI<@eU76;~i(Zc2n!V z^7=VTRd>9xQ$Oi-$+nBa`bS3JoR5{M?gZ04wC9JvHa7_Kl#IH^0#jXW)7_r7Z0}ot zY={_jiGi)eshnuK){XD%Ir+M~f7qM%@pil&S6{({*pq z=7!$uLp(C-9uG`)38p*v%%OAhhll41GU|>@SEhB;HQm`gyM6a^!!7DdM%}4_sji;s zsvq&oRa2kXpgJ<@2Gmrhx|2O#r=|n$xjWpq$f)ZQnCeb3UDNF6_ull(dm4|7x@Cc> zuDBdsO zzM@Iud4Zi_?9=?4&$un)UyVn`T-F7q`870MFWI4XZ!4x;hJt{?7Ou)Z=ZPCIMtEScX?nMues?K3`+Q`^nUGrnDTJQZ7_Hbm>bqh@ENHpD<+b8}sFE8wO z&o%b_#oa&2Z9GQfk7Luxq00k{p3r!0jb)}E{qpDUmqv`f$33S^ea|!9g5u35>>U#R zz3uaj$*{Q>wM%$iecOT2cg2pet9uPxtn32Q<)3m-oeyi5Xgo6N9;&ZQb?r^}VY{cV z-n9PNh*7uw0%huZq3ODe_&RH3>Dv*bZdYLHdy(m8wtk}XgnPbK9T|1K15;fG)6MO^ z_qp%-h36hJ>c#}7x{FPhF#NfFkFE=Q%u9^*E=#*%!(YLdjJ_`hroNY&?&@n-C4c($ zE`0|@M%|MgmFc^x%S`wAHEZwb{%?imOh(;=Yn5rdj;6cw)yvQNZFWV(sJlBb_3dQ3 zu_e3G-~8e;)saz`9hmAaH{DUI^S-#FTX;?;qweUyRCk5xzWwF%9iQ1d9y01i2c~sg zX}TfXZfW21sI}@#M%|#mRCkrJ>8)>CR-@Ki$~v3xn)jO@cjtla>Ptr7&jV9k7t@{6 z<<^4<-8ZU^jJo=PsqSji9a?+EuXi;IIx^~NuT!SFuBIDZ?fwIsj{GEI)a3@IbzEb* z%Kb-wcyaapsw1OrU0|xa)^v}(oH2XMo8i4}H)DhHuNnCBqOfLnH@0qG!X1ydTB7l; zGgfoYp?znrxK7#i#*)`wJ?r8w;q#OmjJ@&E*v8M?6t3SM#uh#~>!$4X;k^JE^LryO z&F@Cj-M{mkk4hW<5HafR3QX(0$#kD4E`I-P`BB-;#-3hqa?h*ghW#HIeftHb@oq6) z*S)u%dt2}DY;~)#f{YW^j(H-iS7h`p4orP-GhM=lOOI@PNq9EsX{^VnaWAerVw~#8 z=zDBnn&0iFYjMhoJFhq?toLNpH4RLC?=aoGC138lv@GnK$f)ZTn8v%)bd_6XT>Qje z+apHZ>w#&!yG+;qlZAgi{r5`|qpnL}>U+28%HAJv$IGk3{{9|gj~?3hX2+aN^(CWk z>;1~qx0kV;ZasVVS{VAJxA|V*@0_o@p8cEZ`WRbwaj)O6Di8NiGRCV2OzXJUbYC_3 z=kOC6FNzp-9|orJ`kL;Yr7Iv4C;{&?7nk}=*1fvN66W7Up7*zL6MmMVM5eCJ==FY~?zVQnX)?@NKH?qOrM zufJ(j$D+;39x-;+jeEb|yS`FcKVx6ZSKe#3CSuf$4NP-+!gOWFeX_RbxK7Fj8Qb+`^{Z?C6y8}rX{=vT{e$(^ ztXADq#?Bp6IP-&R)+l@0Soeb3H+}a~c-Qxgv3q8HzrII{u%41Jm&*fF-*jWAUUFRj zDQAyU_N@7i`~A7k=l}SNvgeG|ZannTB~OKYA{pb24@`B>8ymd$)bS^N*HqbH^KJR) z(mKOW`+X%`gp9st2d26V)6Ke~_15;iL;sOcml>GqGL7}ESLcE+>W6+AV!o&MT3310 zk>Q=pP-E8}xUKBo!^1sbn6c`s-hcJ8%f8ik!!2HO>H2b)UxRO!>DvBP+I>)JxE9Em zOUuBt9oeS4YDCJx9~*^vMMm9qfvIkU=}zxf^SdSGVZF~Wwy166hc9{mQ_Y2pzKa7> z-;t(!>C{^5-&_-(x5%iQ8JOxuneL{^Hx!<^p*&*LwGK?{7;U=O)_v0RzUJ#xM@HS> zfvIkc>FVwLx7St8)~k+;x~74t?gi7W|MRSjTgGoz9T{~W1*W>Ord#w-?~a-Ex2lee zx>nd)*)_u1?HKfdvVu*Q;6*KVaU)#aJ4^79_K4XTBAP-N8I6qxEJnr>p*F^kqL z`er4Hg^apcfvIki=~g_{qt)b3awA6Fo(Gkw?_|@>u2ui*)FZ+^BH!5P7apE^RNwF! zDH(ld2d2ISraN_awKn(Oc0lVOqwb=>R5!(RC!Vl7sfB$eM@C)Ez*INY*b~hTU3~D! zMH=r#^Iczh%l7(1!W^GwtoVhO-%R^vx%!eZ-l4$Mce?2g>pFeRuxeq?HN)6TD|3%J z<&^Lqv(S9U4}UoO(YY6??@ZI(*mA}@4L=OmG#Tr-J20)c$aKv=UHDtt-IDg-kaGxQg?ux)PUa{#?9~po8GwnZ(7@mrx zdonQfEirc0uYccgbK7tqoMXO^+%|CBwD0F>JTm&$?x{?D=bG-OO|7=R`D)mYlTkM| zF!h~hx?k3(zkBxwPpK~%b@zU(Om*{3_x3m4&mX;bf$GRK=fG6=lIg|{?z_0(k)o{B z*o@o$d2r2h;e8z$eQyg)bqh?F_teoJ4JZwJm4(JmoZhJYjBVlbC^GsUHcgrOE;3y~ z<2ze_GiA?86bl)3V**p%V$+TOdi2FN4hZXbnX!s@zxZrqWmpf$=zB$A>bt~rS00`9 z`PMo6v<@=r&J9d;OHG&g=%I$^mTgy7Zn`$7zrUmC-LSt}X1dwuT(+tDjo+z`jPZsC zrgbbg-R2J}ryN)`U3FyC?fp=h>MBfkd*$)l-o9ve#HhO~F!il8UFWrBEq{0_toLNp zB?qRu6{b6`(KWX%Tyu-YBcrbG8Ol`mvg!6e`kY*_{S(!ZQFp{+%2fA?>E1ZGP{yXM zR2><0OY139-K(bSKWO}%gv-KxhK#y90#n^57l}%8XJ?B)#%ud!`_FCzQY1j-KVB|WY3;27pz>X>@#D(o>X|pm)+ls7=6D8 zY$Z8@X+g}&v3mJU}1g7z} zn(nt<11HQG5%v+^8moKjg3~Mag}n+HeUA!EeYcrz=$y}**8ZZt)=Ng+rg_R#x7~DQ z2U=G4O(<2}4r9-+c;oC^*HtL{&RG9nGOizgXL#50y|Jzp>5uh)GrZUP!Pweuf6Zw2 zT3fAyjP>3fn8y3jbn~BDRp;8ogQ_E=Zed`m`^j{Tel6^JXiwN9kx_SaVCuWmbeC*x z{npK2Zc*P|#xCgFb;61ESqB+?ZyKabbw8V~cFWf1UeYGCjf}dcfoUDTm~KV2-gmva zGrX%Jqwa{Km8tGm(~Z5abYtRUr(BF;A)~JK{mNF6?KWNi5&PxIPT#998Ffptm1%yz zneL99J6ruVEyN?E?wQfbR^e3km~Q=#)tBD#RG1rN)b;;Hnbz^U>1yq4e|YB6VeXPq z_rv$fwBEg@+fpz0=Z=NF)R&C9{p%)>scxU?_Fpio`p0L6=QlFyZU{_uf0*v_`~DtW zfBKgZqfP?TI{q|WqnoSMzrA{~>d2_86PW7un{NB0SN8sueS_-AsCzIl)g3V1jeli4 zmUBs1OUS4@H8Ax(Xu5Z2efDJCePL}Pqwbx+RQH#$OW*zI=`}Zn=kveK_tlh7H)q%U zOm$@RU6ra#bNR<~SJqh8Ix`Z>7sjnOjfd9&t)tJ@flpi8S-ACohG+s5+{XHk6^PAUgQXLs}3rdu! z?l9BccyqstTDF?1th%utBiF1+zbL%pCZq3VfoZ(MP511}=Pf@xBivWXsOuS+#;akv zTW;>S>AQ@*>Ptr5CpRfmT}{(9{`Bg$>yNu$b!61#ZBwSYBaA)v`O%#QUKOt2BhB~K z&o+NO@ubD-OGe*zfvN9Nrd#~i$7hdeQl>gG>N@W(#C%aSQIev%;(qpn_H z>U*5&dc64d;O;r$*^i963j%g>*(@d9hboVAt-yg0^GU`eLQ{U4~H)+%#%{SKx@6pMq%L`0(XPEBB zy??)Xhdt+!QP({%)ipF-!g;qGpH~o`E6Av88kp)D8T<9vKQ1fS6`pGwn{V%V{XYJ- zR(OX(M&A{Isc#e0E&4Wfz@*f-B1YZqfvv=;oN2nPm%Z5I-Lu1(lTp{_Qf2Df)O7FM z)%E*ZhlXcyGU{#%Om)pn_hF51e{YbMqjiu`ms4Gt>YAJGmkWpQes|9Msw1QB+rU)U z!gS|m5*bma&EtKW=*as_^}*vyHu!l0SdKFJTWt#(2$Am8ow_(|vkey&Y}Z zuGV_VsGAj->drCU-(5~Vt&4qkkc_&+15;fq)BW+tFNcSg zz;taBcho7m;a}B}QP&|b)wMU>n0X&w)46YW$4Ew9t!n`M=u2W#D>tMQ9*U$U(qRO%kC>Ap6PJd6C>Ml0j^N9(MW%mvH z12XD*o~ulKFEQPD*MB?ssJf4eUWjQ?HOx-z-%l&}XTW4%uXrn;+)wR^GNwCwutDC=x&VckKm{#q}z zt&6dg+K*058yD`~SA+4t?|xW!)U{77Tgh`W)^Wr4$~0bA(>+yt!s)9YpQ-E`W3!iB z{!*70)<=xKodeT&*P8C9nV+t&ds%1)8FjZ7DO2BWrmNBTkL$ka8TN!^)YT45<8?Q7 z_~jp7@>%v`^}Wt~TYu2$kro>=RYykOUF(&p?t0T**ShKM2iu0V=>}ut@3?p2s~O?l zR}W(eJ>GpV@v&{{OU8KB1JgQgG+nDTS9f~8OL*=kqpnS0s=LW_+p|U%?^_l2{A8-j zR;G2_Y`Vt>oicl5TDWFzG1g$rynn`Azgl%<^!;|UGOgoQ)0J-D)cMoC;r>QO-Q>X3 z_cqg=bXcEnzdJMRpUJ3eQA3&PdYW#{8;4z4bbQ#;kWtt1b!Do%-E=>E@_hD=wqcJ% zM%|vkG`~AcH!As$YtQZw_B3SFJB{VObH~KFcZF-_F7sXb;}s_#*8gYKk~MjnEvGVf2)p+y6J(bu8-+XdU49K1t*35%e}^GpZZkWoMTGWmyEuX>nl^=zNQ;| z>H80jJh?bx)MW*xzW14~U)#!^9pC;VV$@{^roQ)^?wg*eMs_Mw7`!F!oJz%<{ zdY#y<-({~yjJg_usqcfPtGlWA;Dn>YGxkHqX0Pf~v(r%7_aRY%2e0ibi-D?eB8*QmsCea-A%73Q{CgH>#^>MGj`^^95L$F2By9P zOxNJ?{kPA)CtM3;)HM!Fbp!v4j_m*Ho-o}9HCv9jx^1{G3^KO*k;}IJ+$OAHPa4a3 z;MkcZJ$~2x$QbX@z_i|{On2sOFZ60SVUOy_sB0OR>Yg^;qHbfheR;+|s(Z%RYj4!r z*>>Mo%F>N(Sh#ERfO;hnW4w<8(|FHX9n+6l+GhXt(^U7IvG-dq-SJ1~aIHRX@x~p< z%CCJW+@l5?`}wKwPEI>;m-=QHOIuy5-{tAyyTqBs-l%w}^KGLRsE&-eoK&eya~Wc~ z<6qu>%#*8wZm6+IKfXHrh#_yNj*PxVfoZ&9ru*c*bqiK(4r?(Pbr%MvzQg~Ej_m*H zvP}2+?u2L8Z~ac|$TpV$)vl*!&kOtP5$5}C?v=+Mvns45Ii@>#%n1`uzxqY>9r<6_ zsQ09_GQA|H57{wr9h<`44{+`h|?`IB}ygt#_>HMo*tLW6ew9Ii8HV zNr9MDc(J{(U*dHIUKo4y>5c{q~ycm?|&9$!VCIQGFOSIncv$`F4Tj*Q=9 zRmdal^-#VMN9Nt<4XgjnP@b?lw~@=N4C4^dqKAYN5&ucez4O%u>QeO z<9-!N=i$iw6E<4DII>^*d>ZQAXva>Uh4M8xvYug| zT>5l8m_z|E%r+UmoR?W^%k@Gr-a{=>F}V~?$& zy*qH^d|C5t@b9xNPD zy+OYbM~-WseW9LCe^@*mHQt|A&wk@Lvft7Ugm@cqRR4p4Z^TjUzs$z5A@m#n4(%KE zPl!|F-*6m;BlBu{DEO7*$oA%8P0;bFR!z%`?bzwCYC8Xmab$jdst4Uh9N90$hlk_9 z8sXTfW;Ko1^oXF}fg^S0M~1jPj;f~P(dp=FIv>~Au~V&TI*<3^sQq?KHEmbZV=WGj zoWFgJv-)x5^}gfykYA@0ES?=Z)ee3&P7HC&ab!Prs#8tJI}b)<_8YH8?Wg zyt;u8tQYc0I63egII_RioD%BmR6msOz>)dvJ2jMVY!Kr2IW6#kr-yd;IU^isQsT5>R*E+?M}%-zYj+px0G;9 zOAY1aII{kMt%I&afQtn9JL>=4Eb%eW1p+6-#c6VIBI=eLSAdG4)rwc8vM#}WSq2XLO#Vf>iAw8 z^m*MvoKD??ZVisQE?gJJGvRv66Gz7Bb3=%`4@VuB9)Ty^7$En!@G+#1@Ga9fCzha>g;uLk~am7LxLO9*~(1OF$bZ>h-EExHz^ps2bP zC8MZJ4mT?WR+0MCtyOAzlO`H~Uy#xu6dwVDKwYWleUlJ%vL2Rstz~*~(_&eX)Uq;G zRG|awk%|b8MR63VOgqFQ70K~lNat+rRS#StwPS%xbS2?kq?JmUbRAeqqO93lQC&rn zU;)_73SIiNkO9i1o)yx$M6Vx>mC8g|eu_s|IUC9`i=tP^sj=uKx?n}oi{v!dGG3W3 zJ5l&D20O#Uv;GRE&=AB2rG%132DFddnPG)qidxDli=-(^*_SMwAkAz=7I2k0C(F92`K*a>cO$A^I9O4Pm+AJ1lNE)oDLrSC#OidwbPFoO$S2-Je zo_lC~IUlA6&yaRzG2caU0j#J&+FR{GJlPCJyU>8uw@5Am(1f%?>ELDQjxY3f&jc+cc< zG&{Qo11yp*FuiB;+22T z<5fyYA9LVjD3yE7Vz5H#>+Vt2_nEt@DY+j&J0Mj5fcdk$P#*Nc(7g{?A#+CiVi{f~tsE>_u;NK9mTZ@Y zibj~6NsN>nFJ!D@8EJ)-4wg|~$eb3-XqZvx#gvZ$@qrvkj~5K6Kie@Dz^D0O83)Vz z77ZEiCgT^&1an4am4oS=>*XPxJU2t9Omq|82sX*Qp{+pY7s+HVha9Qp!(=A3Mo9tA zv@Kf5%BFyLThxE5Ik56k@**rvowW^?X;#QoGG#g}jTTit!^+u~QBr6Yi!)`WS@c~h zMX(~@BC2PBXjP%+Vv}>gGG(?|47F5B%wni4nFA{tAZ^23ClqM#c_1Df;pSTa245;K zc_HLTq|^#oSC%X=i)9(I5LQ%|MqcF3A+^OOXXGp?^Fk()DNC%7EzFRmUdX;3CFO30 zdY74&U6~=vy^w*HN`;%8LYY$OW(d5(O^UPRWj85aDzCt_8BtLnufp>2&)`DxnyW*D zSGq~(ELjE9oy+BQv)I@IdBZH`UoLOLie^rRtgdpb93g99`RG?-Ct4tHxt!hw^0vtt zxm?zo#paEWb+DMST3nCbfe{UExx8y?_S^_r4@;|JXB05ndm!e|OQuxbkNLyn12^eW zE+4wd9w?BHU`FxES;NOpqJ%yH@lMqmHW*;z05W7FfTqk|9wDE)$vVpAGniV3niPEQ zMD)tVt+xddSqHfWcKg1k{a`pSs z95`==%1`dVJhg_MPNFJyfkcyMsQe7`aQvT=o+!V#mL%@#znriiw5q?&1;H5mADCU zh1X!!s)cvR`qYZV@ro~swwP;5b%3ak=gHwPH8?xDhC4HPIODxvRsYSCBV3ybE#Cb_ z9XLtw22da2(QIu5-T+3`W^JjMBzOfF_0lB4i@*?=70na82MoQ$KG7_XbAn#rqLd|g zCm1z+lHiSC6mE&sb~VGPKi&*hwQ`cwi8(J3ydJD7Tq1ZoSk=l&f|rC*>eyn8mU`yQ z0U0fLS6G$$B*81gD6P?g7lu`ZOXO55WV6bo0W2Tb(FCWtIz-0XL@npgYB^pjMhG=dq8K0HPXUNly9q{e9Cgmq{Tymb5zuQF-sMDt`tcmY`zXA+;snuGYf z8zFch84_XC5rX%TL9QlOX1tk+BZ`!f$76DL-77HQs%0ccE1QW(Zz|R`tM4!5h&i z-dwrD3z_pw!Ryc{e8tQy6*B}cMytYWet0z+b;?{OjCZ6}_01K$Dy@p49(Y+=mBC!W zyV9zV8Ub%jgMeAg6}&u+YQPkoDR_GtjoN&{JJiU(5-aZ{!CTa*P4flsP@@DwIo_s5 z0q1iL;dN?N%JT(pQ6rBEtr7221K~KS3*M|oG0@G61+Q4ES~XwrhE;RmJj<7!X3;%g zZg(l$H(&0sLM{jSa%aqOirfV&y7IN2yPY5w7tDOQ2P9hP^QD&sU|mzBcT8T9&&P>A zR?h0C$i40y67B19PAH9jABay#Y!7nfe)k9!Jm4l9lP?d#L0Umrk^AI-I=vdk;h%mSSlajf)H<@3#eDY6CmEc zQr>?C8DIqpp7ap($&sf#1S6{8X(y~z$uqGS`J5f;2IzyOE<>Jm9|l#Q=bSJ~7W?w~ zm=kth88X-aQ&W)fpNcZcj0e$*hB#r>>NNB}qm;=omoOJ~8t#O-s8g0XF$x~R21~X} z=%kVnPRyxHazK1CESHg9ZXRVa3dH-qa7)E<8Ep=%Wx0%r6)#6G$qQD@_Ai&Qu%gMO zIgJB}u7u?>-US+t0VcSBDK5v~0ksHfQjq5Y=D1uYxZ5hI8mn(Cl+_6%&{t9 zY(O3O+W8gtv5v@)S7Sa{rx(dxv9n6(?HJ>s3yb0D1C8T%uv#jFF&O zUFB4P`|WaB6PJJ#%3DsDZy}#X-gd%ll&p=BN;F}ptc#Hl`5h1+Dts!lNZvKTu~D!- zroh#Q7Y#9mg7;$zygJC14*+zyn4C&Jbi(A6eB^{0_4?Stux321<;f>5p_58BIN`Xd zW}_2^QSvDW=bAoW7RhHWU=S624ss*}`uS*9qI_Wv`p{S;U&8br!J3yXUsdVxKvpE1 zOb})-1e;?XxY6Xx*8oxbHO4nFAC+v0`QS>NFI(M*O;gFYPS`Xh+hS3$N6MG&E}@f> z9VQ{bjV4RJa|zq8HGS`danhNnORNRC@^e)b z&c71*#U<9HT=^Bmuj7fb+sm1V2K~(mf`%A-K>S)RVJG}1#*;oFo2SyV-n1!p;F5w465W9Ck(3O*#C4Yk>gxqP9<_YNO+;tN>1=n23W!& zu5G1B>8<3%cqzh{NF5Lk4obOiItiw|)BN zT+ViZ^+$%Zbi#&ct>-vFe^g@iD3DejgkiHJ(FM$0UCwo)0=gu*3oFW!WSHLcOi6*| z{fk>grleXiYs{3^X0er-k`@!A>$9W{K-8p6X=~-|BrQKL=8(nFJKr6cU8b~y8O;*x zS&QTXC!7HqqrJN@{Y<&g1!~geA`ou^JeErb1D3{exj5#7JuLFLBu>=n(yA!jOccvy zu_)NEE|QLMA3QQ|nsY!~}+tn`89S;D;6O-39mechWmVJVs?_c>t_O73?;7i_)C!xAu$&=>5woH?!%woJb@-(cdd#A}WR>;_MBt7Oh zN1k;lJ*UZYFrx{F2|h=j2VupmXAUbK>>eRphMP=vnq+za#?t^pTo7^_3e)4^ec@Oc z=H(19M}~Ub&COSc2 zzAes@Nio9L4l`sjNcbqOjpW;Ta(Wvnhn&;*eWNi zP@}!>#40S7H!MODBE0FP)FVQ%tOj9UQI0F5Ox6I{WJ-~@T+e(||2Bxty%dhwTJvXf z)PJ4(r=Y%f+(?D-uDimZ>w4Hev4ih>PFS5rd*6NVr#p$tN)%+_v*%gZr>sRI)K9$>W;!sY{reNxGMS5 z37u5)l@n@|Y>I`!n3l+91EGzT+46NvQL+W#n<@pLY|CUzl_G$x0Dk!+fB1as1QiF( zHYaFfAloerYcAxCeFuQwI;YBa?tpSS6w3EjPKT-TgO^(sh4Q17vx}z6PqFe4e&mF$m&!AF^c<$wY9h=PMv3T|np$zN4~%S@5{9dl9e z4?r}y8suLms5nG9Nq?Uz2lbCO|9ODvecD5Yrgw4hjEt2ER zi3wwk$(G}*qJ&>7IKh3`0`;lwgi+M#L?=u}Nu3y}#0@S(PKp!6$&&;p%ozKILaFP7 z87rw5Bit%i$jMGv7hWZ2$SEK`$x-<8+`oL1$;?#q$Ws{nVp zBjgPCVa-Y!I$>O_PWjTv2{lR@TNrj$4kb+tu*(&k={}L9sS`xuQj#OhoUkVKY90%N z7h}t%g-ckqO3pF~<6`q!E@#Jl6tr|7>ll2qB2HA(Di&o5x=#{a!f``(Q{-Heut_RO zib(=Vjzw9-OFhLUOjn&!ogf(w!6a$zg#Dl-%?T66ySX{i#tGwKmoP=zI$^tUEzgnj zK>XsyU8P9QH^77yw2S*Fxxfi)QqsOE3a9iGxzHu7S|t}bVG~r-!3mq7ZY7;83|oy?75Ej3xCD2(Ou51d)63)y;z}ox*HuoK zuxdJk_-(FIx|l_WO1awAG%??cq$^15YOIuN%z@3Tlxy9AEm4PVAkkf}Qo6f<4O78& zE}%=LT<-!kd12lF;=_v>P$@m!gE1=QM)y#Y9ygf>b5f6+V<9RrtK}B=VZ&5%Ys^O_ zx4DFgsHA6{sOENa3f+sE?}$YyW-52a0Jc&ka+e2Twko+h76fy?Ozv?BYgW?B37v3F zE|%U-sKL9BT>P4D)g3L6dqKS8uq;lIzAj<;CZ;3qWgssGk9xRVJv6>2`zlCAkd7O}syM%30 zGQbJLC>a=YD&X)x;S$Epz(kZmCSeqSVtF#=qu{BS0vBL~JncaupJ!q|DoKy|RIuV_ z-G_}<$#Zd{n&)FtaOvmEV3)8#D#>uds#TL|P6YUh;|Lkz64s=Wp>d*`VNT%18*;u3 zcfzVvljVe6rJ8If&;&99#3vfwZx!KBAy=&u3P!pQ^HVY^=7Tp?Lu9l|7!5Z0q)yc70=k_oXW<=m;{x`a+j@=U_GSot$#qDvS> zC6k=cNi~z5P@^P276zX?mrFrhf-w0q#R)rH$lsJjP z%yGh2s%EYec9vE(&k4OW@_Z-sQq4x5oYai^DUPOO8oWxEr` zL3d`$jyOT&`SKlzPd$JV`Q9ZAqvQvZ5MU`Sl^^30B|kY~HcECnVckl0Sr~Q}_FCEU zvrFJqnaRMvn8aEzPkwbtM0SJt1)9-Bev5fvyOu9|0K%)#bLDqCPfkBq_S$(8&iCOw zdTXd&e}LE<%X8&VFJ|gmyx)sc;C;Z2R2T>2S`7G1`72KFvS^h24dOF)26xu~7+_B* z_&27g$OnISRxp##^lEa&%0>HKbf>nFOiOCr^%vNdh?*#8=kJQLW@S zw^=jn&9F;yUK|h-ZE)f1u8J2L*<;9Pmr{7!r7-zi7_WEa=CJ@OIQ&` zuuPJiFd5Y(n-lvHO)QiYm(WQisUW-%^vi)mrL~#*)xV*V7L}roL}>#v`XH=4QQEp~ z-seT$DnGxfSnYOhYs!gof!jI>6QwRa!Qw576MA6bnI;#3_%efG94sAN!mh$a zmnj#6;0M1C&{!_9^JJV~YUfEfzYOQL6gHNQFnoexr&1`L0HR@4a=8;GqT~uEOjgO2 zae`}Ms9Xi&f%ACnb~X?uA!_R4J`uS(=99r&RoA#g$u&+`wUTR{Fw9bJO}fPirbn@K z2k~TZjg-rEF@SkkB-gtS-szew(N32RnKUng|ZF!!00t;eQ>4EW=BMOw5Dqp2&*7>$ zzyRx3Fc1JgxE@pG2|G_pZy|&1JQ@5+oZI!-LY|65sq!?=eaWdD(L$bqtskT(r?*Iz zbaP8ePfe0%&A=z|sq&l~DX8iBDkD_}!_WxGCrL73+5I?)P0p;6Cdm*tQW0@zm60UF z%)r8TmJEl1A9TT4l4S*0K+lqFD@a1Y2rEE#XGsnW%K@^Hu)GWL6gpH!xi$sb(N@a- z%-|S|iGdvU_zM8h{a(pfCmbdvd-z>_M1{O7fjBtZE9Juxji@@#`v1=%r*Th<6gYVUoP)5{6MSEhfSIt(565 zVH7-=kB}KAu?wzJ3SGh|>NL{{ld0s&Sp>q-B6vY&nZ*z<;O`m6`X0@jBD0-Pj;+TF zQUc~8rPRyWSS?>*<;WD}3t{n2 z&u{s|T;yi(UhF2kQCbGmQ_f{qE-}DXD_9B;O*$pzPM84RaA(M}IKd4iPnJ7jL(!}f zsfdwEER*;v7a(3YoU&wv0oJYH<(Lm=P^G*Q^U2>*IYeHKOP2Bu^O_T;hs$h;taQSW z!u-yWRZf_mlGmNk3-e=!yy1ji*h5W|H=WQ+$!ZX90>Vs|H7;QoJS!}gx13nzljZFy zr^+ne@YcG7L!@M#6FOl_S}5Dx`b6N<2Y?|!m5;Pj}x?ertFA?0VtL4T*5F)zIVbfN`8nrVO?A*KN?_1 zDEKMvqhzNO_MVbmPFNFOy64HyPN-4x3y8N8AIDY5uLf9?g5B=J?9dSf@>|RY*Giu3 zaS6j>mgmUtPFS^S_Bvr0CHtJvOUWM~K7;W&%?SB3E>W`I3Bpw3^2v|`F())>v>Y_R zszR#?oFJch zQVYb#A0IUq$uTZrU?s;oVHhRHIiUtqVx}B#Vc1)E$e1H1#3f2bb<~DVCF+Fn`sY5+``(&zJhKFj#r!$*C@37$pr% zLI5B9O-+}u!&P#+lSp%h6Kd3}p@m^jVgBMfB`%?plEzM$u#zU`LTt4S^-4ciX2Yy zL?=u|$+tgeJ&&0GdDRQF6W$8^sCI&IvSpyOSXoSQyrfOJat!j{$5Ka^=F94>u6Ga*;_` z5%x{_(jn%f;NrNCl1rShTa;WHbHenVDVMo~>8hlo6V{}fPBAB3o=fF&m(WQiSD1uN z#AA1!TnWIsn>=sidTv6Q-%8dyH^xERgFg42J@3%a`j7gt$oK2KOORNe?HCtK`Nw!Ngu9H&unH zM7PeDn_a^6mE7V4VFJ0e%87CD_c{$&c6ce`K9)?W-0p;9tWI~t31<2nxzobX36Cfl za#viU6$EBTgbsKPRkOHIK%L#(4}R ze0YE%NtFID?G=LBk4MFc*bT}6FJ`Tf4|JO~z<#32R{bE@(F%ea*GPF1#2b&@M1edN zmneDK2`f?ZOw0)rut3sX!g`fFYZ5jd72y|YVm=CGzvz?{gE5ix*o0F96w z55lmxXJyF9m;_TTS4PDpN=BQ+eDF;YmoODX87eQt$sFF;#+nl^j(J?b$GL=Il#F-6 zeo->P2?JwIpCq|Xpy9JnyGwgr##FUBOeKW57`moSQw=`jg5A4_G10VfT2niIxQmz8mX7Eh8@PUxlNbr4S_7riTQ#3f4Jbi%-xhxjw3P8deX z8Vf@SRtx+kQUmNs1#i1gBv~8t!IHC7*2R1jyyHHhA0c@+=7Xy|OV-DH6ujp?%uUJr zF$q%1l@9>?4wIcIAHt08Ft9(0>2sLZ#{kh*N69Bnn3$3cPS8BgrJ1tP2{nbhSA7cN zeT^BJC!e{5eWK)ZlNczGFaFb~M85n#J|*&%6Sf#pN@SB0R;^?+2%F5f`Ay_&GdVgi zzj3{dXSr;Nk;)+)^Q|DBJT~Xk)^kSEGd=EN4M(@vMr3Cn+}>@o>__p`5tpFN<#ObIN{Zwtm#}I$70J;~7*|OxC)6NJsT|{kjaG6jNVHZIC(3cK!%~8; z?v={%W-2Wfd7w#D# zVbwwVa-|_m>pZm^Suy8fQKB@4>6PMw#qa9?X!}^Hk~5t!cO^}oFbzBu)&`7FXx(?g>yLlk^p?{D)E|ojwCx_-l|D4Cj#s%@lTkzggL3CwG(S>wxl^>OVIpm zX#-N#?USS}Z0`)L?5>(9H>ZWE@xd?y(qHpDW}#1FS{C^>H61H#lKjB|V%l zZYD3D8$s|g9jPbFO?IA)^P3~yT5hrPB=B1!O>4Og=eQ^EBhX~&8HrlU?KsDe7POW- zs${L@PB&QLT~$VFx!a9Yl-vUYKm0eTl3PnJoQ6dgi$J3EHdB|$Jm~{7TB1>WZ&Zv1 zCQ4r~W}8ubpWEhszscE=kUvmWtoDO$(;ejxxvhUbdxks=+plXbEfeGsC+v15{Xl%$ z;o&<|9tFUU-Z_WMV>s36z&STu`or{yl^CSq^0*TfY^j(l1KfpK4VQr~;2c$#C!DB& zE`!{KX$_YrVR}wj&I;uz_h7k_r%l41!935GXI#QOl%zXhHA)#BI7`!j>t%r@ouvVVNY-m+8BpvlIw&cgPUNsltiCN@PB4A4}Xma^20OV&XaJy1n1EpRkW3*ux%M_E9GvaK)K9~R2a))c*c0>D3uBT?K#$t8-Jlx zI^jf7vLfb$y>zL(>=HUDdBq94PRXkvQGyvM@|xQ^L-F@O;vRS+%8*q~STT~zl-EIQ zoVg&)lsDoMd|xC}-gLrL@VuNUtIY``Pp5oYQx%1qkP3OreVB@px1F$RC2RlFX|k*{ zzzGG#WO>JZShJFMomiB~vfc?bxb5f4dmv#(oy9i4ZzjHtM)L#LGc&vb94a4zco*OW z!4mn%C8&h243@~pRT4hT&6H1E!djJVFo|6a(`2Jdm@2-ClPRA%p%ZpyL*+9kOh(D) z7KRdRBs1g-1B{C`rA)qzDR5;L%UAIrN;buOaEWBeW|uH5zId7;UxP$*rz}mrahut~ z-r}|{#zSRmJObtt{s|N(%w5Sg5bMYaJb28P?Qsc~$a%6OPH-Q>@2G(As=^zwDg6@pH_|*J zhj4BS*d=<2Fi;X4s^N0cf)qqO%#CD}RCgl~XkGFzkc%0w`j9WYM z=qD%Ic}n^dQm0DPPfl_p1s(~eN`|U#oDw03L3R2SVmxf-D3{@jHn0;eYB}3K3&XaI{W|gRqG^vp?207c#lhOxB%SdyBoD*sKODmk)3>qMbk;4sgZsgEk zl5nowkeoi?21$-o{UrtGHqQn~YUDCdT6;lqdVfiaJO)Y|FJOjk-AF}>=b0)c{XRM0 z3zE|ZN;@}F5bFX{B}3KT3sMp5LMuo@!9`w>0{0GX(B)z`Qc-eAm2sb33Ijj-#lbm= zav9Ej1;BkZS2`NtvaO&~3}6Ytmj?i%4V98BVx)2~{}q@kop9a8ooJd|<%IVpJj)kI zXD3`E@W*{dNf!|OXl^Bmay8DQMHO~ecd!ssz7#!6gi%qz6cpT}HCp=r$FwZ*m(CuUryu_6W=sH@BH` z3kYWwz73D(UKsen`Uo|Cn*!$=9nmVYQ>73t{cST78fyJ7(Q zkwtR10X9&9hMhEI^*F(=#u@np13L_5&elTFjy+9_KsU1}ylVEBk+LQvB4BHdORg)+A z08!hN6u1iqy*yc_RN1&#vt?@B1KZ#{dC>{G8<);RnO5b4D=Ar~!^TfYGDBvVsY&89 zdzhXSR>iS06CmoE!el9m39y$el34(nHEYCfJx7X7!lbjf6`vjRQBdMOkz@`?R82-} znHyJNmC2KNaf1E)V43fPH7j`uL?zC(QKiq%ubf~VY6RY^BDO6 zmRE~qV~l(VfFC}k(EKP?j&GD_%Etgcw^HO2x3D;;$_BUa2|$W$bPJDZsq!f-{DkXm zrhI0m&XAe%c~pvv6aO9uOzUBE=}h^u%GUC)VEfp%l1*-5Y+K1@x02IaCCk@UR&rbU z1{Qv_?UNH_3(lkY1AA-SE=rbfVOurHNwUo?Y!Q-Vdt6(VEIZuhP{97qZ4LzN@7-p< zmbaE4+@>D(kFb3p@bo`TegcRt2_-w-g&|6lWtZCw0sCjzo-Y24PgwZTYdJSjeswXO zVefXE&ai)j?bj$inyHXI0QiA_8@?_29p@H2B~kXeg|SVPeXyc_%ukg+V22eZHBtU_ zDSk;2|GuYN_+7+AIRMKWoyF;U5FomCu#)3XT$+SwV__(ezX5zcS1f8R|G>7yS|`fC zZl$EdIs_}au(6FPR@W%iiZ)UWhBq5)@?1F#zy#-WwX6;!v?Z~%91g?kf>pyU)OEhp zgcXe!7Lfuu!U=Q72o}nbAV>-GPgmljV0z_PH^<7+0O2Nmt<No_k%!ug3VN`a`38&sX-Mhc7sH&S8Lg<-93l`8dM z;fD)EDm&<87~!F^k(`2a=98S>sFBpSf~53Da;g>Jypc4hQZy`1!u>7FlS4or4!bznsc0RZeXJ0v+7uw@qBtni~%$$ zPtJ88Mp2RkVx5)JT9T_A_-+<|{J;R~!2DV$sWE`dp+s5(MAw^=G!XpQcqB_3x7kTq z$HJUXj^VvI=PrV zz9>a5haF8bJiisl6;7v5aS?%fOI1uAqt`*ASNKC zf*?p3ARvtbq9THXh%_oC24Z*XV|P7vcjtd^IK$rW0o3>X{&k(}y60YN&FtATYu3!( zhu|yt2doXm5sK!XBPQ`LJvns{*cD_PN3n)ESUN+|G#KcW1{u$%Oq-w+K=Ek`6!3{4 z{QK6>CzJTjjiIMZCR1nTmWq|h6!7NmV7pmFT&RW_m`05&t;4jDi$`{Fx}q`mYsge? zl}3#_G)+CmIN_O{Pnkmos3$0sop5L!MZ7>7y9+XtcvFVgWOK+gzN1#8^K>$uPw-|g zl*|BWN_L^dhhNr;3?;sNCqz{!nMsKbh#w`oApRhYx6KdxJTi-K#v9ieBmktT^%*3P zU)GA8L1s7WXOW<0{VWoUa^nqYN6sQ4l<0tj^1XB-7mzvBpbNv?W`if0$1iI~dXoA4 zvKGo=v;t!Yr$h&20VTR15g^TTh}DK4xaXVkUzqT$4Z@EHu!WT2e=g~eXfWnRwIU~y znC7xAiA9-zL$)N25}im}5>JUPNCHS>(|Ep7CW(~c4!>TNFa--hKZww zJKIXgVya=Hv4IKoWN2t?VJ9dgDb$5&1~->YQmKY%rqO2!)iBL8YSN&=r|IxqrAwAl z&a?u)44gkE+D2qKSW~p(HApE*r_MM_GkgWd*??qFhHrKa$V$raZzD8FCS~|v3mPN~ zta)B=znNqeG&En}UMfg7*QHUD^PetNB$w-g>{~_hpuwl<=1O(RYLMongrAiMr5DL( ze$;RcU%})Hj1K-e1r*I4Yt*cT2A`%T%e6@%mlx`gBFdTZ11|>WkDrz{DFI`m1wZtn zOG>E;KP8||$|ytH)g|R%_%I7!i<#{T%C(tyBgJGL>usn{*0WYjy*AmvTJ?2EC0Ns> z=`&4Lah+rJNj2Y$Z+sYY4Jgw^bVHleg3#I5CL1Zk2a8D+ zjhfBS;KSdUb;%aW8xLZoWGl;&Q1wYY%k`N(cN;hzJay7Q8OBSUY^Mw(q)v8#(W%6t zAdc*W0-wftYFMmCc2SObVfb#!8#}8<_JB9twuTnj%O}XfT4WzcV<&J~4YHrsYfSOF z@cm#L`JPHIYO=YQeJ}`1#2EWJl3X?W6(5B8$wxu z9H$P<4Zxv_oPegO%eqG7WHT|+BBwz3;|9}dFnpMyz;hA)Y5>b|rcWVf!0Fgw+2oM3 zP&7w-oTnNllQe2BK!XqeGMVHe^}t9q;N^b-xkNS0Ei`H_Qw=}S<&i5? z!(3@KbDLM8q20p~ay_|5U6@LZn(NRsEh`OOasz~a^I$i@=qPT{C$~WHX%G zpLC`E%-t?$?84CC(|A>!ev63+7{38L2H?laIaM0)imr%=Q4KEIq!DN9U?B8~1bEXl zP9u{1vR33YB84)48mAHIX2TfL4dupO;#ckjiDbWGx4Z@B`A(3M_=G%bu;qn}P(wF7f0TW0+mgClRNPqC=X~&3H5gyer zW7?>Zry6FS@D8(-44|#Rr(v-nQ2=KK0)MDehYSSaPZ5|Rb!93S>kuXIrYORECXhj_ zxsfY_H}@xn2}70U3V1`9O;l-x#%~p}$>3(QIubll1I4Ft@fR@juMXDSV53F@8vYRC z*)Nu8QV%BRikSSM1x-^QamiAm4N7B9gXnhn`O&Ltu zWDI4x46~;UPZIiMELh|1F&*1vKpepFX`Is%=G$6Fu;wvp)Hu;9jd5&9#!=2RQEW(@ zDQE13Mr1tYj2(Oecyp9s`%NJesRvUdSBFfZoT&jmnR3Qnu1ltXH$|l`bJllZ&5hg@ zyt&H=!&2e~4SyIFbjeh%9h00#+^L4SV57zZ8hjeFC-#6$;z?bYJ~V2)plO;xU0vc0 z!jC|(X<*GkQ>;&>)5^@k!t+TAnZf$&s1qMBd>ThRhk0D{0BD*ztYJ(7S!X?6GMjJ0(}5ug0%`93Ha!x| zy6WnY5U}RyL%5fcP}U#gUrgqJbL<2Hxf9k@=LPuM7{P z9D&YczHpW!cW06XEH_|ACjz{=Pe?0kNhCB)A%X^~NEBP4kuRhbn88U!<|fh5G!2fC zI*9?{kEF5=iKPsGW>AO3fi<;^g{?>8L7N8)Jb}w&jYuNP)tRwK0;hpuKo)^9jp6SF zGS5znsS#^ak0i5IjhJyw0cX01*LX%Gl~3@W4UNbWkmiWT+prBJ4VtEnI)E(Ym$f4U z$TEIe3+3e~GwtE*6+qG{(E(Y}TqB5NG}j0sE2)!qWDv=uL%D)4du){f)`NE*z5Gj zS}rfd&wzvTuWq1EiohDL$JDMy1yW2k%tCF{lu!-RBKE`#QVI<|jj3THvzE)K3lqIq z5$j1gN3*Slnf3~3nv%K|S%-4txa&k(k@b}5f^1;P2vP~ck1RX`6q72x5#P^hkZRV5 zeru2#z7bEH8l)D4f0tkzsVj3&aIK?Oe0QipHc^ICga+A6eKB>+!rB7fJVIDlE6G-> zVa5ZgESuC*4by%Kv%I%K!w;-+q=6Eh$YEqVNYgMlksYjI9N9^UcBB*8MTu_YIIHnqDg& zdC50uNAk!kepw6U*C;pL2k#C};&1qMkY{=1EhRc2?M?W3s~bM=tMe@uaxM5d;@9f5!MWkeCJbih&lKF0BxQX zn152>es zQ?p?)k949OnS|k;o88e%9_a$wH1_g5(v@#(yoD4Z49dSKj3Rtbd~3!dqO1u_j9U-? z{}8mf^SL}C!8c*7n2P$I>xTS%n2zW9s$pp8voGMU`j9lYtzd6uLHw`v~g z$*r14dV$g*(+nc#YQiy>F#%z&s}*@Sri_?^HC-1>ftZ2v0|*-wj|>H8F02)4 zPR#kPOrMY%EkK!T<9h%eu>|2y1(;Q{Nu5WA@d&;7elQSXbh+iz`J7TbT#2=*bBA8odUzi2nG%J22fbWQCHzk1} z{Od8l`&3J2^A*e+%|=BK6!tv~jNRooqM>0c&d7nuMav3?7=k8?&0s;X5*G zB%jRX8ygvq%mZx-2%Z+1&-Y|DRxJ|7sh2~-n;q47WB~~O#&872_qfeQ8!HmYuZMBw z`I9J?jddmq!SHGN0t(Lqxg;8t=>V?jLSk5Fo(qWuYnnVa634o^k$CE+9qGm+34Ax5 z$SEWd<>p(@CP|?DS?1l1$tH{VX6ELxFE6HMoW7tS$>2>PKF^b+fbhrHN{6KKP554V zG+EN@H=0M%s2`5_qsh`{KbV#^`? zR!}#8pY3$$Ljt#T)&Vvg+b>cAye?*1SO&cM>{3>5plZJEnLJ=yvN<}=M-@iLkE`Ek zwBem_S!9awMnUx^=~&mq%eLq^v9m1W-n&-wAAj0v+Af&%G$=xS#e;by8N$IP#_aoaGtIv?%*CwqG(pY_u-g+1GBWMm13NcFvG^ z;Hl(36&nc=de=qEv9x77LK6Q>ms|t8tMY}CrLEX^9GSh^jnxa?RGKy!?F!uuuQ-*+ z>S;+Ral`xUA+Udp959KA2LTb9{(NSHKdTgyuv+7V>vlMqXD@Bc>O1UTxl7y-dd+T9 zcD}&Z>&E3o0aeVizV-ly-2K%z4S1yH)H=jb2fg&9j|H6i=N9JSxiAc9E_ ze~=DaeRA+yaHK*Ejj@F$wnnC~k%9A)w{Ln6RIwBwYT#+*5woKL0HiLlf8|F>o z%mel4biRJW$4J;qA33=t0QX&aaXSS#z<8El4)p^6X&-qA^FpPQL;sFpJjz;PXOE4C zzUU)OuU$VPfzwXsO?Q8O@Pz*0z`_cwJ3;9@XtJzcChRij7hInrXoWs+tY!R+R`f%6 z&2dd;^f-$2fdj^=i&;DQfg^y@i_@w&>!wTCEUS_j=ubGj|6~GOF>FlPELyv5>~f&1NR4{i zc53OWb-|FwndfHxuF3~DvHq!aOyaIfVdID2t{QSwdp*^*jiPfi#N1Wj zUv1~;j(Hap(T2~S*9XFWwS&i81E9h!wdIIo(Rc0pDk08AZ`RJAWDlGXb6ReuU~NLg zJlB`zpnb8;qA%pJUc{!H{rO#oJS-Atko*qIr>L${&g3DepTHVOD*6w5%(O< zyh|KV_y0H<`cZrLcjm;E#O@#ebRELB(^g61o7!tV)Tbhmf2Qt+Fl8)CuGJlSyowOX zLjUJ6t<0O`!Lqz)#HD1%PcyBtE+l81v+{8PmRWQWkKnX(O#8hb)`_IBrKDFHtEVN& zv_v7fT+058lA&M1-m9^GlKO|;pUg-5J$qUdU|qK*lDUct!Z~?D(sgypVB~$tdOQmZUz6uJ&An`lF-$`XZjBK8(NiD+jnWbUBqclH%=2H|+;BGZ}jX=RPV@gK{s#OrVTK>G;dDK6dBuj~9oCjOOr) z4F}x3IeejIr~&pdX^qRJ*U?`=k-nDVJOX(^T50D~BdmkJ6=~UkdHIMJ>BChQ@)2*+ zCJ){BaN@Vy#tZf$7?*A#B+#4FU)p}Rj=#2BPlP?I()G3jaQM433c~=c1-m{LfKV$c-H&T7Dj|fWl`q{f?B@@#9eg2}}I8Suv87;2HdTC3# z56-_yaGnvA?pMx-=HV}FbPp(>6oh&1ZZW>t+y*$S+YKJ#ulvXuSFM)-rQaTUR}Oq1 z^jZq%rtSgK8Ot>VTWg#5SoL+6dVkj5W7k0yr|}$~y64VXq3p4f|fN**BJc4X4_+vDZDx{jnIXl<~53?$OHiWeRUQ^N`yD{gwT4<-VsA&g%|DP&dzX~U>ZrD2 z@AgPYDv8zimfxCeoQ*hsxwqTFD0 zjfY``$f*jcUgL~|+?-{8{E}nLd|8XJ+6$*Ov6zqhuBRn{#BJ^M_U#DihK- z=;a$v-}ms19t*Hf2ufesw=0I?9MV^|L!C?&a7Ri+CeGu1ukY{D zDU0>)Tm7S6hO<8UrR3~iG=PwPN5i`=!agi0{jPPsbPIWfO27S8nOh1dW3k_4ZJQOG z{N2A>ZLtKNgZd|U8)Z}i_jN2d$T=s_n*EPz_U(x{?0>yXSHqoZTVj8+c17RNkN#5E z=XSt;L8brCi82zBl)E&`>lMvqBz!$ZgeTrv2{7hOf^v=C^sv!<} zBizD#aW43i@KW6dcrS$ilAB4&oH*s3-hZZAhpjFDUg+&7tZ#W<$pgh4j=tc)u2Ag1 zf+9buR|g5)r~HrvM>AK}D*tNf!9-3x%RdrzzJYuwe_>N#J>o`w*%XH=jPu`$d{lQc z*(t2I{0|{Ft0S-_w5aGY%2pktMX zgea()WX(oQ6> zDol3P^5)E=!j03sn|+{9P+BeP)pjoi8dv*|#=bvL>*Ns;rqq`m(>0=f-*vs$iU~D5if0t(!e^U=uFnC^sp*&CuiSQs(2@pg*+=L zN*f}KtkEB(XJWkzIL~`Z)mGadU_B`#$@Pw*2WK5N>-X@ky}^2+GAMoP;eDLvm_gs( zS)bwLu|Z;|%XSYVWKfxM!m&xT7K_SX`c)2>CPevV{*Gasc9r$6cZth}K1lZ7XHFhd zHW!*Mg8cR;QGUHZK}MeSQvSL?(GBZGxqP&LumVs)Wx2mPFlVymRGhB_MMbsK^^jSD zT0&I1sqJ~fnKzY3n<5)(SwEG&n{gPl6Dy5IJh`*%e;7?iPm`KqL%fkX0Y@t(fc?T4jy!0 z?rAIIpf;(Zb~f??6}6`(6^6L3n$w{rHJov8w%hM>^+aA*QyO6`gZo#@HnaOu18g|1 zE3ODk?yTAu>rL&Mw&-xozuF4RUn?<>ZHe0Fd|_9tKeaczYNSQl^7_B))qQf(E<57e zQ1`iW%CK*#zj|h$gM6*NVZYaTtV{KTz*BW4z{UD|yTgx)`r;^=xpOFk-6Q0fln={k zN&VAQhtD#wr`^5ehI7B5sHd&!lRZFC%W{p3J&OlTB}8M|RRYoTVQz=9tezhd8^qOt#-cmT#vW54`Og;x5dVV`wbw+rkGkN1~rWnZH02%^T8 zbr!cd`AZZkVTGBMgG#QC_qM~)~XoElE z?{1IPmDPRci%XYss}sx37>& zgMZPPqFGG;uKK$DyBv5&a&J$JzxMrm4+pLU4nDZ|Zgng5Un#g(%!S>`azdxyTu&z^ zyF?Co^>0PTNzdt#8GhU=K5nbM1@OwHnz1^-(ihhpev>D4+&ou3Q-R-;{3D7cK&uCy zgS~)35iSj=r(<^iw0R0}#?Z`;W7*#5Jnr((V6@+s=-8SzR7_*7IwMY28e-h2=*}`* zB8~Xb-L-T2#L2+q>@#6&srBzsSK-Cs%h*?S)Ami+mELweUCG-Cy*T^1?&uK?avNEH z-Mv2RHzc5)+i&J3Ee38rnYat*L|sQCx1iO8=#4AN=(CjdrzJgwPA*$rVee30+!Jxo zmgs$VAO03`uXku+;%LtEpI&Ilj!nsg=+}P8U1|(GyKnj-N8oH1pM-(XEq;y%oSLH`a?s@V4h#h}Ea zd=L6z(9zEB#tcC#^vY@@7PRs_Xb|DDP;OQ${6(Ear(L7oKd-Il?1!x9f0m4TD4)3J`JXy2GY*i9 z+BBLF<1L;V;mFH^Vm$ooNf%AnKWmG1M*cFE8W!e?{gH~X_JW3ol9a*jHsnlr03k!h zeogI+^U09H32%gQfbD+-cC}&s1WQAD^0IGWKO54yMB@S{uMN3+EurQ&aZ1}6@^jMR zfp(~G9<@PClxhhv+2`T50{gUy-M**+$g6^4(s9aR9ZT5z$*QS{vsM${c>kIz=p7Y* z?$HCrJ$`Zt=X(=f1MBUayk!#Qe9s&6ZnAsjYfI$Gw!|dl>8SlUKTt6lxJKrc0cCBY z=|tUm)1?V9Elt?=0_)Cn`j^{>k$zLj-t+CI(9x|FGZC24gn@XCbc7Pw#2 z5WB;dT3NSdH}o#LO(4YV!}$*jab7UH)pcQSKSp8OAV7I3}`;mt&zu8aw_M3f} zZK6+8fUg+SJCxTjfTRltF9hwh& zLd@(F=|IanBMTjYb4?0gApWhc{hPjaUdwt^GpzoN#S_Hiu+GJY&tpFx7A2DDjQxMu z{t0hF!hth>O}@GSc-ec|GsM%dc(E>>k#~me?)h>J^3t%-O^VXfX>0#I4vU_f{%90i z&-&k|2N&Xgti29Pbj3N)dcX|%{8sXZ^$a`fZ|ZD4TCzU2~f{Vsf z`(yvGo^>T-2kt{qhQ~~tue6Gg;WuB$_i_RnkJz;!RM3m%!`~0zC~d~!Z=hevdF7Tb&UH9|gWvzRzrudULEPT{T&jQ`B4J~mm2 zWi7pIbZ*!!S_^xk{O1X(t=Ro+PjBkcQcpED4z|Bm#xV6aJSv(>i0#8IzAodal||cQ z@=n9GVNXiFdohsJ(~@oBn2~9juwMx6b+pWg)+ij$^ShRJMU$6!F%~tRH_XMmj z+fzNSDM$hPcFFyL@v+_GIchid726IshCj6B)C-*Wv^V_!BqN8NZMUW`AtO&$MV>@n z8Y!>(-6(^tHB#66LRXysMy{W*X9411ECwKFPar_*fJ0CP;d0VBCk38c) zV7&e$cGdfM_!Ha2?vs!AP6uH7`3J*NTh_9x*Q^-RpVixizyGvR7XD6;Zzgm4XE(`R zY7_cr_pjgETNp39B&j*2$ajA$cC%*uGuQ(4ob@i*As*Tiy9Qp?^bPO}-0?Ya9^YRz7Chfyp3AN(=AuAoBI-DbLo;3zKtG}K*IGP(jkbR?T@mYEP)6%ih~tkzlF`zS9sRKHQyCr5<&-V*<>*6)p7#46 z`Z+q$xqE^;Z4K>2k6G4b2Fw4pG)COf@*mEAJ7!Af_Y$q_dt+iv$Mv)(WK7{HAsytI zG2w@=kMIXh9X&}E=l(I*w~w5KbJv(I?Oalk-^LtTb>S=KW6V=omD`+g8y#+tLP z>`Rh%B^R;1wVxXEVr>q~+bY@jACc))Lx}wqn=8p^-~LqM7++6d)_^B-qJZ^wrtSlQ zN43AK?F!T`-E}@07^bLKg}iFNSnjHzc^gWOYD&)*c$xhrfHT3wW2><8ks5CivHq+ zIq8w8x3H_3I?l;|5=WsG<7Z;L9ZROXdw_G6WB2!ph3JQ)knA0|eBi1Cwf(b!504%` z)ylrvR{M@atv!Flpq{zO-mArgIGs5$;DiD2SAOSnh$AXax(2I@IrrhzMD#VJ6$Rss2fic@s)tpH8R2pRV&VDcE`k#WlV=TAl6`db+n zd1u^!B-CqX)qOAW^Ej)65x=lb#)(}Yfqz6v#!Yr`I)Hf|7rr;56Xsn|#ubhFx(er9 zD$e0+{ZiLcMu_v>Lz^b81%9~lSQL5NS!40mm%^<5PbFtt&FAfqf1S&}+U2in+uM2H zsP^~l;Fl78>@vR-&fn=Z&+x?0?fQ=gzB+B>2Hk zbn&8dSTD{CROcsSyr_(qn)Iq1@z9ox-y;8Z@?1j3mz}+Ekh2d^|M5HOMhxS@zJK%q z<}X)_*Ux?_H*BgB975YJCLg2FjcMzXcCa#H!orisw%0$1M zc3H^(6I~jvnx|7OxZ7Fzdd_;B*emJLbO+W>OA{~L^E1ey4D})}FO5-s8sdKb0n}4U#BHCS=lQiVP)q-E&ka4__<+LtP@ER;(}QKBt&1>amoQZ>C(n#Jj|U-;(5+Cyjs` z-g-DJp{@MyI7M1=SBMAN3l-}lf_B>ymyDY2QF<+{E|tM)iSr3@@t+b`fO&D*AO86> z^0Z5|d8ReaRjyw9dQ30}PX6T>Cc)Nsl`~u@jCgnTcZf`jV)bp6Tm#ak%Id&>ySGy; z&S6wsk8hv-U<73?(RFFz71M0gd(e>8fOSa4H8@{uIr60I>|?T8Tfeb)TBz_4c`oX3{51TxQdjI$6?)A{1Tnz1G{PS>+2v9n>P|X!6HmILf zS779_N2{g*w|93HscPB2d+&xWdj`Xv>#V;%&>0klQy~S>GPkDfjD< zuLQ;8>Q+DB|02J5$}Z}$4EfE|Aa|^v8BqMiY&FihqV0PIDTK(?QpTdE$XQ_c!ND&ll#8oRMz? z#ZyLX=(8Bq54D*(v6b=jESbBY2zjS1@!CKBpwLi4ysm2YvR7!!i`9EM#7Iiu9N?w> zW{(HfkJr0Ly+TTWlZ~>*W1sgDeg15AKI`9B$$QWSp>q<1crX9(A#gP7%dWi4@@y>FirUoqa(V_r>N&N*+ibsa(d^m5bU%awxKw)ynA-*R^a<9chxJQ|7E#g|tQGP7g! zAqzj?=;R>b8ld~|`I?ApL76$=uE{nFRy%W`t(6{U-OXI;Qg92;6Eo-U_O_qGw4;<) zgZ*XZ<*nKN8Ni1_o=n`p*8kg*-;-aH$1AelelDHVCZ-bN_q@pDCf2Xt_(#!8O@OCP z`Wcu3SNrO3$GG^3KUsg7Gd_OX$4h%JgMNq4{ed`7``z$XQT@&OV6WIz^4osi->aI{ z`dJU_K9H0DSj+EA{>2`XequiSJ51=Xp3@$!a178`2DTS zdVcHIJ5GL|Ra7M>I|J?XH5iHi5KRKC`#FiC-GHijp`Q`A0qftE-bUUHaH=Reg?tcD z;w5(CH`fb@xoB*G^OK+iys`=(hb@Z~2V?*+g!;|oHu&H}Hz zx~GHj3-pmVG8OBA%Ixs3;&P&d%vR4^wX_fLSoy%X{=lQcerggx&j4ppjLYm#gYE~c zq_tR_9nmu`^f!5e^=v8ysa(Dig7q1+!dNwOIdFW<%VMktK?zzabar>FpqAx9c5)`} z*!QRe6w$@$KZ6l>ZAq|Z_jp5{wybUILpmIC^T0kPC?Q8K3Cj)? z)Z))Atrt<#!Tu1Un)&t#&eb8uQzUG2fX{>vzTvFHkeVWWO~k>UBxLi*$-8@^e)qn6 zi}1V_l2viEH`YtY{0H;Q5g#Grr&%An0{}?+r3i*&qNOXB( z1E>F?n_T4aKafeN<9)kooM%FF?uBH>QE%{Lug2W)?YPby*$Zy#c)-P#rO}-IV9s+Jk!#3Xb3|WlQQ(XxZFz2xc&zpu z$_SaO6J*mD>u_%T#gG2|fKGelH*w~f_59D$+?*qwM;5|A<^ANt*q`URY=5+wbKlf^ z?$moxd+jLuGtQefZ$-2wA@llve|p>kc-m^$Pix@Q+JoK0+O9vZVBwX!dhmO6XTp8V zZxYFRk2-PUHB!g`}w&H7`O6R2+r;EgVaZt{YCtReJqqd zIiHX)U6}`WYiX-2hFOVEzG(n^k@@jQ<2d@8W3FsXf_{q2>)EobzO7Q2T!(}AIPnuE z`*lQo5bEpb$%!FOsDvGyt@)V~PhmaphMvOnNLa`}Y8OXSFYtduZ2rYKhCQ@Z*{#It zX({~8tgZh-AAa!q_Lnn&!)0vsN`PvsJ8W74Tv=}Zs0ip3CAX*-t@Za9zDwLBozow| znhORc^QK{+Ur@5o>4z)O%<}2waA5A&@55Yx8S`F9nG4oxn=eq@6ZNT;cwOKcVrqf- zSkSKgOBnLbf?FB$9|QnLj2#rSf{=(E*RSnn&|%ljJ)CtIG5e(Tc=%C?=sPIepoX%R z7-6jG5HPhB{lL$~O1^0S>T&Ho$d_$NL|U-d>S*|Vkm=P8c{IXg??p*rLL#>Kc5ndb4sL}%1RCFOOXR(?{&cXrV@4ZSkPzA`iy$( zd+DVgAyEoXZpMrS`sc-$Vt)QxiMlSjqRU^@i+U^~rmW7k9+lE@l0D)e>gkWS;fTMe z8+(f_(C?^SV~vI(?xQ~H)e9rPL>Ux)dbE_Sx6n+lx-6BDh4b$J6NB}(u-(GP9$rAP zX`AkDVEz8Kw9wxv(9jX}Z|_i7@CWML`X-5U29@Xxw_~cDeI|NC<;^JMXDZSA64y+C zJ-YJD@=gpkI7Q?jUq|0 zvr>7@@nbDbrRY;e-?~V{Z-iy_jaJT;g8qNvF=sb@{xF7+7_FVdE-Sb6j*&2MF~$B) zC1&{X59iD&Lp_z-*K{Xxcmvs=hxHXRVc0_(V~)NeqT>uFmJ60*=Ja_Mhk1^1|8X%W zo3+LiSUy(8J{S{p*;8%^@a43!=V&Lkx~|(l$a}F4$MvjRS+B7xU#{FcA9j)R5|s?)YnM^0eO9+}-wFHA{rZIbEhq^M`sebok0;FkX3!7!op3YMXaw$qN`j-XA`zjC z#e^xBkA6j-Pf$_*zQ+f+)>)p{%6^{k;kB>~)HF6{7Di&KMM-&`zNoK_QcRV+cjI6kHp+lr`>c3Nz{E~Qq%(&v14&?2ynPT=nUlX z#4SgZ3haU22j(1E3Y?{M!whkmsMANKc6rO|B)vSaz^1kpy?oZFir%a~N$C9~(LRJE z-Q77Oo5$(}OG$S+EL9%GYLhNG^48+{iAvJZK64x@n09&u#cTxXb$fUd?`@NgMAV$r z0fv2wor(S@89bkmo<(c1m=sputz#?a0_u^p-eFZuA!RHk+2q|Wuw}VmX_5Clo);${ zEPAkg)*R%uMTf&5OX9upqVcE3oX%itElOS=a2a`I(eaP{laY58UDwgOHi5O%(xQdh zksC58BV=(*g*90M{5N>kpn0rbu(UW)^F=-OgT-Z|Ty_ou&Rcyo*cF)lBB}F0;H2q1 zYtA|ntS`tHOV~wCm`F%+aK(|1TC6pBbyttEIG-e|ia!5{ekQ-|+PNq8RY6HkfAMZA z;y!uctBWD&tTkEEYyU^go1i3Le!f}O0{)YFy?r`X(AqXncHZAxR1Ec=Y7IQE(b6v^ zWl6~oj7M9Na{5G&P%m55x%ccdr?Bm% zjud_pfqj)q>Jf2?<=DqkXBL=Ruc2BNQx&fUcSas+OH$Phbj)zhS#l+O|1?g#QU4`! zvu)GDC}VNS!<4w?t&B7ESR&j%`6%-&%5LK-@1I>c!#`3yZ$} z@V-q@mVA2?a3A?|$^C}SRT!To2ZOBMV*M;RH8*Nx0qdQ1=a%p$JwnoMH9YH&^XZ=? zZJx>=b>y$KK{?B$un$v7YapLRIe8~d?nd{Afz--k+O3^Cm2gf;lQ@un68p(g52YAy zBVeJI#=0)R!Nr*lt=uPVVd>Yx<(jzPrNviY7`GCaOHaBcyu$qm%2LleThBtjtZbnE zn3=%PbMmHG*UQw8j|sp$FH>1uHYg96(xYP6YPR;Wqc7t2j)eYtWRD=ua|Y}2cco=Q z<2~PV&Ns_yLVq3~(6a6_ziZv*OSAfAXB1a0#&|8m?@uRj=4YAEw1B5&(2K5;R|Ha7 zwp410MgsH&-#;m0zgjj~;k-=NVmzJ@xwYdTaJ7=?h;T`;PNiTe9M9$=flloO@Pmu_(F3xsNvM3;VBGf%sV= zGBR}x;&;XK>z&f|fu~NIX$b?xzIOP5_*@aCqB46SAsOPy-xHnL)-qH*N{(UOWY}Hk zoZQMeC?m<_?ILB?pO!K#&5yVTp`LKUW<$hb#*PKYx8?h<|zB zEE$PA)gMPde{0D%6YK{WpJw$j#eE6N%Jr%Cqj3(Vvhr)cA)hfXg0gaA@Eko)R=aXy z&kf!~ST0yvxvS#g7H>jUz8pMN+XGm&dC5ZTn=2!G%Y|Z}5R{eAe0Pk(d2r?P$EH8< z9JI1ZzwcPA<4oJsE}s#vnXe3#G@XDVepRlxuT1TbJC_lcna}s?oWZ{O|4TBnM7|ec zAIKbD9xbH?bQ!BRNE0~TG&h&?eVyR-vPy@|UYsnbB_wOwuQzWqfN8>49#sHG^s|1B z_|B?aQ}45ekX5Ja+huar`>Jbk3Z1$`|IRS;3ika~-*oPLn$EVnN;E`wdnLaU^J&9@VzQ>~F6-o_A@fr<&|Xp}VJZ?t|(n zX8RbHy;(^aA=$^O!lJP5vop_Zkw{^1aE~dRb7ywcS1bLH`1ls2QYT2)1h!+ z)WA>mi0>S+U1~>hF3$0EzizH5O29R7bL_k0d{S-yLvFN-}C!2 zn9u)Ja+R<2634jaKHqDaUCOqStEss5nk)3v>h|75KFQ6@%CX-`~VP*&Ufh)4w!vbx*IGJBj?R$B>GotO)}KU%pL=bS?8t&SNn z$_D*i{kY7*aW>V08!86eT@O?)%8H-F(Wg{SO;Y9XE54(vTRB&;9!;hEL0Xzuf3we0 z|NQT%n#+-=1touSzd92MLh{|NXBZ>DwiaD4U0v=xM`iE!*w?g3oXEupP<@Z2N1fUgidNWjQUaxv^v7yKKr(Z-9AB;usEpuK3Fdd4$TEbEDi} zbJoF{m3c#!IZ`W&YoZe(W*eeCxy!kx<*dG~(wdwT4;wh~w8s42rowJ*c@t7_zOT+^ z#CgHAUXDY00Wa>n7-q@(7hKkE-_C^Pv{Z1dOT;nk69o~SE{q=vtepC#eKobRSg@>@ z$iK)pRMw{L%$O@j$l5nz-;0p1{#MpHA1p4zIeBe~@};y~w$|Eib9B3L`nUGbpz91EI^_Mr{S%FK zaJ@qLj%H)C2r2S)%XMt!`bC?bE+30_i|%N6Z=Kn))gp5x@0%F!qQ%Ph3UDqLl%h~; zW7$MjTXfZQV*}Pjk@&ROPJygmuv9ekc;9O5&qW2t{)xo;D;iW#e;@Nz)T@6&Irbev zDe~<&ZzcLkrO3~1t{3Ndm+FfjnNEAvhcXt6-+r!N&RIvrZ~F*2ND)$;I`qeKtf%5W z4Y9qjzZPpGf9{C!Egt*GS&9?q#k&U{>SV>X*H)=G{L0waC_+kP)}$T6{!y~yST|wL z{y^)MlxSXiz83Z+)n!E`RQvZ>QsR{+Vu1P&t*f+g9xL&0Uq5}U(~`$8 zqK{)7OZp`ix07u9dL>EHs(vHk_x9Mn2{@mY^nCrgJ@%gx|IlTRa6T(Z?<2FemGdWU zvE;6D4;LNy=@!JAh*K>gr6X+=e<6-ajbG&N#eA2>r`;Jj3h0_PVKesA(uqdG)|njt zCsEgR6rp!N7=CI9u;W+H3)6wg+45^vv3_lpO8aiJ?KT4bwHvSXT+4cuuH14-1@}>^ zA1q{~$?E@9DxEp%M!#0}F3#g}*cJNm;Rl2`{VgjTHFU*b=!f$z9Qw`t(|(ktcU^SChBDN1 zJ38_l=AkVqo9$Tlp0j_HMY$&zD4^c{5vk*(fo3)DMtBlZzIfB}^OJ#TPa|(4KbAi{ zSmx3LsOps@j{GGkc{m3UV1r7u?tYBgM2>n zS;dR2PDa0pr*%oU#%{zpNKn>!Urqju=K?D0-o!ugZ{>d0mF3nS!u9@JS=Y|=r#G&< zE`Q{R%3$D4A)y59%j<6Sc)eQ<_)WBTD%Qg~+l0cS>wxboj1H`4ud*&x%kN+*^xL|~ zEx~$TmprgMQHQnD(z>tzJi4kv86oR;4(ech28B1z0r=5^2@HKt>^y!g`s{jYXkuk$(tm}yq1qAchI zy{q`77s%&Ss=qcoOISu3i!}!d-&AnswPu;*qTRz;J1y1dt*Hx*p^T84OUFax@O&;P zHHv3X6>;vT=2JiYU_JPMoqba|5qN&{z^l5zr)TdyULsf<`f%Uxk(}|ZIkv~iw7M0) zFqheHM#6v7+Dtjlb5rdo8{-ST2&ui2B$|zLUTt5W6(ce4RBA^pRyowlIMkl}c2^Jg zT{~%#)XG%q-8RwiMb9(hYpHqNfP^~INvjW0~PCrJa-t34cA*{3${`e16gK(IFam+W{ehJAbE zl_&iUVBHDI#>a=x+F|}Sj-TG)7uNa4-RD+%&jEVm8RoTej;HlErXCs{X-paX!@rjw zZe^XY9{*X|cwl(JOV0UVqj8qkQcj$19NXE>49|HRO?|%@tYzzN{ONUg=?LikJDWV{ zPDq{UrsPs>V1;oVNv~ zPBcDfDJOpGzV5O(BZ77pIcASQ{MDuA-3-V6U-!)1!dG0dHX)m|v{pHD&Y_!DL?2s- z^US8519w+od^Q!-4GG~qk8FDB^iBfnrY+fQ7tp;su195a$=TTJ7}w2x8eBFxQf*7z z>^ZM^h&rp^+|Bf51_Uw)wWygq9KHA{a~1|AMvnNydgwp5^w?UK}0L- zk*)dr($?tkG*P{_eYTn>MmSsk#;$oh{Jtz}-+C;3dpmvf>rhW)IgH!Z6SFcM#sJfU zy6|vr+**3~M#%(VO5)aI$TM3X+|$>^{#H-)hbJ1b?a)&FFuAYGF&|Xw6DQr1#y(a5 zAXsG-XT8=dKZu{wO5SU(H@auV(2=MoHZ|iL;=aE6fb1sDI;=kvkPzxbz1zlm{V$V3 z-C2A6#GxOGIQ^rR`mceV0%uZ&>$$$)+{J>y2)$=mhxJh>{;enn-tG~1nbQxpMpJ3q zDb1{nob$)FVGd{a+Y+)()c)cbCE)05rO~5-(|g4^;k}2TY#XVQd3!bN8p|#+|6Y6B zmG90U%z#q^y$5d)^k#X((1+HKF^^OlvNl>zlEA;SPMUPN9r9+whz?_H(SJc{7;75l zhx157L&1s(oO4*i{%)x<3!#^vFA<7;>~Ez(rPuMPR)lQd%v-Bx4ji?rW5Zk^PgcBs z?ccW2w%_(WLvAj@y4-Gesps((z$vP?Kdl13ZxC~w$JX2avB#`D%Aj>?G^9OyaDUoe2|jUk_&eXldt;mk+Hf;s3c})OCy> zm7U^Sg>pIhjp`}xvhpYxhrG0F(~cQ8(EnZU&F6S41Mhl#P{sLR*M!K|W3ZlgC8}Os z&)KJTt*goTf%itcuFc+l4RQFt%5Eob;V?-;c2B%?&m|EkbHwyXKen~qN#|vryF#xi z7c&_7e|MOdTNvkgi1lnL?b#cmJ)n+|J?SPDR@mS6#Px{HtOCYA2sbVQN__~}1uiIi zj*wmlMzPvGS9hw-UJw7Tj@>MP|5w?&@u|ggRYLZf2D=q%wrp+hsxN_F$lFx**1Yn& z84CY^l*L6@H+u)mEDpn6>BE~PxSlh-pc*#{rAYQ$2gA(%HBBL=U*40UX)(7 zD)RHbmxB*gg6~@>y8iM~LGQok`;1T4_3Mgu)US=s!agJ@`-~gP=3qVV%b9U_4(C4i z-6+18)eHLCBN|1%!0>vXKDh6F8As%ap`w}pi=P4%{_cJi^SS>LqY-?L+lgWfwvo@iT35{4LTL_tu3E4ukOvuCZflUAy+= z&u`=n54Tv-Ep@Bi;rW_w+10pKWaUd`du&+b@PG0CEPcq!X;*l?O>e$()bgbA%SkV; z9kQ(*+n@XTksCa2)32Nie~bNVdPh%t+j`~aE34AmeO{vhkH_>$)oR}Vf%HsY@?nL` zD?4B1-1_6BqqEunZCz{KErU-H|O$nCUs=iH@{ z*5nu87nfFe9p2ik>->D~@2w|p@2wJ8emPsK_1RjN{n6Gh{u~?gH?KF_LUN-1Xj^{% zf2y`+z2^4{&--n=zH(V+Pu~2r#ju9t*m*6Rwj|x!opx_P&UktF(>(6Cb=lK?e-wFj z>eQ7L_Ty#$&bH_0%z02@f3)qjD&mBX)!IEjh4+6CJ8ieScA*9P z)9rtJysriK+xAE6$Gkb1Y~SeaJzLVgamPhG?zZQzTGFP%`@n}@Ue(VRchlu{u3z)W zobq#RfBIvWOrEd*blTn{_RS3y_Wxz)-#%tYe^;LO+i%tEyLujZxQlR6b?ARcB}a3V&B-j33@@6wl|3qK_V1&f`7f181vA14#Fx zAuD;Go-y-_A8-Aa*P*h@&se&8;xWInuPl}wc@s8#;8o%4CHL!f<#oRDX~)@~9^Sm~ z-0|bi#ozFLWyjPNgF<;fxFcY3*f;zgup{BhBUjpx%QnuP(V5&{`^#V0fA47g#dW{$ z$jIaEQx}sndmQ?n$JLHi`RjlGqVm7O_Wgf$E`61po$}afF8}|p(~h?7pWVv-V`tqe z)!h3${9oDW-N2^lwDRxo^t8I#xm)?yW!26>HTON>^=7BXnS^Fs|DCR%S#@(IhdlQ5 z0)FqEeM(0>!}ERT+*OD7^So%dX|tMe}%l+0~`}#N4_6 z_EO5vx9irrEibWu-ZgEh?^UkPu1B7{HDh)8_y4Kd)niNJb^3Xq)T#|D+zz{LK3nL- z_1WdUqozOm*If_dj{q^qYQN^F}e5rieJ>ip=Zt(l>p3}44+> z`S!i}sbkyJEC2f6R(t!m+|$gn{M>sReBbT~-e>Ri-t=J$9&da5*GxY?vcmV*ev_Y6 zpY5?DXEow+w|9*5`|bV8zh74Et$n-4h8BFk@8?A)dz5YcYwo@F{F;qC-^)%}69>iD zjxPJEJhNQBX!6OV@~_LPtX+>+PZ(;kWO)WW-jAQldb(Qe3Ejz4t4GXVU3M;uW#7W# z2Pe6aPxy|Hn@B!6xJRQ^6~6CZ?Q*XP_C2w*>1UnFx9;;epLl}z5&Pb1TfyHv5b?>H^n~)oak9v7(`MD0HJzs5eh1=;s56?>nYgG8Y_sQ?(d{g1;78_ce z>^-V%Yk3~1Hfqy%Ez7^ITpcLAc=vpT_f=)zKhW^xf$O|p z{oB)ldjXr@>&^9;Rz0>Y?_&<^&Wr3Yg$(=Jeg@CmveSW!QI`@vXZr~EhN~;wFJ<4) zE*W?9ix7(?yZwp!8@$W5^7W5lOB|*;9U?d~B-pl)!?AD(aJhhk%&uKe-QQ3DNp4roFZV%%2J(xGsdOGhn4)*WZ z{^ife{ay!`eL^sA`KQ?a&8Z*TRd`)FJUeMqRE5X+Uw`6%ZaMtH!2wlg{m*Us z>TrhpkeAqB9iEgpU@Fhw!wHYh@f`El^HtuGGh||F6CQs#LFc|Y^j7(Ib4sJ;ER16N zyld4ualhmYxR&wCGP35yKc1=ZI4}E&oJR|{?WwSTIP%1sIh`szua11?-gS<~@~lVPUw`_DXV)#R{Ch`sJYD@b??aASUg=`@?qAPWw&kcz*Yu)r z&bNH&{?U!e{$D%)(ZB4w<$3h&l;1=7`>^bE^n&!8$_N_Yc z`tY#Rv3D$f>FkG&t&VE4fc?|4cN(6z@c!%A$y@zr3?t9&|HNrc`A;8nuK(dDc5EM1 zyX~48WTTB&f0|9&^l8|?!t>_Xu+h_^YnT7r!>VJE-TF8B;;-M$-T2OqW_2u<+)>Xy za+d3rTQ&Z{<*&*5es#a7@c8)aPyU}Rxu4&iS-|5n*MHii2Y%$nAp^FwCT~sYJV2L| zb@JH}KRoQG`F_7qy{=Z+@8mvqruEnkZ123y?Z^M}exd9Va~DrN;@`6DD~sj$f;l-K zbG?tZwCOml!siUf?LV^~^A6iDE{vPae&J!K;~&Q!*b>V5{F|m9`R=dhI({k8aaOm# zZm+!M_{{B>z3sT1#(kZ}IFLUNdj1%H4Fkf!G5XoDer~g(amGax8^O68!>>#Yu=s66CZUUUs}=USMGmzKl@C?swx)CX|LEShpfqUqr9i^dT=_>vDKqo z?&+05Z_lXk`=35?GqL~BvY#%`(_V$oz4dJQ*Jah|Nk2XFt_zoQf4h4l+p?{H%`=a8 zd1T{Ui{(sV2m6*4_D^N!JmWt1{`3ZXKXv`vkGxI#I)C*W&&RUU8Mi(?+VJ!L+tZm| zC7xY8|N2vBMy((H=gji$XG**5X~^sDnfS5piM$^;^TbpAd>YF@w3+77Ii z{0iCXM6H$;-iMy;(qi5N_Dg3!cPRlOw?4Twu-{o;y zb~?N4%+c-BIseyn8?NK=cQ$EP^I!S;VW+b_f2;O7w}0i+xkA4MZMh%LT}WHldMdds zCj8T?O8?VCdAyuEQ}6BZBgvs(ZMi>+EFE*IA+Mihr*nyItG>hgtABesw`RBNi;Ms5 zx%v0vZ?rts_2K6~SNi>mZ58$(=N8T_YCWy|{O1ZkzfsEL``n<8Lt}ZpJ2$IV-+Er; z+hI+vOeT|FowVdzGPB^;cwQeWpU&4G8xz6rcYf+uDJ34{^$Ybr>`?h!T%ErdTswis&-pjJ_jKicE2ui((u3!Df-_nfzT|vxHp9^1- zL!S$~&i=k&{TAO}Dm>o{uC*ICisw;5m5{ETezMnm4T>jk)rJp~)h{x51d-spV zR4?CNR$X+lSE5jAHNn?ww15fF5W)&>Tf_gfEZrHB->y6y7zC~UjKBu6uNTDmY>Scbt$!};{*0Hm%6#UwPqn%P`}0R753kko*Dni zS?g)!%e{mB-KJCxZpdrdw6{)J6-L(eW+z{*;nOxb!1Ju zru8kBtG_h(J}Z=br+@1|E4*%$o%3p~CXW|!`~K6Z=mp0KZMnRnl%pejd43h0y#Law z-sHfJmt!kDKg%ws=#f8Xuj*g+Re2U=r_^!jTjA^17j-`$z~u~$o>GVXPLa#51H-zI z??1n0_So|CRj!Jf_%B`Dlk;u5?b$hs{K(~z#@~|#FYoDBrSiGUzrGf7Dz>#-g|AoK z>k(h!`B(m(|5IIClb-qZe|i30OSBFcG0g&)jJHR{yaHWc@z7zJ8jVy#ByJ9|Fq@CswV0EoGq4O-#ypw@jNYlrEb>T zX@C8x;<(#gjt7-*Fa9~b`$3++#p_5Z*{o&1oqPUI~UaxMBTh*&B`{A!@wvP%R6gCZI_-KSkn_K^`r@y_%0*L3xxTkfBzDVA zs(fyX<NX~|Lilo;SlyWe}4am|8e$bl}~>z^Ir7x{K{K7e~ZVL zecg~8GdcJxUXMx!_qjg$Z=N4zKUoq!`@2hVy}Dhn{JT2bzPE4QZQwY&{Jgi<4!$yG4BK4? z9y!G8)a_D-@2k!vKV0c}kk{wiYdhYK>|cKVvg*z|evh=^e!0{5o511S$zwmrS*>^3LySu)wHN3+8dUx}P z{CbVqp111g0-k?&?@Vt|FoSe=c&7J~@}DcK?m8sy-TY7t$=lXLQ$hxH&2p4*Ym z?enlx>9{dnb1U3FrJK z)03y3S8lD{f%~`YbpLSYaf{iH-!BN+WXt2_{`w=!bN}Xb@&BHG<=BZ;>y>@Q`G244 z_a&G6VA1m5r~g>Ky>j)y&hdrW{9X^{O+RTrGX&bM%L^x)y;+aIL; zI=SB0Z2x6N&1I`9Y=3gI6~_8l6JulEuR{f_m&|Jgfe; z)w=O7qY*TxUe8DM(AE5P?>j^$gN{V)e$lfV3G& z6jUEw{q4UDS|eSr=lhWl^(s`qfa=h=Nk_Z`9c$CyH(Kjc#iPx>V^!dvJ7%|#ys z_1M#VJdK(80a|ND>$2{H)+N4zdwA+uE(49A&w17JR_k~8L+g#`Z(8+*P_GsB_0?wy zTCeCBE}#VJ&!rwq4e=&4u2*xP20~+i)lW;uqJDsSa{Pe<(EPYtc=9=m<$0)|-&^Pe z&6y8`=9)!8y=m7%$Ii7LZ2|5;JsEX;QEM#gxSx8F^n=C#Yk#7-TIv^@2(7!31?|7I z*0YXNXw67l=x<^5iP4-mt?M=rW1!yp8n3+!$@rzLF;#Gu9=QEX^w}+xBdq8$2$hi11`anFY^0C$E&qgqdR(_KeRT1`lV|OWE`{x zeHyf8uI5Ln=cv{P(lKPsXVzz(nn$WR#DN$GeLgrB3D^LQN6W<}Xsnw0wZ8~`4zAu9 zTF**rM5zDo80fgPK12Hndhe!jCi+a{5;P}5eSBYrjsxg3L9JWqi{a2Q)0xoReXWbS z33`1x4)rI|nA_^Sf7e_*9dFc{A)5E^5A`{oh;OhEiO^afdcS`HmvI+be?h&K^!c$X z)VEN__O*V8{sx;4^>)_h`xwT%m`&j50kopN~tXL{`As2;E|3mf8P+x7W z&D;(eE3AG%T0>5KCbbq?BD9u<=C7T?4QTAj^Job5Q|*Y}(3o_sd!xU7^trowf~8^) z)Xzf4p4AulDF>cg(A@R6&;j1ioFN^*RWHlAP*3u8Q19QvxPUvT)`T4E*<<~#-DvGO&8ybm z0?nbd5qm&uVriU%)|^nk6demzpS<6(2PdKVRu7=9gVqe34y{?e3R+WqH*#?qcky&nt~az!vU(2a zxRZL&X+6&gh=S(sYduHx7E)j5)3^rpgwguh>QSkFHaf=rF@{6y=tM#Dk=9}>4&W?q zKz*$B*|hrdY3-zUp)q@XpdNkd*ZB<=LZ3IX6hOYk!^j#NF)b^QAR)HnOl zH+alIYwBpeQ!98vJ>K>AfYzYb`)Bn={T17xJ_qW_tof^&v#ZZzG)A!u&f z)@xQzOuf%vi{GK1!>6I1#G0R56Y3A9&x+MwRe!5#o|1Z(>3F<)$u2=MG>=h#t7|^! zZK#h^9cZ428}vDY#&C>*KJ(HzLCyJIk6k#9tI)iuXJ7}dq2dP3wf2L0%uR&m`f5Jy zTBJi`rnH{r9X#d2zYDF0sAJkX-ld++!O+~{xk$hUXsv9md#lfobiBG2>f=pl-3+Zs ztmBgEJunkGmZZN!b*v>DXYnVhyu)i2nxHLo>_PowH5Ntlv170tzhO7D=AzbdSI;{2 zg=+xyMbc+onh&DSAhaHs)<}$ldTVcnj@_KYpHLqctu?0g09!-z2l_+DKPE%#p6Ii? z4bU2X$8i;w*8HB(`g~e@u_N@EyVm6m#Y||<%xY+ik3Qc#kDJh1w$DL5v7Mn~)9S0I zo-G=m9)Wq#F~<$i*gdWDp}8LF_nO*sMJ3woH>-e+AxKD>Z z`Oy5XP0+d=r=fBDR_^SxpwBkcXR-@4uXY5quDRxzX}pwrNbi8gTC3l#))1@Ff#)jJ zPegyq>$tIwX=$9*bS!|@z*V0W^?ud53i?b(^R(4V%pNVFaR|LJ6q>W6{uhg&`8AuN zahqCG{ZCZs$m1SO&=%^2-XHqRQJ>4th5AZtfckT3tsM2?cz_xnTwgfjJ?L{q^?nV- zOlUm@&3)E9_H3Mkj)_<4#J>qgw1MXL_J#VoY3#bz3y#KOtVJ4j<0RC(<cD8>_Je2XP*n z!}63T`z16(YiK-+#*BOl&CS>PUFyxe7U|IXV*1Re1UlxXelw0}1NBPKI3}${ul}8y zvzmZ)(D(#>#(x%CQ%Lg+)eFiVTC4m$_(1DuXf4~R(6Je<3zCS9&=^pSgSdgmyYZNW z=I`j(kmfU~_w1+8npGMn_XBj?b{o{!S!+6!;%P5l`{4xjsnFc9LHHb64^?x!H7_I; zdvFrhpfOFg@fzNO#!jg}l|Iweya)9lT@3XY*^0xs0F6OYzrYtzAL^;CzPldq!6#7v z27OkjK5gpBmVgwf&zwFRI*CG*Kx+@FKc{-RJEAo@<6{J30<=D~#)@maaykw{YtxlL z#}ZzK#`bD_M0aRhn$})bpY`vM0F6D*#8GIRRlD_gZrZdO)8sk3u+RLB|A> zpwB9^a0;6LrMXh-`>44qt>B41(3-+wn1%oJ*B~=+6ot5t>b-c6iZ|en4-tTI&@rKf z(A@1mpgG6+xCyPNtzILV_pi08G%rwVjgEwR_-cL1AE9+ic0l7KFGJ&!YV>Ab0B5|1 zUeNImtsNN&jiuG`*FT_sd>X@g3r~K;>jGYf=2v!wAGB7g=2>e^jb%uI=4~9qW!#6> zS=ZXu>NBY|@bo$IU})TjdXz1|D*OTU20x2i&^l``!4a*Y`5HR*uk}}S%td|Cw1(TS z&|Gfyl`e$V-P2mzc4z_3Bm5A9F%}xQ535%^OR=dhCM6S!*t}#gE56>Y+K>!y5xJ z3X?Dg%dj3haSWI705$t_pF(~0)k{(9#0Nn0ymahF>zM19xyEN}ZSga>2_1iZ5sjg- zEb8N`wdK^8XcE*fRXt-M%6!g}Qau~(t~KeeFo^O^(b0nJ4kicrji z<}7J^p61@D&*xdF@4fXW{H|yWtxwkt8V91aawkE@KsDbZ1v`-otski|5H(RBn(zD` zG|q7d#$yH+L33WTj+J^0oyHBQZ**^)gtCtx*4>^SF(wL)f38 z2{exNeP}$7df0?v7Bs#W2t#7IxlFP6jyKo#=@yJLXPpFSK(Glt=Hv}4wIRlz^mWYke9Fya?3LQ7A zh5C3C9nl+uptZ-e4uZyrX#IjE_!+6#fkQY0^%T^2&!TiDx8Yg}a)j#7tfY$GN3+_;lpgvGfpAbxj<|oAA zXQW~WwB~jp?m>P1?V#h???U7E2Ot=eq45Wr+m?(pWFi+Aa0`!x@I1$BaDn<$YR#JA z(44m!P%m)xjoOTCoP*YNwI0iU6pm0|JgpJxhfxTJ#ww{VdNQ=0gVvHQz#Tj_j{PW_ zK|KQ1PhM-PYki6-_zugl9_sCN1eb6R&y44HhI%?^UY~j~Xg!pnP~RLK(~HIutVKEw zp#Zm_HL%o=PCam&L2FBEot6F=4)w; z)-k9O#{G`QXpL^@kI|TnXvE`JWZ(!c;U20_O_d1gmG?v(Q{ujazqz`s4XS^C{I+F9s{{8?<)YNnC=~f7IC18mI&H&3^}-(Hoji z{Tb9RHX8BJG59Umk348hpvGNR59hXo)}(5U_t6LHRr4jHun0e49k$>A@=%0((70Rm zj#uAN7j%MpLup*Wc+9{etimSj#tCSAxW<~)oWlMGZ$NWedtxxgLOq8yFJL*e-gP<- zAP?%>dk5;XuQ|V3H&bKmyP-d{E|J!-i-N{nsc+J6(0I*b(70XoR;m)g&qM2EwT1d9 z4uJabPC*RRyY*LSPPNvd(ioPTcx)QiAN8O<7#bU|aWlRM#5iajA&pgw$69Q`0ciaN z&AEO6t(l|a`s&Hs7GBUivr+g8QCNgk_#NskbrPD>b{9`g=Xr+L;EWFFg#d(L3Zk(T zn#Z8I4Tq7B>(CmE>PKV`jo)^M7c{md0Ku4unb7#^rO-OwY0!MhqbPuSR9ns9HbEV{ zj9M(W%SPr28x1q65wrC1BbjJV$<15TYJbuA;s2A3GXl_iEZ@539 zezBT+(H#S!{xIRtd~fxBT8FL3Mm}!AI*PwLpx$pT(AZO73_~bpK=V_zcBuNBs`t++ z{AbOOZ`q$i<64@aExJQ}YP3eA`k>B+=0mK)M(l#t0XmCoxChO%eF65+8gK2Po>^LN zRddQlBMe#}WgeDd4K`sX4kI7e@Yrnj6Q~P~H*6tXss)& zXkKGr53NO^`LErfz6`^mbsM!NhWgniLhH_HjpS3f2Fn~C4|o;M(7FKL@W&{8i5ZxW zpP+dITEj&Bh|WXna6U1Y_bGT4>Z77LRay_DKSp9Av_9%$s2_>uZ0$lW)F-7B>Km?J ztFOTsS}*hisQ=EV(709gF4uYlT9a4(3Dtv8^Cizi{SP&EUgLINhbuG}O5;4WcJx=! z*ukY(2aUHmgnVcXn#bm`&qo8aga5EhH!!AOKWba#^HSdjjvh&jknx{ES!e= z72HSFSRS9K56wYrgD&WWfe6AEm;tT%vl3dfaW~X+^BT1F^0Uy`e)Vr?1Fav_2O}^6 z8aJpp@;@UDSvU=?_obfaH5T%Cfcm7mL+e{;4L0?^n1=5V56vSe6IMU)yoNoT(GK0AanYLF9Exd}k7Zbk-;s$UIE!mg-?*pZxjoSU z&S(cO48SOSg;`jFHAusLl;*J}Wk8tN~ho_6ZjrMU#^m-`OXC!iMwVHDI?Mr(m+{>V>Q2hH``kJC_pE%o@T zn#k{k*We8GMfHN_a}PxbreHSWuo4@Pfx|e5>$s1nR&rTr0QJXnLpP}B<}i$d=5eXV z=n|~LM(jim&Oz(IYRxRI<5Cw*q2BnK_xB+NU<4*Yz1|jJ1yZmb**J}>&{+7Yt9Wdq z5n93>Ja`kFdKQZ+}34`Vo z#$q|vV;eLM|1^s6$ZFne;$=8MbDGtMOg&5bBM4zo&$IbRz%ST>EF8y0l;DXqJWrth zt?KchdA8lqAEUv^^SvJLIg?h1uJxED4rQlDDSAK4!xySQCVlZPKjXpfX?|56qOBjZ zIKl<)@PaP_5R5QHA{uc>L<-W8gN zA3+F31fmg#M5G`cS;$2JieY(|>k1p#!wIhNfH(XQh!BJ$3NeUB5>ksM-fV4{T{ak?BEC&xWN-X@JAp*5RNFsA_2)rLnd;N zk0O-9x+9khJ2=7x?(l*y0uYQaL?Q<9NJ1(ykc~VPq6AhR+y=0P1DxRoPx!zeK?p?z zq7jEgq#zwx$VCB)Vd=zU7dEhm6I|f|Z}=e)AqYbxVi1ocq#_+z$VCB)Vd>1}!Upzm zf-5}W4L<}T1mTE6EE156G-Mzfc_>5)th#U;z!na0h8sNL1Ahb|6ybp_4v9!XIQeaDX%1;0Yi2BM700Ks4fzh-9Q86FJC75lUg*jq3_K zIKl<)@PaP_5R6bnAR4hqKr+&hi5%pk2&J&{;`+iC4seDWJmCX>1R)d=h(;U|kc>2B zA_w^>LJ6$8bGfjE1DxRoPx!zefe1l3A`ydlBq0?U$VMItQ39(TTrO{yxhOy}EZ#iN zU;}$N!4)3xhA#pTj4(tZ2JuKjDl(9bJQSh?Rz10{u!RGh;Ra9mz#l;fML41miv%Pi z4VlP6K8jEZ>koO1!4?j1h8sNL13v^J1mTE6EE156G-M(N`6xmutb1{}u!RGh;Ra9m zz#l;fMFgS|heV_x9a+dl0g7Sq;kJbh?BN7gc)%Ne2tY8x5Q!MXBMGULV@}ws3$m+~5fx_#+S@2uBoR z5sxIKA_LjTLm^6F^)Z(VTR6ZOZt#Q;{1JpuL?9Y*NJI+Kk%e63qX?z2_T_$q9US2T zcX+`U{s=+{!VrlV#3Ko*$UrvoP>2#(_2K%$77lQR8$96ye*_^E5r{?{5|NBFWFiOo zC_*W$`tq274ea3rS9ri1eh5Se!V!g7Bp?}S$V4{sP>2#(_2c@&77lQR8$96ye*_^E z5r{?{5|NBFWFiOoC_)LW{J31$!U4{3g9p6fhd_iN98rix0+Nx2OynRRMJR=Jf9^Nf z!4WQShZlSifMA3n5;2HF0+Nx2OynRRMJR>!04^7HaD)ro;RRp#BM700Ks4fzh!mtF z3%MvjF)RbQ&tL<4IKdSj@P;1(5rS|;Ar=WpMjA4agFFIF9HyZFhn8-@kl}{GLVft6rvcGA>0PAfju1I0ylWV z2mS~`C?XJzI3ywk>BvGZ3Q!EoP%alXu!j>|;Q?>>ArQd`LnLAlheV_x9a+dl0g6xp zt6^L=Y+w&3xWFA=@I?TE5r#;_ARb9bMLIH(jXV^h1Xh9Ecd&&6oZt!%c)=F|2u3Kv z5rtSJAQ@@ML=N&%gi=@!=l+8o9N_|Yc)=F|2u2tp5ra4+A_eKlLM{qW49ln77O;Um zoZt!%c*7R~2u2tp5REt_A_eKlLM{qW49f^E7dEhm6I|d9FZdz=!3aYnVi1Q!q#zwx z$VCB)Q3~rIZU@-G5iW3t7km+bAcP_U(TGDLQjm@;QT4Ic1@9|94Aa6};%2}nj7GLelu6rvcG z(OfocU=Js_!UNv$MF4^khDgL99!W?+I!}3)sL8j&OlHyx@xf1R)d=h(;_Dkc1SZBMZ4GKru>T zJ)Y|gJ2=7x?(l>U{1JpuL?9Y*NJKKykck}RqX?z24&{2o77lQR8$96ye*_^E5r{%8 z5|E5EWFiN7C`1V?UvMA72KI1-3*6xaU-%;kp@={fVv&Gkq#+YI$U`AYU^Rj33|lzB z8E)`^H+&I*V1ywOF^ESJQjvjdoYFv1Xt7{nm~Nk~OH zvXF}c6vGn6?ExFu!x1iUhZlSifMA3n0?~*?0+Nx2OynRRMJR>!L>?Qkg#(=73J-X} z7Xb)H7$OjjI3ywk>BvG3@==6RSbxQ3!w!ycfjhk5ivR>843UUIJd%)#3}hn@g(!j5 zByMNe!U4{3gC~68k069198rixJQ9(DbYvkH1t^9koZA?+VFyPz!wsJBfj@!}f^bA3 z770j3Dl(9bJQSc9rLdmNWy1~*aE2Q^;RAmJArujaMl2GLj8vo}3%MvjF)UNK-mrl^ zoZt!%c*75Y2thca5Q_vPBMq6zK|Tsm0;{Rq&aj08oZ$vf_`n~52thca5Q_vPBMq6z zK^_WFj8a%daM`ehJ)GbQ4|u~50SHDYA`p!@Bq9ZA$V3kEQG^m$rg3|~2KI1-3*6xa zUj!fsp@={Jf)R#D#2_AtNI^QXkc$Eo z!!n)g3>(RWz)*unwMaDxZD;fDYO zArujaMjR56f^=jd2l*&O2`sa?9Z(x~aD)ro;R$c}ArK)5MQA_LjTLm`S$3hQXDH|*d5C%D1`UhqW#f)R!Y zL?aG~NI^O>k%K%Gq8O#Hp2OwC77lQRE8O7)Uj!f+VTeF9;*f|Gq#+a8$U`AYU^SQf z6t-}HGu+?_Z}=e)AqYnlVv&Gkq#^^^$U`AYVD%lB3tKqA8E)`^H+&I*V1ywOF^ESJ zQjvjdQT9bWK(KY|d72t*?eiAX^@ zvXF}c6vHx~$2e?Y4@Wq|4W96UKY|c~a6}>o@kl}{(vgK+6rdQESS}kju!kd@;R<(n z!50AtLI}bTfhfcx0m(>12C|WdLX^O20k=79;Q%MN!UJCLMF4^khDgL99!W?=2C|Wd zLX^O2A(snVIKUZh@PrTi5rj}gAR2KNR38~0HHu6x25?KAn?*dymzzHsJ zg9p6eivR>66yb{yImky5N?^5=e*?C#hZ9`j4o~>N4*>{5C?XJzI3yw& zX~;wl@==6RSTEytf-M~23^#bf2Yv`Z5JC`!2t*?e2}njNGLVH_6rdQE1nvveh8-N> z1Xp;#8@}*I5JC`+NJJwR@km4p(vXQ9mXD1l`;{}yV)77lQND?H!@ANU~vK?p?z zq7aJ&BqI%($U#1ePzvi6Tt4jJ2p71)6F%@qAc7Hw2t*+U@kl}{GLVg26rdQEpSb?0 z4Ldl%8E)`^H~bKQAcP_U(TGDLQjm@;yH|+fgK#+3|Dx-8@>oYFhUWI zD8wQGNk~OHvXFy(6rmK>EBPH@2M0LA6&~=0FZ>aRV1ywOF^EGVQjm@;8zz z1RL1H39j&fH+&I*V1ywOF^ESZQjm@;kg=p!!Kz zo4N|gaMk~8e~PST>Zi$POkJI<0bO=Yv#l1%kk|kGTy63>Q$J6>U}_ukMN_{-zHDk+ zvW}_ilJ!h&N4{d}SIPROwkI2y`Zcm4bX^?GwnpUZrfy6+nz{+u)YQ#LCsQ{kTbTL{ zQsaDeyS#~(rhbcbG4}l!`$zG=RA$yzpBl2TY`;vW3-IwfVYCp2S zsRxh)P3=z(GW93qU{eQ>LrguC9A@f3a=58KB}bS#h#YC^QRHY-2a{t={TcbWsYA%I zrXEL*H+3lag{dcyUz$3MoM`H=$Vt#`8E&>sCa0KsDj8wwY2??Yo=!%ZdImYu)ZdU% zrv8?kW$M{vw5jKib4~pn8Dr{siy&aQ)iP0O?`+w zZ0a2Hh^dc~$4s3|9yj#~@}#Nr$Wx|1O`b7zK6%#E=g9M>E+8+M`XYG=x}6Hmw#(!d zQ(q;EOnr^KZt5Fkv8iv8w@m#fSz_wj6J zQ$I;sga0g5%(klJQ>Ly)K5gn}$m*u9LDn>NE%I6LpQX0h_8j@Vsb3&%O#LGHlBr)N zZB1Q=tPB3L)HB=c$X87LDp}vu_GAN7zeY9$|5+T&wnpUZrfy6+g8wW{%(kXvGgCW} z%}w2cd;|PvaW>oDBwL#LEz$-2XL;LfdxvagYFDzgsoRikP3=a$YwC7ndsDlU9ZdZm z*%AC_@i5yuk)2K5h4eJ_`(#&BcO$(_-JR@V>JLb7Q}-l4G<7f1$JD*ak4*hB>1*mf zWM5PFBmGR>pBw=GvkWxb{K-M4{)8NC>Hu{%a*?Uy$i=2! zLjGXtc=AV6FC~|mI)Pkn>J{WqrcNYRn)+vQm8p}+)uvuUt~GTs`HQK4CD)lcg^caKwdEQ zMe>rV3(3o-zCvC#brE^Z)Yr)yrYRTG+orxl-Zgb8dC%1M$p@y^i^3z& zYr~`b?=e$bk&m1D3GzwsBNl73tqNJy)K8JsO#L+ZjH#=WHB4QTtOZ@hvu0au@;OsK zPrhJk8}da{zeK)lYFo07sq2#UOl?QLV(M4P`lhxg8<_evvZ1LR$VR4qoosAsN3w~j zo082;?L;;=bqn$hQ#+Gynz|+VmZ@FHw@v*H*~-+eWNYX)Xk)guCEZN@F4@l1?MZi2 zcOc(0bw|>})SbxArtU&|n)-dRtEsz@UZ(C&_AvDaq_?Sik{_D77wKc_-sDH7{+RTI zu6rM|tuNWn)P7`tQx6~qn%bWnWa>}I!KMx%hnRXOIn307RGEOinTNR5HTU)5xz) zJ)Mj+^$c>RslOqkO#Ll6%ha>UXj9K2=bHLEG6uSi^USvI$@!*^B^Q`_A-TxZapYoC zFCl+0bv*f_sh5(=Or1b3H}wkgCsQYqD^2|~xysZ@T&}O}&Zy-PCF1AEw?+ZZUN_xz*I$$nB=iAa|I0C%MbindEL$?;-b^I*Z(A z>iy&aQ)iP0O?`+wZ0a2Hh^dc~$4s3|9yj#~@}#Nr$Wx|1O`d`7!+f*tEP2k<=g9(7 zUm!1<`Vv`a>dWL6Q(q;EOnr^KZt5Fkv8iv8w@m#fSz_wj0;`)$#+cMigYz~YqE{0+mddkewS$ z&7JIE>i5WwruHB^nYuIC#nhhU`=;(nb~CjX+1=DV$PY~IP4}I!KMx%hnRXOIn307RslOqkO#Ll6%ha>UXy`KLm~C^(?@S#-&NKD*Pnh~7nP=)#IUR%&}B3<+Z@P7rhc7l zY-&fciK&~C%}nh?HaB$(@(oivlW&^3CHa=AUC6gh{SMj6)UIS}Q@0`8n%a$g*VOIE z_NI0xJ3!a{J+rMN>0#6HuV&8s;MK$ zX{P>~oNnq!at8G8%ryCp`Cb(H|Fv|NVN{iA1BJ(-ySux)ySp1ngEUA51r;#BR=T^p zySux)ySw3A?|kdWbKT45J$vtSjtUnuDg)gOayJ-<*h6ucJsd|c;XWhXjl$9P7#wSl z!}0b6oM=zN$@UbSYEQ%I_6(e9&%)XE9Gq*zOY~7EBiIRvESl5`#pyL^Z0*1F9huf7}1V|k?klL)sBYI?HCx-j)k$A z@cqSc7Z>B%@iBp&5EI#nF^QcNliA5Jg`E;p*{Ly&ofgyC=`jNno}bZOCd}+Ei)QsK z8)mn2U`{(1=C<=-UOOM=w+moFyAT$(i(pZ^7#6onU`e|ambS}aS-TvTw<};pyAoEm zt6){T8dkS!U`@Lg*0$?lUArFEw;NzXyAd|Fn_yG>Lu|%`@3XnP7TD5mg{|$6@MHTE z{M2rPZS8j0o(cEspdCH?3_rKOz%T7i*xBxaUF~kz-Tn%{wtHYt`y2e$?uEVW@9=y3 z2kc|_#eVjW_>=uJ{$lsX0rs!>8xuay@9zG4;W)w` ziKFb%IL01}n4ILDrg^O*4Y=DS;f3++X?*j|E5 z?Pa*!UV$r_aF12)R^u9bEv~cI;|6;pZn8Jy7JDmhW5WHmyW4>~?OnLr-h+GXeYoE~ zfCueEc-TIIN9|*H+&+OP?NfN#K7(iNb9mmqfEVpcc-g*!SM6(f-M)c0?OS-;zJqt| zdwAb|fDi3Q_}G4ePwi*;+ih>_t`1#?#7{QK+k?hDA z#g2;6?C2Q7j)}4C*ciu-i}CFEn7~emiR{Ff#7>II?BtljPKl}P)R=||?>()%beP`G zfEn#fnAy&PS?z3?-OhnI?Od4K&VzaFe3;)ZfCcSBSlBLtMeSl(+%AD7?NV6UE`w$5 za#-H3fEDdZSlO$dRX6XfDP?N*w}7@P3;e{ncW;)*e$UY z6TbV_`jKZJ<0tl~*v4*)?d&BXN{H8pqgUahyFKC)g8ll06xx*i&(uJsoG*GjWzZ8|T<_ah^RN z7uXANk-Zp~*h_Jly&PBAD{+;*8rRrsah<&$H`p6-lf4oda{)xiGh#2lLwbFuz>@3o_x)RUvnUv4~w1i`m7ogk2I# zG2yz>?#f_Ucjerb#|m~utYlZlDt1+@W>?1=c1^5h*Ty<_U94x<#|CyoY-BgaCU#T& z&~Ap!?H1V5ZiTJwkMLvr6a3U}gKh10*xv4d9qrHXbNdVY((Z(v?Jn5W?uOl&@I8Lz z?rZE}_r!1PZ?P8>UfbKi1NO1|Vn6#w{K@_qf3f@H04Ch;SN+Yi-|-K3f4ch% z|F-|Zf9-)dhza)@>~07SwTIzwdjyWON8xCD434$O;dpxjPP8ZCWP1uuwWr~9dj`&A z!h4yevvm%JA0Ou8JbOMauovPYdoeDtm*O&eIj*o*;wmOQYqh&IxYk~W>zQ!A!QDpO zWN*eT_Ey}+gx7A@9iHvPUG{F=WADX%_I^BIAH+lUVLW0V#bfqyJYk>2Q}$^*W1q!y z_IbQuU&KrHWxQfv#cTF;ykXzOTlQ_dW8cMl_I-R{Kg37&V|-#i#b-?Tj-I=FfiLY> z_}YGhZ|!&Z-VXor!3WI$e$9Xp?1&i2j*L<4s2I(Tjxp?*7|V{0aqPGl&yJ4??1Y$z z3GY3zyCj&@PKL?t6qu3;uTAAHHKwuCVmdoLX0S72COb1`v9n?}J3HpEb7C$#H|DYP zVm>=R7O)FqA-gaZv5R6cCcNL`?n+=uyA+nT%V1f%9G15$U`4wUR<^5PRl6EiXTo!8 zxT}e^?Alnzu8Z~T`q;p3h>h&V*u-v%A2Q+I&D=G|7IsT)Ww*wU?2qvi`%`RVx5ajL zd+cC$#Lw){@e3wA^GkP~u(RC-yV~8byZse@ZTG;Q_BZ&g-3xo$-{JR6c+L;*`e0wX zAO2|ngg-OkwZFLQj|1#q@i+T-{KNhe|6;;*f4ln!|Fs9=AbT(lv4`R?CR{h%-3T0M zkHXRR7#wSl!}0b6oXCWGOma6Fr`S_*nmrw7*fVjKJsaoPb8((M9~amQaS;=qv)J7d zTxu`F+KD=(cXlc?Jc;~-iF)l9k|opg}d!NxYyo?`<&906$?3!51u8no(Pyj}7dG*vM{- zP3)%lq1_Cd+byuA-3nXVAK}OLC-|w|2HV>0u)W;@J2K%jedg|S{KEbcJK3GFi`^Bw z+1>Fg`)llB_r!1PZ?Tu%8^5!^#~AP%wz;}9l1d#Jl%INTnABkfT*+8%>r?QuBXo`4gXaKB0JCgT))Do(Sf z;|zNy&a!9Y9D6R#v*+Uidm%2e7vmBpJaefo^K3b;aJSOkDqL-^!L{}}TyJl{jrJzo zY;VD>_BPyZ@4%h*F5GSJ!M*lA+;1PigZ3djY#+g+_AxwepTLv$DLieT!L#-`Ja1pX zi%j@VF1fpmSL~~JjS1)1-QB>O_AR_^-@&`~J-lx}z=!rDe9VOVJ#qIGpV`mxh5Zs= z*{|`9{TAOb;U4cb{EN%~``?;^b_9%QN5aT<6pU&|!{~MljLC%i#&Q=MGD~}cIidf06j8*Ka zSk11EHSC&L%dU-em~ij9?&@KEy8$+|8)0L+2{yGq#AbGLY+<*=R(5Or$o?2Vu|LH& zOn815Gr`t1dracR1GvPUN+|9*#?&iB& zfD7$KxY%BTOYLR2++Kkz?NzwiUW04xb-3Q%fE(>ixY^!YwUc3TI|Zh+ zQ(XLgqbv%1UXE<5J1b7C$#H|DYPVm>C^E5Ew}SkNwn zh3z6()Gmg_?GjkhE`_C;aKAF{%3?XYJXWwPVkNsWRta2- zJ~pr$Vk5gTHnE%Hhjue;Znwaeb}MXce}o^~pWvr<8*FR0!}fLu>}Y?6pW9#Hmv$%Y zYf zPui#OG!veA#@$&wXP?IlOgO)&mpr?SSL~~J&AyH|?3;MYzKwV6yLivOj}PpJ_{e^Y zPwc1o%zln9?3eh;evNPJxA@L}kKsRp^uJ$M1nmeI(T;?X?I;-4j)u|g7#P!zg|Y28 z7}t)6@tN>_C2*Gz6WNI|iJcUa*~u}5of1>osWFY67Sq}3F@v2EGufFj3lpB7)m=8s zZs)+9b}r0q=fS*oKFn_yz=C!mENmCSqINMX&V*-{(2|~&!qV=_Xj#w7VR^d(R%F6G zD!HqSRqU!*&906$?3!51u8nn=aF4p~>S29%4cs-vMs{OtVmHMP?Pl2AZhF7uIcQq3wE`;VR!p0{Mzn;J?(Gs zTPED2m%HBho&7!jVE4hkOn7ZScR%7!_Rsi>-5&?ozv6H9@A!xPC;nysjsMvH;y`;4 z4z`EjP< zJM5jf%ifK9?7g_p-j4_DgLue3j7RLFc+5VIC+w4W%07)}?6Y`|3Ge;9y9;>HzJ!vuVP(4tR<)~Pb-M=Ev}<8) zyAIa1>tTJn0XDQ7VPm@qHnl&*W_ELIVYkFqc5D2|{un>8KgBk7TWn{y#}0N!{LKCw zzp%f=PIhPPVt2)Ec6a>B{u+DOJ@Fg+TkK``#_#O!@dvvP_O<)rkM>Xav;7P9w+G;_ z_HX#R{RjSO|Al|s|KPv&KpbQb#v%4l9A*#45%x$NWsk-&_E;QekH-o2M4V(##wqqx zoMunQ8TL$^WzWVr_FSB2&&LJ!LR@4o#wGSrTxKuF74}M8Wv|9H_F7zLug4AcM%=`N zzehK_+k#u|ZMdBY=R0(#XS;B>y$AQ&`*6Q~01w)S@UVRZkJ`uZxP1aoGU0ir+?~cV z?#{Y9hv(g0aCZ?exx4J{3SPCZ;dT24-n4JwZ6-YPj^6d`9^SVf;6wWnKDM9WQzl&h z%-wT*VZX#zOgMk-?hU@R-{E^Z{Kr&3V8YK0|HTM)M2uud#wd1FjAlp27C$fc3~{SglmdwG0%!)3A-egV#4c6yDNib?Q&S& zu7DNoN?4f**Hv*>6|33Rv4&j}YuUB2j$Ie)G2tHd-8I05?i#skj7{7%)ek*uhRy93 z*pdnNYvryreq?`)pD^M4Q*Gl}TWn{y#}0N!{LKCwzp%f=PE5F0XLnt&tKAK|+h5_= zb`R{ygzLU>_bv8v*W2B9_`UrD_Obh7Kl?}g$^IFCvHRly`&azU{vH3Y|HQxSzwsX? zyr+NN4a7nAU>sr(#bNev9AS^dQTAvYV~@pg_IRAYgy&3jHwh=(Q*f$14X4{PaHc&A zXWMgdu00Ru+Y4}^y$BcEOK_>Z43{(Ey{vGz5?8rf?QRXOwb$W#djoE?H{oV`3vRWy z;dXlm?zDH|ZhH^zwfEtE`v4xa58+`Zyw@Y{j^Z(Q$MuAs#PH+jDLn1&jJvaV&OVP9 zm~h{VddaiPc*VYo*O>6S>+WvgP5Tz!w(sCwCcO5Z-uLVQKC~azQyTq8pPKwExaGu;<3QTFI!qj#eOlzmZ^h~%egS(8F$(xwToeKy9AcBOJQld43@RaVR^d(R4%W5nVST#+HnbaIVneU{|{vcDKL6uk9Y#)BXm(wR>T2`#b#J z{sH?i;W>S^pZ=&nVfbtLXZ*$Pj|1#q@i!*i<9Gc-|J1+qZw&YP2miGP;vjo44zY*g zFeco0xVsTJ(jJAQ?J+pk9*5)Y2{_T7gp=(lIMtqp)0yy`8SZA{EPFQ2VZ!-bck^(* zy#N>5i*T{M1ee;&aJjt#SK6y^wY>({+Usz=y#Y7cn{cze1-IJUaJ#(&ciOvfx4j4V z+WT<7eE<*Ihw!j{1drOs@VI>fPui#Ow0#E8+UM}ReE~1pm+-QE1+UuI@Vb2iZ`!x; zwtWZh+V}9j{Qw`@kMObm1fSZ^@VWg0U)rzmwfzR)GU3njJ9qCf{KgGo_W_2#cK?eJ z+(mR32_w6UqER&(hU=nZ40ka#md4gN7+xC}{rybyc*gR>Sb@>R7|BiM5#U z`r7X5U|o0h+||bhc0+7rH^wG*Q~Zz#_iCoiJ!^q2?N->D39tLe-N*Qe{VBGw+hRMr zJ$A4=;%D~f_=Wu?c4ET4J8Kv1isAEj!|wK1_%#z=-@{!`{Knn4?s{Qw`#b#J{sH?i z;rhPr`r(iEPxvzv&VO;&9|zdK;%`hi|J~gm_^16B{%!w*|Jnm_kUbcOFyS6U-3`Ox z_6Quwg!57EM&lTFW8ICz@%99q$b@Sq>13UP;d`8l)7(wh8J^9=S@vw4W6#BT_IzAm zFT_Pmc-~@NqDyrdhUYHF74BBLTZOCLtTXd^#)9t!LcVc)S zyKuL=J-XMkeYoG<0e1)SkbM}B*hlf0eH>5NC-Ibh8qe5g@tl1gFW49Hl6@Jk*jMoy z6TaK)dP8sOExnE5v)#eF_C37MgzF!;dx($RJ$Cm5pSpYI?m512_tM=fd~LtMxAr@H z&xGfM-$W?9j}L-&1dPap^GNO@V-!0oMzf=13?{rbrn^`e+g%)YaWS5|`0f&5LU)NY zu_nRrzLH`xJ2|GXQ(`JRHKwuCVmc( zALeJma|*aCh=uIJSi~-h#q8o(!Y+xWm~fBMT1LxiIW4ahFnli+v65XGt1#g{Rozv? z>h5Z|tBJMT)pl10>)Q3OzTE&D+KsTW-2|I5;aMNLYlh9;wa}KHwZhi+NBFV*34Y3i z`?S%vp0&gF?mD>Zh@ZLpT))sSwUc(n@Evu*uI{?I>yBU9UtdC*~4*!JrYORqj8Kq7RTA+ae_S&C)ty6iaiyl+0$``JrifyvvCd+-tSy@^Kibs z02kVea4{2JyF{0IwhWiMTcIm;6^8F=HLkJO;yQahZm>7vCVMk(VZ!say4!}^?H#z& z-i5pEJ-C+%*X?t+9}l=Y=cO!}m3?Fbl=3FnbCvS(2+svQlZ+c7XE6RwHnE;hz-7uQ`pjPEXi zyM&m?PK-(Hq?pW3jw$Svn95F#X_)ZbwC>VjdUqMzWyDN&X3WBbYqDxK&8|5xe3v;f zmz^8)*m*G@6Yi1UT>&g;7sA4J5iDvK!{T-cENPd*(smgvYnQ|Fb_J|xSHjA66|8Dk z!|HYotZCQ6+IAhR%Y^q{&s}|NU^m1@c4KT}H^mR_X4u?rfi0PEzgF&A<45+#_=)`~ zwz1n{J0@J$-dzXmXn%&E+h5?9b|>s?cfqc9H|%bIgUUGNY-4(oQU&HJ64ZO*O zXWw#n8}GQgtM@#+j}PpJ_{e^YPnd9@r|zENbNdCpv|r(C`whOe-{E^Z{3fU$gyDYw z#qhZzU_^J3+(pJHc2taJN5>dUxIU)4SQy)mgK_P67~f8S3GGCfmOV literal 0 HcmV?d00001 diff --git a/pythainlp/tokenize/core.py b/pythainlp/tokenize/core.py index a476d22f4..d72462672 100644 --- a/pythainlp/tokenize/core.py +++ b/pythainlp/tokenize/core.py @@ -530,10 +530,15 @@ def subword_tokenize( **Options for engine** * *dict* - newmm word tokenizer with a syllable dictionary * *etcc* - Enhanced Thai Character Cluster (Inrut et al. 2001) - * *ssg* - CRF syllable segmenter for Thai + * *han_solo* - CRF syllable segmenter for Thai that can work in the \ + Thai social media domain. See `PyThaiNLP/Han-solo \ + `_. + * *ssg* - CRF syllable segmenter for Thai. See `ponrawee/ssg \ + `_. * *tcc* (default) - Thai Character Cluster (Theeramunkong et al. 2000) * *tcc_p* - Thai Character Cluster + improve the rule that used in newmm - * *tltk* - syllable tokenizer from tltk + * *tltk* - syllable tokenizer from tltk. See `tltk \ + `_. * *wangchanberta* - SentencePiece from wangchanberta model :Example: @@ -600,6 +605,8 @@ def subword_tokenize( from pythainlp.tokenize.ssg import segment elif engine == "tltk": from pythainlp.tokenize.tltk import syllable_tokenize as segment + elif engine == "han_solo": + from pythainlp.tokenize.han_solo import segment else: raise ValueError( f"""Tokenizer \"{engine}\" not found. diff --git a/pythainlp/tokenize/han_solo.py b/pythainlp/tokenize/han_solo.py new file mode 100644 index 000000000..3a62427a7 --- /dev/null +++ b/pythainlp/tokenize/han_solo.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2016-2023 PyThaiNLP Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import List +from pythainlp.corpus import path_pythainlp_corpus +try: + import pycrfsuite +except ImportError: + raise ImportError("ImportError; Install pycrfsuite by pip install python-crfsuite") + +tagger = pycrfsuite.Tagger() +tagger.open(path_pythainlp_corpus('han_solo.crfsuite')) + + +class Featurizer: +# This class from ssg at https://github.com/ponrawee/ssg. +# Copyright 2019 Ponrawee Prasertsom + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# { +# "0 (current anchor)|+1 (the character on the right from anchor)|A (character)" : 1 +# } + + def __init__(self, N=2, sequence_size=1, delimiter=None): + self.N = N + self.delimiter = delimiter + self.radius = N + sequence_size + pass + + def pad(self, sentence, padder='#'): + return padder * (self.radius) + sentence + padder * (self.radius) + + def featurize(self, sentence, padding=True, indiv_char=True, return_type='list'): + if padding: + sentence = self.pad(sentence) + all_features = [] + all_labels = [] + skip_next = False + for current_position in range(self.radius, len(sentence) - self.radius + 1): + if skip_next: + skip_next = False + continue + features = {} + if return_type == 'list': + features = [] + cut = 0 + char = sentence[current_position] + if char == self.delimiter: + cut = 1 + skip_next = True + counter = 0 + chars_left = '' + chars_right = '' + chars = '' + abs_index_left = current_position # left start at -1 + abs_index_right = current_position - 1 # right start at 0 + while counter < self.radius: + abs_index_left -= 1 # āļŠāļĄāļĄāļļāļ•āļīāļ•āļģāđāļŦāļ™āđˆāļ‡āļ—āļĩāđˆ 0 āļˆāļ°āđ„āļ”āđ‰ -1, -2, -3, -4, -5 (radius = 5) + char_left = sentence[abs_index_left] + while char_left == self.delimiter: + abs_index_left -= 1 + char_left = sentence[abs_index_left] + relative_index_left = -counter - 1 + # āđ€āļāđ‡āļšāļ•āļąāļ§āļŦāļ™āļąāļ‡āļŠāļ·āļ­ + chars_left = char_left + chars_left + # āđƒāļŠāđˆāļĨāļ‡ feature + if indiv_char: + left_key = '|'.join([str(relative_index_left), char_left]) + if return_type == 'dict': + features[left_key] = 1 + else: + features.append(left_key) + + abs_index_right += 1 # āļŠāļĄāļĄāļļāļ•āļīāļ„āļ·āļ­āļ•āļģāđāļŦāļ™āđˆāļ‡āļ—āļĩāđˆ 0 āļˆāļ°āđ„āļ”āđ‰ 0, 1, 2, 3, 4 (radius = 5) + char_right = sentence[abs_index_right] + while char_right == self.delimiter: + abs_index_right += 1 + char_right = sentence[abs_index_right] + relative_index_right = counter + chars_right += char_right + if indiv_char: + right_key = '|'.join([str(relative_index_right), char_right]) + if return_type == 'dict': + features[right_key] = 1 + else: + features.append(right_key) + + counter += 1 + + chars = chars_left + chars_right + for i in range(0, len(chars) - self.N + 1): + ngram = chars[i:i + self.N] + ngram_key = '|'.join([str(i - self.radius), ngram]) + if return_type == 'dict': + features[ngram_key] = 1 + else: + features.append(ngram_key) + all_features.append(features) + if(return_type == 'list'): + cut = str(cut) + all_labels.append(cut) + + return { + 'X': all_features, + 'Y': all_labels + } +_to_feature = Featurizer() + + +def segment(text: str) -> List[str]: + x=_to_feature.featurize(text)["X"] + y_pred = tagger.tag(x) + list_cut = [] + for i,(j,k) in enumerate(zip(list(text),y_pred)): + if k=="1": + list_cut.append(j) + else: + list_cut[-1]+=j + return list_cut diff --git a/tests/test_tokenize.py b/tests/test_tokenize.py index 4659ff08c..80a0daa28 100644 --- a/tests/test_tokenize.py +++ b/tests/test_tokenize.py @@ -399,6 +399,7 @@ def test_subword_tokenize(self): "āļē" in subword_tokenize("āļŠāļ§āļąāļŠāļ”āļĩāļŠāļēāļ§āđ‚āļĨāļ", engine="dict") ) self.assertEqual(subword_tokenize(None, engine="ssg"), []) + self.assertEqual(subword_tokenize(None, engine="han_solo"), []) self.assertEqual( subword_tokenize("āđāļĄāļ§āļāļīāļ™āļ›āļĨāļē", engine="ssg"), ["āđāļĄāļ§", "āļāļīāļ™", "āļ›āļĨāļē"] ) @@ -408,6 +409,15 @@ def test_subword_tokenize(self): self.assertFalse( "āļē" in subword_tokenize("āļŠāļ§āļąāļŠāļ”āļĩāļ”āļēāļ§āļ­āļąāļ‡āļ„āļēāļĢ", engine="ssg") ) + self.assertEqual( + subword_tokenize("āđāļĄāļ§āļāļīāļ™āļ›āļĨāļē", engine="han_solo"), ["āđāļĄāļ§", "āļāļīāļ™", "āļ›āļĨāļē"] + ) + self.assertTrue( + "āļ”āļēāļ§" in subword_tokenize("āļŠāļ§āļąāļŠāļ”āļĩāļ”āļēāļ§āļ­āļąāļ‡āļ„āļēāļĢ", engine="han_solo") + ) + self.assertFalse( + "āļē" in subword_tokenize("āļŠāļ§āļąāļŠāļ”āļĩāļ”āļēāļ§āļ­āļąāļ‡āļ„āļēāļĢ", engine="han_solo") + ) self.assertFalse( " " in subword_tokenize("āļžāļąāļ™āļ˜āļĄāļīāļ•āļĢ āļŠāļē āļ™āļĄ", keep_whitespace=False) ) From 22f161c0c9170782641b4c167e6c87e4ea22f53d Mon Sep 17 00:00:00 2001 From: Wannaphong Phatthiyaphaibun Date: Mon, 31 Jul 2023 00:17:19 +0700 Subject: [PATCH 2/2] Update han_solo.py --- pythainlp/tokenize/han_solo.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pythainlp/tokenize/han_solo.py b/pythainlp/tokenize/han_solo.py index 3a62427a7..63053eca0 100644 --- a/pythainlp/tokenize/han_solo.py +++ b/pythainlp/tokenize/han_solo.py @@ -12,6 +12,10 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +""" +ðŸŠŋ Han-solo: Thai syllable segmenter +GitHub: https://github.com/PyThaiNLP/Han-solo +""" from typing import List from pythainlp.corpus import path_pythainlp_corpus try: @@ -132,7 +136,7 @@ def segment(text: str) -> List[str]: x=_to_feature.featurize(text)["X"] y_pred = tagger.tag(x) list_cut = [] - for i,(j,k) in enumerate(zip(list(text),y_pred)): + for j,k in zip(list(text),y_pred): if k=="1": list_cut.append(j) else: