From e98ca8829b7c42c00f2f2588e1168d3f31eb248f Mon Sep 17 00:00:00 2001 From: pvtroshin Date: Thu, 23 Dec 2010 14:29:57 +0000 Subject: [PATCH] Moving a method from AACon to SequenceUtil git-svn-id: link to svn.lifesci.dundee.ac.uk/svn/barton/ptroshin/JABA2@3567 e3abac25-378b-4346-85de-24260fe3988d --- binaries/aaconservation.jar | Bin 141557 -> 138713 bytes datamodel/compbio/data/sequence/SequenceUtil.java | 36 +++++- webservices/compbio/ws/client/AAConClient.java | 124 +++++++++------------ 3 files changed, 85 insertions(+), 75 deletions(-) diff --git a/binaries/aaconservation.jar b/binaries/aaconservation.jar index e16b9a8ea787e16e0322b9b5cc3f6952ef8ef254..5f76eab350c91228fb5ca25ad10b4de52771bb38 100644 GIT binary patch delta 35218 zcmYg%1B_fHSdyfKr&#gusDun`q!Wu#x|>fPS?@G>-%X z6#EMZ=vR`F6LuOSG6(`7MeD;Icht3)h95|{_$if6#%-k4BmfPHpH>G!j4DJ@IuINL z4mcw5C|K(^=uU663LdN{m{@TE&O=XK7~$O^yuFF`%c0gr#l^N% z3<|skyNkq&jYQFwUtOl1nnYx-v9{VHR(d1d$^zX@qQ13s%=`JgPHPOT6P-MRRrA7c zCAJ64Ef!l?d$#pGIv!|41sneGtt@884Y{YUC|h0N5moaJ&FE)S`qYpM}GqW1Uu?wW_Y)2b)4-b&F z3#;do{5>Q`lLX>JTn8)aPm{k+EiTU0nu&)?BUIYl3Nk(0`RIj@p`74)A5}3$0c{rE zV!k)k?=yGYeykd^94Y0t-c;{hY-S&Wp_53IF4#H%%mn^SCL327%dVYF9q63A&xAI< z0hTE8h;83mEQg}C6?U|B@+R7RsmWGIK+{CqLpr=MVqchCX08@4l{7+uz5tQGvU~Pm z`%-bp276N89em<%Kg_f*%Y)mmobTpkDBp7v^Of;bd+g4#xc2)4Im?uzG1Z|3pH~V6 z5gP-*T(x%RipfdlMj*+J$|r&eiUfm1dat*0X_=v~C<#gL`gv!}PGb%ydWtOj)%IcO z3_%|4N?^S#+EuAas*S~JCAzXD!IA=t3%j_%MOocKjNdzHXTbNMogO!O+hy)~*@^}J zTwqw1OI4nJnSFC#U2U!vM9NN|J1NMCqt7l08AZGu(V6f2kerD?>QDl6Ttz1W% zWn#^ywPX$aP#@r8W|wRl1a9p@exRD=YUx?Hw@On=3}4U%vKhtfl~!^BwSeyW3x5wl zcad68SJ6w!RcNNO#M<hi8h>wepCkgjUTJl`hcxmoJxNhlE zO@l~%aypY?pfCP1`D>p`}jR9L_t4~!glOb+o^W3J+1MJpB$ zF+zE#=K zrcVKD(ljOoSYfr+FQ~%dAv``sqfRSOI<}e!t%ypRZWqIQaO4 zcxao`48$7P!f4Hi2FglBeP!pG&3y@(si+BhKl1fa+&q)f}31mQy z6o*&}?jRz4ebQ$W>VYLKXzP{$mzB-Sf*^4ZzphgRaeK(K{ewbD;Z=HM;eX9c$=j+X zJbC#zFkWTpxi#+0Podj2&DG=QYPlbRz4XR&B~b}A4SdQnkwvPUJg}^tWq9)D=8YSS z9jokbPWdEIDMTnAOV={?dC;?H*s$G)dy{9$M8Iae;USIzrv74hY`zU# z>L%pfhs^(`Ps+>ePi|U!`%FpJ96NSeo2q{2jsG)x=KPS+luoD+eV|Ovkz>R=p$n(A zq_{`(cTG^3gEN+X#w@Z#_BOz^nrMxB^0f3Q3#&KkrGTaDH@XND%{{EmFiEME9Br$W zEr$Z^u`{@BQA((4qhp3JfGHVekZO2L-cr<#}qZ;Nmv zaG%I35bp-I!L3add6_gpUu7zvCDD}nA|#;TjOG}!EswN_87mcK`o`DO4D$kh?wyuk$znqgfw}anCh0ZAeD5FA4+Xd3LTa z&E0{re-!{mqrw3%;u&+Em_04efKi5o7evMWgRErdgjNBYd_$j-=_ zoR)g!ktNHp*9*U=1zRWh3T1B@92lqCC&- zuUi;c8HpO$lTTewX8fz-jG3_Oi0)TjK8*Onrl+NYYf>SnQA%2k@auiRLXj%u4V2&) z@5*txX29P&0118-1)GK*1H&L98b%59wI;2dAljk-tj3^=u{Q1-Ot3?vWgX;zZc(F3 zyg&KC*)A!jbIEXs&DrN~@-)7*yqxhgb|2A#wO7j^LNSyDvmg@sLub40Fxb;xM-3%S zc32tGaGhm{9^?YxUkC_pb3FMWGYP+cEMfO^_(C1v0WTs;7O9>-izrK!Gwx9%@GTWb zQDcQR1Rmi<^@jNzeN)hF3KIwk|p6w=n?NZ8>;IlYk0Qw z(;du`VXpgs23LHVcZ;H9)fiS8u(PTA0$6*dyn#!JtW&Jzg6@cU+O2wSBGh&WoQ9jT z?BF|%01Ve}SzvsRZ_TT_glF*+7$q2Xz1J|?u4>wU=J1z1q{O9_wZ+tX^$G`KrK`~S z4V{<QJ6H6I;$$P&?cWNb&X^wO*J#ES2j>dHdqdD$)^Y8GLKBwYL~Sb{5lgRgD=8v1VrWRks_7|C}dpAn>W(1TyQ^@6tHe!0_!+00F98Ytdrr z0ER%VWhA`Xff$`IaMkCNW2Rnep_Beb2JR+NneajCDIDD2%Zu(nn7m7z2|OT2kjU)I z;;ZuW(lAheGD!k$D%+u%e>UaHgWASQ!3*ODe1G6mdHd(3#i)lqWN_Nz+yhN_9H>%? zgBEgPDmoOv`j&B^&ei)LbCQDjml`}G0n%f-+oHntBm1MKO`TIq+i4@Xb3|;fO+;Mp z-}s*%ZzgJ5Ez@IQ=@^Igz3;*Fw4%^Yi0C2QYBmfztLv$|N6sl6=#0dKELh@-2@6IT z$hgvqF7K%Pnz>w>C=m}K;7ZitZ&98$VP+nOg``*yHdTkPUkM(fG;#G z{3`ry{8;E}oyEc5SYm@1e-rl}Px@dkoV!LSrEuH2t>h3A6RZbVfCc*Bx@eNID=->e z_Y|rpjK)F@E;u&m9a6(-)jiwhfYXLwVcTU!C+e*LOVflJLC00nfP4P$-v?5r@R7e05Ar%#EF$nFur1^WqE4#j+Pi zE)VbFwWJ5-cSfHx{Ie$ZqvT5a9D)#N<3JA-z-KpB8`?r|MBe$x7p zn3cyqx@&STUT{y(*NF4fF-^viZf?Nbbtd$?ZUX-rg7}*%Dbq~j!*hNH<=|i-*plHdtACz{`&1FfTxq2S1ahV9)-t z9B0dhbIN(QR1Ql9l5aI%*$Cd5IAz9Ar_by|fJj}o9r7fDbG3EJAdRIDO@Kh*oMRrA z^~Dt=env?aaZ2AAhKP3ua6!Z`LbGIzKCxYla^s#S5b|c7-;RCOEar=SCQW#DY$l9p zCKUM)E&k$MCyZ{UnB~W|R4DYNp68Ew4kNiD6y`y-%oFmap3g1CZ=adf>gEdLh}*5* z+h%b|YSvIoduS(jpm>LKT`;GLD)Z|@Xg-PZCxxr&|XQExV_Y>RDT#>ppB+!fK$7=Wmtv+D=J5-9S~SWv=;w2RpCP|9PSZ#Z*9e_^8^r4e?$#NervaZ;`9Go% z^>ms_medGIcQZ%=>V$5&?+g$S<}dsoafo_4OeHbTlz}YK`LN~_fabrHBsZ7_n-&+o z8bR)QYSTFUUok{`V#c?D!|fM*Ed)e&BK%jyV1dISwTWVz1$9elfWtLryC7c{^pf<- z5SXGR!VqFUi0%iwAkkRDLc=zuWL*eP{i5CxTy_e($n(|!5H2@(Hbvg)?+#z)&AqUM z-EE~mS6xsA01e4F<6~o}Rf>RSTt33$Dv$GlhXWWEi9csRERfqO z(s7)=#imON5bF5wlz7p~?IK1y*e#Xz^MKC5VgdifA0X==X!al2vlB>3rXPHx2P9us zLzboA&dtMsGn*fO&oLoJf(I!HVYlvKL z{}Z6wOUPUiosp(yHr}qb*b~azUjgPw9-;pK5S%@>LPj*u-!f3%I0%nm6zMlvLaoY$^v_$pa74)Tie$GCqHc#2V(o$mZ&Rt+ zwQ1OFtabQjs4ULx&+&gAWQKjYPLy|yrc+__XcjFxs>k~{29y(?x#icz_w0pG6@+b{$ zl(;7H%BPM}$@4FXP~1Xkd1dkjl2Gj*CBz3WQ;sG>7k@w8S`ZxUHTZNI!yI*u+;g4@ z3^I|KxB$3Hb+ZYb9YT1i`FL|F#>m|$^3D#+!)ErI4v~|aWRvwOd3C4Fc}i7}R$@=2 zVyQ@F6HW*=sef!AZcX?{V@5j~PtZnH`dG*%HDbcboNAKv?{8Ui>Ep2P)2Sr56%Loi z`I`=1Q!jmUFMWIArZC7Zj+i9a(`jlvN$x=`rvYi|K}igcw;=kbhhnm(WkZc?9^`3~ zWsM6cYpana-5C*Sj9lbo$`PAfvaMrdA+pcwF3#Chj64aEf6r_TkpJpZCS^#Qmu3AP z4{4AU-kz5Cu4PLw<@R(_>FhBUBjKxszCXxVVp_A%wdG!0%eAtQHs4=s%J6A0ak4VE zvjb4`vn&Uw6_L1p)m2$46wkBCMI66t(kE$pKTDRMSt$=3o8-IVH`{55$ddBsK|zJ@ z(dnd3jPKFM)WpVIOpzrXoEzg~;Vr&6TyWn*R-f~@Cf;R6muQbHwT>`1lljICUEMGs7#MKXv8)y3q@x$FSzyy?&li4x+Ekzy37w**2gzWdBY~KYq|EwL4@rwH?M?06|b}U;#iQ z{P{cPT*0`Id@ebnLf4^=$BS!?X~jXIUTfksxzVjj0;=;`LX#U&=42Me@wdW@$s>Qa zhJ6cI2J^_D=h)NfOqbS@zH!hm|c;;k7F4Ay1>@0-Bbj+(;9bLq2f>0ZMj;2c-TG)=2RKde1rJGlPm%fAGWa zwPoXYX?d)#?E6^e>2Xlh6IEaGe_>*^4HO^E)X&6;xP(lCBq>(+)K8X9A( z29DJ6q2+0IUug}d+p7IH1yfcMtbou-vO zH!+Cbbc79ksufCQ={yzFH5_tey+2#SFUqsi_=@_D8YT4)m9tG7t%NvglpAVz9kopL z+HzJlM=W(Fay6_ZYPhr-Bm+4UwrCIBQ?p%M zxs&8eP}zLV_m}KrX(Is?+S+2E_85sZoX5hlGDj#KuB8&`?Q6!a)7Bxcce1D>3{tF7 zYw^33qr>QHJn;tC!(^*?lann*jpgV%MbF^XReL+L#pDZ#GujjFFlO=8#b!8$o8ez+)vI|Tb`2&M*w?sQwc%ziP zI&S8P$Nqs^^cbRddSh$nf z&uDfP){Xu5dVpEGW79=*s`^EbXhg+axGnorBj%54ibAb{i42j8I18I!^B9@F(3#Q<>~5BoN59a_Ke0lr(QwM*%Q z;XzKmSL;OQRXwL~V1?(6J;(lp$Hglrcf}Lcpy0vG3$Q(|IDB_^5hURc?X!4xE{5MtFSW$-8z2H!c+A<}b z$rV491ke(WcFfv@yhi4FwgI}QNk4EQPC!SXBy-g0?ARYd(n1Q^ZrlAPs|()k_Y~|M zds^4m$EVkBfPq8h!jxPkQzMRo{x_?PlDScdUddbiNCaW?7rawoB7Yg1vW-C=LPGXr zShY~XHwu3>6<;T&nMI80$$_fNF7phy1^KVORVbot}D z?ekRVpGHzPwY5GD0n#nywZC{R88xIm;=388+Y?T{lxx@uY&AS6zlzKjAAIui^g(g6 zxdHx3Prd19bs3nIm{9?2Qb+=LXFHKFTu8nJlpD~WNYB{Ed<~V{K!bwOYC7*-sMSFR!`xsTsiTAA(%fn6$I8v+`u@?gOzj(BbX@(el zn3}XmEsMr*sOZ_xS=cHp198?|#3j+J?EtyvrJ=Qw2hAgvq+|lLmJ%?v?`0${QDnyZ za#-x*zSJ4nW@I_?#(S(!IRk=dIT4qS&j?b~5Kl46J#YDaM8GQIv{xlNBs3e;0WBB= z2|s8;#q(elD(rK){(;m0s>sFVNP-egmcL_m=hcVe!}*qpu%qiVe|ZNPS6RoO_5mH# zCXE4soEg!k4b%C@9_$Gb96AwFBJ`;jQ}fu((e%V5^axVSLF!mPq;15dX3ZmeX?HrT z=RkLZ78Yn}e}7jxL)8qaaF8p)woII`bTmv4$0fl7L}3YtZE?ZFqPG=Vy~kdDtuav3 zaSO(l&F*~ zObzl5&_6(_2%I1zC^OBjN|}O(tu5E}!q2(`yXk?|V2WIjfxpYQJmy%P@c=FAng}{Rqy7wnGu*N)d_# z(hw$o_uzUj&bO?3`1Xeu)xb;W;MO*9;Q8XXStz5m8s&+12G#~!RuNrLcj6#4O#JF&qA{NC z9LaR0GwV2oZSHrH>jE)vFxoCCie;@k7cf07C%|b8npk2u1`8z#rR@vrX1)W0_no-B zNQ55jTwm<2bgk*Xl($SBMUbF1!FM=eQ7wbTwuVISa7E`*f9HZwi7c<28R z&F+T;JU*?AZ;y&y-8=gZ4!+i1i44Qfcj?nB`8n#LM@) z@KtAh;*!t}3lwDgzU(QmbGConhRqIi@Sd|A;Z{Fw6av@MBYaG^q|7sS=%BcT$-s>3 z;LyTDxFvDuD(m6V#z1r;_W4r{L!PNB)hlM8=rpS?Q)dj8n4Y21!KQ-CxF@k_V$faj zf7Zg|mkjTZ$f`2!u{<}D4!oJ{zvEfBh=0mKOy&dhO;WbBaK(IpWIHV!kO4RUyn54Po==T z!kI$)m-##XSID;%z?ASSX7cO?uMlv{_)d{0__LqzXwM&o;N0>qIJ5Z&hrtNfU`mXV z3x9J;UcMfdtSPL{gaMG?>x28@i3|BkK!4n$JMr>B+u(E z6sR%D18}zj=1^)wqvfRg%(9J}=5HKNNlyTjn1HDd25p_>AB4Ry*&n`ymjGL)S3s~k zvGT~2q$`5F(P?gj%U{h-1JEt_m^Kk(k-ygC_UFwx()GvkG_m;pE|7k>kg>1P;o=gK3~lMNDXBNr#FYrx`D!B!hAkS=Y>CXAPHJng_PY5zig7<2*q{nY1f6VgP8?(vn*R}ys+hf}n zTJU*fc43zDtkFED9{OTs#N^Qjv~q`da$?2lgH@L3btO6;d|M-FbG|-YzEO4c_i7IvMx<}`vuf7~ARp%>&uZ4%q}RrTo( zIn=NFrH%dC*Z_5G0K(%gq&&a_k*_~8;xfRCHXhF8__gX1M4hl|5+8mDrs?kYg&O?; zZ}&_CL?wN{Xn{5b9je+3RtF<|IoOXrrDF}QV&_NLz0#gIA!XHNC`0HaNGU-hVSw4# zHtY!;80$VR@QIxNgBet3i1=*{EA+~rHy@sXFY?HMap-Mft!-(IJ!Qb^)P|+Nju@mT zq;K3!slmNG_?2?~7quu>fV#&|1^87NMsr>IY_2Q=C6;Y@NUjRehT|N6wB{nP;O}-D zFguFMG|lvI3Ss^n9Q(ZxcUayZ^k;bKI~5mDftbl>9hiUzRT4m#>B~mVYx8!r!f3&xm!Q_i zuT|@`#%GIFX?k0V%dYM}>nK;zTHe)K-ZfgGrhU0>)$AblPGo>Ei00}}U}XC$vOW01 zN3P~50z^{S93t>p-^wMCg~Hl>#n~ks7rMAk!h$m)cd-q3JmRr7-g8W$@5o9ZFQ3XXQ7>ugN@=;d5?|4<%L2hMRBGFc0_?L= z>JJEf?1xl%d0xQ9P@Z@OheR*ArQMZumWCmg#|-Z=pC1!^XpTO3r~Ry=A1eQg2zSno z@are?z{v({)=mNJo8IfDcXKE}cI8&Vg0xS;ok(+Qm{6JHCz;?d?o{g=yC;^*-uUa| zlcqSnPiXx`XE>NnvYfrJ(O0oV$36ei6N*m2?x$&&Mh}2>HInlL^)AhLqUwd_TSB?L z9^Xpd-&+xX%c)JD86#>b@b6=XgvaggN$`4!8qQH^BYK{x&@W8B@g4BTSFypC@(Y$F z#Fm2e%r~(Yn4se{E0yCLopf09eT0eOmK1N2(&tj>gF`79t-y!dOB%qB3xf%cuReso znID-SX9G}jpT(yK2{<<1)Qb>iI*0ZO=G)HSI81|!8?LVn^%cs4`w$|tx1R0e#R=yX zcI_7wQ^_eDr@`Iy*fvl!q7@yH&WsV(MuwlmW7T(7YB??)&kUoVb@CU1i(|YsIBg;Y zU5)K}*9zVrPk*viL)Qh8j6rGyQxmm^N>HF1S!G*ZZJ~DX8HK^iBCbF)X*VH4ap0R= zx&YKUJVNkAL2ksbzCF+c6NB^tQ#vDg*C*1nUx2Ryq# zmR~jM+5(y&Q8cG0Fr5#meD?_wa?vtX?u8tuDG}W5=XUVtlSTZ*6?KIZghI(qPbK0S zs|YChJKmyzEF7q}jb9>bo4)NeM8Btn@Q7=`(WLxI(gJa8RSQ~3tx5!ASOH7c_|2+1 zVshG{iQ1{^)?A83Np_3s3*@%&SF_9Wxa&ucsczssMS2xPeb9>f5)bjceBdlQ;ge@- z=qc>P)IFtwTLF`2u7CC_Rr zbu9Oo#ta>uUgK(4@Efq_NH=~~tJ2d(X-g+bH<5qmsOFa>D(W?+839o!+#=+`uCvvB zS`ff#FS8+UB&AIs4ndwoD@tZg=sx+Xc_Jz6s3oSk6G2z+4jV9jYTJ@yxFAoYk;i{A z9DMlZ(dO;IN9{pJ?IoZ#MUxzGnm@(S3>*--sxG*5}ql~SO%qhGkWWO+a*u8 zpzA_@lHLQI9Y2EbkEC9>`nSv;-v}=EBzzmPHEE8h`}Ur{vbkh9~2fZ0~+S zY+XSd)46&saY=APpGPRMZ5)|x9hq$&*%gkAb{m;3VR6UlN$O7Z0PX-~pBrtT*6okq z1K^Y+bn;QnH=x7|t+MMqoZ%K9e>y}0K6W%*0A>E}MBxO#s_Rcft=N&|y8E6c!=DEI zU}Imx*e6iVWq^!Bb=sb0-M_gY;~s=jFVNU0a=eQ$hw8RnO@Tn;9{5o&$k-=(ybC_g ztQnze(@rori^W!Z*nEyjS$AzZ3n}68uc@ zLB3AGLAIj#n2-QAVzc=-qTJkfS^a2g(ZR_gN#}?)US1y7Pt3B zmzF46jVy~!?L_TUj#Fo6ipH$CrIOZ(Pfqny7ZUe4GWR+%_dK!}92vW||6;=8_R}`? zo)(OYc&mj{W52I4jk6+Yo4m_1u_gJeV)DufeIz#sJ#;lmrNCO~F%eyG^j8lxchc!6 zX+S`8`vl>m)J#KrB`1oLOlClfmsolGbaj&c=I(&A0a#T3zf&Hz{Gm1x8aV#Xj`I&} z^f!V-@y+NMJ%=VGT9WE!YUE6QNH*;LR@bXk(Or2qMaxqf@WSqS_J`w&mP5ii*ek4EFhd{38A( zXJI3)|BsY}0QwIrnbxGG-U9kx%{Q`k&;P)j9supXGb&CH@c&hGyB*Af5&RR8w_ySS zG5u3?|4NDlAOkd^J#d$hzgJS56T1=mrGOHI5oAdy9O0w+MDMkdRm2F+_*eKG5zPj$uv9Xv7^UK zTF6#s^ZH`PY~9syLmGQVev8evs+P%qww&VN3{ZT%F3;EUf@Swz7&txG`tX$FrMJ$O z6X)FuxLo0t1IZG(MWjy0lc}Cg&k(8nPgaj$$$B*;L_!OZtll@IL#FjLlAf#g3V6zX4ohq(WM|1 z9%T8X%6K}9K0|w5#Mi|@@k<4h!&y7v`KHzD46ESejsTLH<>-~oSFU@+3sCse!h_u@R1`ad@}KLhmN?fpuXiP(Rq9n5M zWh}NGW_bx4ReKB`S~fpbfY7F+-WUtzI}UijsDSFH%3$BEJ^W8UK?F5bAGT~Sj$FE*JZ2qA%-*Q^A1&|21ACGV(SJcV)JV>V-QsvuyQn=tD3!tTZ5m< zXE<)ET^#QG&^i@+3~p(xtWeU8l*>{Ax4lmJa8Xo(ZcswbQCUq(38~4Oxt6KQEGu`X z-C}i4>nvH9d(H@yfLkDJVLto(aY1!0MXLxvaK5wXwc3G*=PP zQ2{kK8)|B1X=GTxKhtj}`CDl2vCqh!tmtwg%1g=4IFd89pd-l-QcQt@T21R8lv_(5 zV)K|`dDZNW1wa1l0l?pndu5W?IaHWA-hHyhCp_6rd9|JbaDqP$bb=s{nc&mBcpHl8 zQ}ZOwy+KTz)s#N_Tm-`ilfiJ4%Hteh&Lcn^^sA1hOwEHpKReWCm+syik17K+K}=@UgOSPE`3N!|BVewcbuQF zn*ztzu-$qFsLZsu5Q;kfG)RCgix{*qCq=)7EZwr#tWnojucJSXIujg6N73)Re_+yT z%juJj`ZeE5b+6iZ7;lsyHDCK_FL>lumq&97Ye6GG<8(+~01yCAlCXVeZfuK`LfZqPLm!Tp(jfoM6)m?p_}TAbZ%24x+f0c&2P$I=2r)NC?Z;;$_nv z2w(HW^AKqHpyn~{k=s&^tHuWkw;q{)ojX!)RrW{qK)oA&>(PSFc1M_wy4C3~inQrt zZqia0fqhwPbgXknW`aQ6{mpJ?ocVdP9u`VjPBmr|EoX>915<;^8D%Vuh{P3TY*~;m z0NG%<-*)~1kC)+C<99$f0PVpPD+2s^9?|7-pb|AykuMari}V}`1K#-VYmy|O3n``4 zY}5DSc_9*qq$x6Z#>1jx^iP;&KdEN0M8`YUN?!5MfpSk$l>$;-nMYWehv_hz;a;Sq(g)!YI5dy|nT{tIkrRF4IYFnKt zwEU5J3Gx&i_dVfjG~>Jy7ylhLQcdn))2fr${MH_;H>h)ND_>byQclY?DEZXI`ogaB zm_bgmV{^@S2?whof#8L7Bz5Z5JlIaLV36tqwbVP>Ii-?UsWhV0#wq=NYVQ)|2$p2* z?X6`K`4OHwdOx+!`>pLQ*6Q0$e)SO`{m>T=`pmckY&#SJ875fFy`Ju@_N(&jMJ_HX zXdp+Wcoy#MuosmRNZw?IZ-M_`4wu$65>;o>`T2Y3AV9;RAxRl-X3}d>nrzWkoU?S>gyr*X4pevM!aKRH00-MKrtd>cG0WKqmwvQ*ObcoLWXOn2HYX*2yRJyJ!!OrePxI%`rQi2gRZhC;h@(WPobuDoI{wcPf+V(wp0 z>2QjM4_o@2iWF_(K#$rr+Zuhjrsa1i)oYDzV^OdxKz!tS5mmd+Dh}E@O=#B&vn?3E z4mNCC1@+y6x}t=#%iZ<#myN#ctp~TleN0pX0X=1ORqOh1%Qo|7Rau=Ow=}aj?7QW? zXHwP68&1rH`Pd6nUI`baK$WX#sjWD$o%s8oj3T>#Nr;jz{v6%LT!-Hok#Vj(<`fUA z>QYhzU;#S|*TO1s0Wz&xGa^Sm#hfMcq6KCq@9XFOJ+B|F7)%DWCmELbyh9E*O|j2Q z2FprZKPZ^Z5=Xd|1KsTu9keaIGYg%!(^h)59Y{VMwbC|xJWCqx2R9og4et9NO&Xad zOrW_9)Ta72tJJ=vfkN;8hZ~xJjBxF*n>dYzZurV-p!jc27!|+`! z5u$ZMoS9mjZz!!{_god^84Z`2$Tj4)IOdP-7&~MxybK4EFuj3w)SRI@Xn6e_T1t`H zB5&_=Mwt+{oBIO}DJ5_cMv*+QdJGQS=O*i>3(TcxvO%V{8x#I$(Z6N;O?~A0R}#vWKu!Et*t?!XE2OKbdG>_l%{Wo`z*Z|dAichV6 zqs{VNhF2PAF3D-9KB4;q}MOT~s%h(Om# z=hs3y-P;+A4Fd{e6gvY67ovGUW7mlZB?|xY*3#TG?&9|Psn%9(3=`iW@-jU@S3k=@ zpM6Ru!zSI4uY^3i3-zN*MnabV00D{B_^3KukOG}>rP<{tUERU5-X&7g%1KkRts$8* z>9Rs}WdF-lj@C$17H^5>6pfl1qeMjCK7FSMC#FhUlqF0X6PkyapD!&$iyt$BL2^Cd zsOXoiY)hx7h^yqm*Fu&PH|_&K8ly8IeUUYZCQfrA~hfD`eP)%rgIIL1WXe1Z@|L2lBDb zr3BfHgD8qoIvp8$n(~kVWi2$2M#bdtN32Rpo*-c?UM61oN#~x0% zp|Gy1Odm5Ahsh#7G*4U#))Fg3T2;BuTaL1&o1XzM` z=$W#%V7*3_B6+0?25E!`_+-aXG#kEZF2oK}n$2rghK~dD57ZmKU(u&0*L)l>?$f({r~9T2dLHzy;l=5{aE{YCltC z+ftR?tfBXf3-SWkT!AyZ_2heHS;O00i7lei%6{Q}TMKM6z{(y2SG1{NOp2m%wHFgt z>m?9tFNiag+~VLX81m$sPWQFLM2o9&lPkuV zUaZW6+k?xQYCn23VVg?qyl%iCPweaeQ1z8jaV=Z7H12MV1$TFMcXxMpx5gp3TX2V< zf#B}$PH+hB584;^f^w-mg2$N1k} zM_B5`zZM7XL-kmHPr0Zzw!!}bxGmLxf#Hq-+FvH`hVox#oh%iUbnp+2rf;A6BJ~Q+L(!fhULN)#r(5P8p;L5 zhVk+)6Gj9brLDbpNhyNTKk})JlVqpQ(EsX9Cg8b*UOu zZEaa)i-)wdu4O;Pu6kCcp>>WZHaJD+=x+IWLGSCWW%nTS$0c4+ZGePR6;i~Q_g=d; ziB-22(AQ#0IcCaN;`_L)1Xav&ko`Gp$^LELx4IJdp^8%3=2GBy`8~YVz_n`HmvmDb z0?<@ACSqx=>o&-FkmoBfyK9iyTjsl{Y0S3^6ub)><$2o(Q!WP4+u=4cWwi@WlaMtJ zoDX{qFElm6AfIBL8N;!F&!doXmJ3x?XLweGwtPQ%qQU@y6h-KHd%%HFEMauhQR&Ry zlBnu133?grpG7F|=$cQqSa#^7`lZwnd7wLXpuff@dsLq=|6D_O+<2bup@8A>xw@hj zUfiSwj0aKLZ9h(^w-ZB6V8iU%T9~~Wr_fhTMH^K79)}MFgs=J8(OcAuhzqJ4TgMg| zhZnNhM3R|#8D18dTwnz}{YTEREvfv1kjzo|#<-*x*i-(H3B9`4IsJaZcmvF1jGz%N z`5Ttl)*FOt?qy|2(OWwIa#Zh-BmI7AnM%S4mRP>PQ~oiMqeH(Fh{1#NW4LzYI%yo2 z6gR4Le#_`g`Fxf&x2#DDJygBx9(f{?S<(9NS)8aQLE_LwlSJfIp(>UtX!9MZ^!9Jk z%@&ih4l<@S#UBKYeE07MUtG_yE5!%=Cqa?*o7)!xA~P)D@$+=t(Fd<0*%{QS%}`Z( zywH67XSNBA&p`Ku-}I8$2^}4LQG9NDDF5@b`0fN4g#7!xc7$3kjLnFK1(<@!g(1`z z!ArxhWe+v_i=%X%I9tZ{EV=ACgeXWKy~!h0cw#GCKYKF_v#8u%uQ(lC>0za0sF{4f?F$1+6Mp z9M~#1;-yb@lJ*gkfSc2YY7vBTZW$x+rj36b0tS;CF=A52S{<hNs1#;ZVw}cri0hL5OFwctyT6c?4?SWr@ zT`|4`gRgzGBf=r6bbAU93VKS;IGB&0ss(NWUGc|3cu2v;D4YcE97zrXV~v^W275S= z31e76Oxsb4C+EID7ZJ3}u2B#|a$rg5$0s5UbW8{4g^f9L=x2#hP{Bjx73yo$o;6(_ zUtCz=A{jC6zzPU&D_+sq=8JPM#`p${@_GLF-BTilRYiGGR2(BChP_a8$8aT^$MHi{ zdVtS*!5QC+y=gxygo)j`iALIHHc6A1onJ~)4BLhW7jb1;umsdlWKtGBFxzdX1Cf;IgqRNy|@V9gLR02!l-O59ssq0IFMnISGc>l;%_TfpTK$|iJ;NEmDfD~IhY(tPcSv({LQBYlU+cWs zZ(|4~7;6x}a3Z#!^|}-r&@k;Ka<-`E1EMK0;i_Otvg4O??lh<IM~AOGLC6-BvjxnD@+nsXu@8L}cMmw)#qm1EeN3=9}kV5qi3ip z?kPBZWn+G)z@1X-4S*9H4#ll9K7YN5i;bjtGBex$%<{VXFzha0578s2>=K3$G1uYDK(Snr0);5RYkC; zusfWKcZ<%8@d*DBp=y}yk8FdOlZJ2E=VPmq&Rd&)Nb$%9W6QSHaq2TT&?wFepNKFS z>uARt7#H@sUbr&W*LS#^{J#1Elxa?5->kixu986m{E zgp%hG)pw@br_cO>ct!b33o|D;Cj1{9(!a6G4)4FCzN-d;u!@Z2-kn76^=S5gdELHV zk-P*XexR0d+)I(%e!6{1;s2md_?_zWK_~xP0hBZXQZsq^^kSFzfn63SPhxq$D;#Av z8)qkya3xi4wo|C32xd*+pRWD!jbe@6>&aJnV{ijFJ7I^&UgRrP6p)Lc4)izg~#H~&A?yK_x!gPSCm!MCkiL>&hWdXSy;g8{dGKAE=1T>W=gB9|jf z?<}JbBt(d6Ns$LE1P3@_-sJKNx4d|J4a^2~AcYlK9~3on_X02TmE-!nl}6;~fOLz4 z4z~7vTx#gM2(?Mf>*YmInqZ|DCW2*|nedE*Mb#&cg>*yepGajFje0E)R2TM_^)_B5 z_aR%mxLPXI$23weafMGt~4Y{^PK(>K|4&}*Lt9oml zMHU0?Tz^tKT~AV*GH7?}-xbFrGV4AK5qDn`D%4@yVaoNFiKRun;*Eb4{pr9^ka8zt zWQlu(+TW7pm@)DzgYM8?wXlpe>0$=Jl^l4~d3}=%{1JS?dQma`Wz~by%$(Ne95kJ& z+}kcYfU~46%3)?0y0k}^WjpU1ZzF@{2FYGn<0m@9XUeuojc-eM(P{mFh~RJ})fbkf zF1L%18MTN_DgWj!pav8!qs&tHTsBp0?Qior#MD^cHr%MZfR51AL;o&sf37$}7juD@ z&iC2ACwuz2dntetf5VfLla2^92O{{weHQHZ6UqPa9CkBCX=2v?*LJB`R+z(#8 zq#3X`bNAMR7wwerF*q_G@+2jkA*mtOd;fK`PfWVCU91W%IpO$%d`=aX5;frQB2-5( z(X##WF?|I}0lg5)`#_eLrg2^dweLEckO<#pO8YG?Z3~RHl_{!hvEqMN0YJHTL;8Kv z8lG$Jc$SaaQuKbZ&k+a$X`%hao-Fz7`d7LEzDO+-_h`NXWSI<%`0{lclgP01O*u8B zVZ+_9UD<{h2k&Tty;{)E#$iUIOwrdd&!`JL-QZ#6g{CB0^k8j>0(4|X=q9-+Fg(Cr zOnecd1n2DCOM}qnpCX}UM<65yCPZ#1q|d@=Xe2cv)vBRcT&fpnoZ;<XF70=1&sB zFtZIyIqTeIEAmnkhZizz7A2Ra@%3`}2V;hQxxnc2Bh)8_AJoQ(Yv8_}ANp$qNU zYBFPb`C=?7DV%XGmKi1(gAC^t^~%hw9m(gGrMO45$ULi8(7VCVra_G*?Af0jikvlv z;%Dmku;s_B-B$rRo#XH<#M=&1f4UyN{woor9xbA)l#$oc0keDVh4pe26cFn(OvqawEGSBd;2=T# zsn{QXVVq4o7j}F4%3K$ePGgjqAn|1O=3=Z~srV%u^~&WAzJX(fEA$Pn%x&U>S+&Xh zS$2T*P39xj*Qu66ZcPVl|K6GPN@g3i3G*78G$6 zcWvbZ{WCkFA<**{aJ!9~^|pJ3({9&e+FhA)ut>Lfg{LRU0S7Uwzw+)|wVI zXQm7m@d^0fd>d&xd|0l9<$#K;PDBwM1bNGkr@(@&Z0Uxof#{}m6?e@76K=~Y>q&IJ zGNc5=xQ9oi_+buVeHI!`%mq)Zni6)dh~R|m=7lDOi6Jt!6YDQbpPkm-T{g<543yQa zj>?ub6+rE6s72mxCVX)j{oxz67`~nk zzHB3n*3W2aZtj?HoLml+VU@~C%gx9_E8LrZjRp-)58{&JgG-Jy&0S7F`@Q=5N?rTv zT$@R!9=Am5|J5v=Fp5;0%}ojA6!_#bX0pV#dYTDy;>Oor$i~J~bV4Vo3~A^9O9U>_2Rv1bL=7C^|9E71(rD9> z%;nPX?mbYjIjxB2r%;!(yDucKP94h}R-hkn4K_7rMwp}2s@V49U1(v?*M2|N9cOH6 zw&N=|QQzl%t2{{NSW*AL^Ez=!nxn-m==!B)PCI4)t`5dkM>(C|3t*X6S36F?b zuThXa$cDsVU5_^Cn!^*9jAem+XJQ^1UpK}K_X(=#^O#?}zN!;YHoWSq*jtJCs0-*~ z4;Ob5vysS-G{sDsbpaRK4e$h{IEawgSx>d4U--#favsAcMDrE*x0=j#XTMm~*Llp=SC+wj>CL>GHhmcB--gH#)GqE+TVUyzFzL^<6|Ns-_?uS8 zzvHK@T7|h3ug>YQ;{6YSP8hI+@}KRp%bLi@5gvDK=U*mRtxA8GcqCR?2 zz-AhT=qOFxT*V7zWXU+|sHlu#qH!qT0yl<_Tn|iwoW2VF$XwPB@DYc!AAb%?;DFEN z2aA4P@Ocdl2r$b?^MZB5qvJvWEnQTAXDYVrU(1g!`J5tB7Ieh$ahM!@ZL=7^(@TQx z+ASoK+aoY7y3?k+x-b^95Ov)OBS9Z9&{DukVeNLMm{0T1o5nvHEK6npm$2|T$ke*o zo6BvEIlEJ>*()l=swq+v|M5ja(hhCfL%j7d6MF-7W1DurJ|Rn8b%xUqG!@1|rY?>0 ze5Ez@Vti(!Pb^lwFvr*XjXVrxbbX5@mj=6V83kI$B z5WI9+nQHar#RO)qb;kyGnDGG9agEq`s!Y#Q0PCugncuumGeQoH_YyqFkG9*ddcLO< z(6I|+R={myB~EF;1O4rVyk1@jKM-&B=QwiH=&JT?)3@Qy>RKl-Ma_8T+hjwMx88yF zae{OaU6o+)L^XA1(6WGTc%vg18&G3R&SwE!HOP4-uq$;$t|qlSr1Q%>_ro^~`E~>x zHDUvwYz@HFL-sGN@nB*{yzD%o&rWKM$>p-}pWij8y?N3*6*EuZK0h*YtVQ|G?o5L_ zyI*X)rreLo##k?=l-?_7f;Q&K0~9C9z~!Qfa%Fwc z+BT)o928-zaz0Embh6guJ~vH7JldFvt&ir3*hl(W{Ns-Wwn%SPVRS6v|$)FVvW>H}Ub6m6e`Xqg4VL zO{x)dwNx81QoQbjQN_&motav%!}Ef=XbYtN`8msZpuHIuLSV(Hi`fTDe7-(kV}j3j zaYmR3gBjI!4XRoRxLPQ+EVkAk>eJ0#x!D=HY)C$HZn7=#6sh-~t}GYzNOTXb%oYWW z-ZW6l(KV7`LNmXlo)F%I!#*8ElD;v6l4y>BB4M9)rO57y4Q3W^5EG2v$%faqku#Ss z=OvW&K)FWvjh^|Ay}F?`pUkNG6DCeRe5^iZ3k1JqRIM<32rkqi%eOocq$zdNu^&~r z#c>8H^jJ^x$y}oV#;M>eUNy@h1LqGvQCBD#U~NvoARdYqY}?%?)(t`)5=Yvl_wr{ev1kDd}{2|Zb(Oj@B@YMb=$>OEcc%8;sxT-1Ui zO_zuZTK-86IT`>uuG}sAKNg^=zK5MCGF3{1)qd7FC;hbWSNSVOf~#~^lfBj0!3t2R zSfK3p`2~ad!~t)*p+!xPYa2ndv6icl3(e1P zng%;Mm`LA&`;EnsG1g?D{5eGM7bt!@ z&8l1>iQe27CqOhHomx@}q$l9?$95_%IDPA{OOk`V=cf9g|Vb6!17-^JXb@Y2m<-XvpN5OjSJHGSXP zDSR%09+EJ-0K+dWx7x2KpfNHt*c)h%WU)G8(t=w3lfElE75Le+3gn);^0S){=%V(k zB7bC+sd%K3&s;f0y}=afZaKC>avoIHeZ9jNm<0BIv3REZVufaln0yisFzfMZxDxD~ zgLcK=sc8D$=@^DbF&1&_;y9Rc3MrcyqgQ-tu8{eGHGb^Z2I`FQAg10%9->(2PsK0V zcj)(Bk?F%?b5IHM2*n7Bv){Y}nm$-g`}HSK2+FahjwY4a+rbiky4?sL0d;9gk9JtZ zz6$T)*2FK5h?SxpjYYixbuYNgNRgPzt*3(HMr<59iTHCsD!4NqHxbqYaP7oIBD?*o zh&4hY3{({yTe#uyAkIM?NgP2u*qov`m?DJYqu!##~>=;Q2EiYqW$?84{Ur#)*o z_ZyjZQep)yDg5Fos!E|97A`QxzJ!s(#7-JUnEeUvZhdKFnFglrH{4u&BNvpe0w41T zNu{~f;Nxf@Xx%O6F;GOI=gn}PD&bua!%G}rX&x{LV}m3qHdlt>ZXr_%W1(}Oo(kPI_CxyLsC%e55_tHC-zTm1tc&%wf2>ww-C_iM3 z;Q7UkkoiT8;QYh8@t%+a1g>#jB&SqgET?2&G^c#-FS0N01)SwO<28f#NqpJ7>qaK0 zs5hl2n2$_DE6r})Tv6(VWTnqdf$ouYgP-^B72CtpL%&?yGvY3M3sUgY z=qV-G-=6O{5m+4j<(j=EcU3ImuYWKSHS`AdsRU&frV=>spDq~ILXisRpDQT;sSqj^ z#XqZn1b+VO&T~s}59&K3vv3PWV%P`fs=}w@1hvdOc=BV6dl}oEY~dV12`{j-bV$zG zT+qFZ?SUJ_(Skuir}A~$WtpEb+U+ASRybRKLG+jDC0I>0PrfCy9+H8sn$*Y%WVNNy z&XGI1hll$oXooUhrD3(%=!w@O*-lViy0_bALYqFG5m+1yGb?13g!PSXrvU7tl}Nxb zX%JV@CO%QIM*YQ4%vjtWHgjnk|A_gZThM2uUn>EbjEQ&)4o=-wwmlsh*1>BFl+ioS z5b_`7TY*s&?`XMlLS=WyR88@LvMeu9Vb2uUms(9JfeIbREvE3tUsnqw3-Agbm;>g_ z9pJ{aSoW-%iNh==1jh3?;b zhf1x+cGQR;gl0#L3a5HBm|IH+chb>A^-}#H7r#sxhv@=P`i%tycA2xU*R8SO+BBkPwkx1i3ozLTmu)zrdCa!15R5u>t7+ ze+ZcIlMR3ZG31!h^27!Rfc%TRxdFo9e^Cc7-~{3?Di;LgA^b(svVfF-^R^TLWdG(t zssMDM(1!oic@kiw&I&+*fieB*Bx21_HUa=MatXl+KxvwKUKkpfABv2*?78WNh0;kP zX!De)A^?)o=G3C_X6nyFdr)O#g@l=tVOea_XinZeLK`^wsW?Q!O$KS-Q>k<&@()y9 z@+a99=8ttfmnV6wjHb6__t$;Vkc(cps36;ql)2D zSmb4Xf@q$73Za`o7*?>mt@oJm@1#zecx* zbcP_f-0!x&O@22<_<1-TwOgdmBohr3V?jn}4nY@-anxy^4L8wa6k8dTc#qC|3^OSk zp|9hv%wR>F(lMK!4?l8_*nL0`ZPPD{=H26d0riLNMvLTIpDydawA!4JvWcSr*9tor zy~ZgMfVF~lx8M+b6SM5r+7Y;>uv9PQK+jG86L8>FDprf}kL#|C%C=AiF?Tr5V)VAtIcC~ASV!*%JS9EOSG2jZXB z=Di!pv76}HPnM$WwMcdzbcPQgzJBdrjLxHL>U4nH ztY>GL;m~4ojRVg-jJGtJZ5@mGfzAl@!@rWQ+tP4>jnwFj#7C^uh=p&TU0|e0)dTtD z<=xAhKw5f};3sMz?!iK+cP5}<`u{0B_J$X%y-5$+V6lX=3MRp;K5eydDgVKc!@Q<$ z1S2IdK<^y=hT&he$EKgrF;mIMfhFdxIfR3bhOKp78eO-8_T%BZvY2j7+cZbrFqD@& z3ENV=W@RYm0AY#`?Me#)!l8dsM;D00fX(&`WhLsPdf;ZqXyKf7!L}LU`89b^OBE@=~lz8%*K)cv72_C}KHawU&5h-weOU4O_cVZIs z20c62FhZorN>~0Gj&Nb>(^B*n>-kH?YNy{17$g;ttaIXwc?Sp{(MUx#TB)E0g^5KL z`wE0uR2t_MXYa!KZg#KmBU8S2>B|zMSyX|=E8}CPeCTyQi?anmNv0{dy%L)h5jqa= zB8UlNFXG>sIoKtnYkFvfgr8*|dj-NQlP6$*hea`+Zg*v1{v|LZsiqo=6|l+hl(K_y(S40#$?fYpyvAiN?1F>3&`7 zAzA!_+pYZkVSyDftfK=NI`D#O4?uwUc1lraUQ!h+ddgUQ=c$1?gPJic6Eq=HG)nzK zDz)D7FeUd4qukGh_G|Nu7gTbkIdrZWMueVf0tNg`-0*$<1aeHnzws%n{=zg^^i4g ze7Wh@tKtlIF8OU_##{dC-dsK%dkXlXphAPb`j8|c=jhW5>(cd?2_P76$82L56?UPx zBPn`!jI{^6Sj_-COGs1f9&U}oAVG230)F{B_GHoQ;@f`}^!&4Azv%%|xXG$|P zs$w?8!N#uC#*T}6lvSbZqSu^qQWc(-vGppN?h>JZKoCq;_JZe>Yx?GCbGt}t@Kupg zAsbqe|r1^2*+Y8n_}6tAsa6Z^6e<2l5pdToG&qtw}V42tZhw~j~mrxC&@Nl zOpMn_#>*(G$+ne#39}y0#%r8mr6a37N$xXofnH;^pjfBCM{KAzB2trBn5RHKgI|ox z>LRT&oAZ<)gXY84Ev_E_iHuw;>>L%^p&^&(pk}-q3$MeRx%K!f8J$}k0C=;Vj zn)u0xbXfj1w?HH1q_f^3lZu{*zOM4&OM7*^i*_iVp&Si)O6O>pO z=2`>r%Mne0iv6B)id%!u$`A&9fc)>GAisvJfp7in-?hIbC%Pl2HE%z>g4kB-WqRej zvykeP$HY(BR;oWkcnS9^@=xynIV`kByT&s-s^3E{Jh+Jn;<~|3Xo2bs_2Q`>PdaYK zEY(WUP@A_}kbt=rGt6&7Yz!2yQaV`=%SlAH%M`QXUbMtmG>wawZBJbtpbgj8F{F0` zQm_RiAYI)(3HL@mMcGR9f=0OMb};;9KWd6WT|vk>XtS`l-YOzD2-dv<{DK(QJlzEY zf&e2^x`aAN|2QW|{}?y$>HUzPt7`#{vi_>rW$Ts)Y@NX{)+*!f6=nb;Dy@WiJ~Ika*~LkENnoeR!A# zPs?}b9fhe{^<_ZF>k-C;B(v5+*oB<5YSq*UL7y;MBPr>!LOM3Wk}~7;P_3VWVg?PV zo-RvyR^rjEJ+0l5`>cKR7)BnRDOcC)d7!lYkE*V$4MD5-T859>lEDPtm^cJkay!i8 zXp7hxIExHy9IR6=5JhN5C20pdmbtn_+a!Oh8i#z6>a-!}of5RuZ&f36Y0Jo39hxE* zYiV`j%U(h3E?(8aK^Yz!iVcss+7pA@Onba@aVuw7yJIpk(N7|bFT91Xl3&r6ch9qU zf!sf=>RJk7C2fPqeS*j}*xlIuMAdd`gWkDSg`^`heHng0g5VZeJ*fSWC<=kC5oBu4 zMxj)0f)H=0YYqdCKJ`LH2j3v%F8YF}wEP&43eSmIzRST_AjqsX^dibemiKD;El`_9 z**sNEu-T#LAv7r#lfDw$HX(j8)n%xosS(ehh^h=-(_@v z3<$FZO-SGsfKM-Zf7Z$VbQp_whw8vXDw&(4`> zllLC3*CSQMwH~vO#D3Y$dbR@ZP3u&YE=83fs`|vy->Iz%NWg z0|T?8%9yeMuz znK-FUQ{Q3E17^SxX(EJl6qwr~s*Jq7JnmT3Dme*faAHbgD1mV8=DDLMm!Ab(fx5>p zf@I6sZ);A!bpwjMw7RNZG?x6{^8)TZV}RAefynv{u0d6hf=_9XExmPZPYNtpJ!v~$ z*Iwvv0&jU8zk7#-TyK=X-$X*tz0>%9)A#pWXM@sq60V*2Z?8z-U{XG)ygp)Lgj{a6 zC!aXrJ`n2=t|K4~z14zj;L=G_iA_b|u!~|4T7o3N;nAzZv?MSqhfUE@DA43u$=DQV z5>j340HB6`DDXTA5spsU9Z`S)DPwX0_5_7?LW~6emoo}-;=FAduY2cbN^$=ev zs{0 z`bFg&vrC@4>-Up`*eFQtiY#(^BBE)0Sx_w@3zCWsi#*3W}WH~2Qh3O5DR z9XB@Tw}AG?>xA~mk@(GXB_r63RmWoAcfI8oBBiV5CB?Y*qlval#W866iSt!3{-142w>5JBbSGO*a`KwTjUS9}csDvWVguWVI5D^}Yt8OEA{0MW7;w zUR>bCO6+0sY1zT}JBjgCHxmNg|U(nwmcfQUs?3`L1x z60L89qXJ{Q{tHuV#i{ka{9btW8XDVP6{lOQ_+kXQq-{L$I?lqM``OS$OB=~-e&j_Z zQ0_H_SH&(`_=tb896kfL=dbkn9R%XF1p*7XtC3D*`O%6UJf{;TDDJ*Fc6F^K$7b?L zuhp6?S<0@(p??YTlYu;yB9K_N6o)+q!Yxl}iuVS9U$)$?K7elpp=N*D^|z4H=2A-e zmQ47&Bf=~_U8UIzk5}YkqTXq)=v3d1_}n{&;iwyFoLb6itbr71HF{`A8Knz0v z>6;8g23elX+FPh{r#Z1LMIdl^*95p73S-WVm@w)L89(mK6|3?#;Z4@9)%(S~6NoZ? zO&mMsEQFIEK0}g|f>uuA(aJtzDk&eK)Q1Z``XtCL%OgJgi|v=6_bh0$rQ>H6El?=v zQ|d12U3*5%Yb!T$0>Tps&?z|b0;=Z-eM8UcOfl&fI<_V&pD+s4YB*uj@LeKA&4^rEf#O2 zL}ew38-|-NM4PMSY`?I{IEw}sj)?Zqh#n*mm+nXxccwJju)@W+}uZRfd+r)FVspn}w9^=R-TkDJ-Y}%OwtIO3^U-Zv zYGW&snY25gQIM6Tz|cAVD5pOYt(#C?&3vvmlH+uxYTU~%ihWTjVK zC{NUe|0)joZtI_4rR$sBbmJ_qvGR&XiWVocroWUf-k$a&V7P#ZEKr`~JFJW1ml(>_ z3MR+Nq8&qBMk(CK&mG6U%rnIi8A7Bx8Rq;UQfQjyqCN?QmAfn%=^59(+lHGF~Mb-P1pv3o1L- zR#u6u5!9Hx`+gz>)La-iTwD;E$c7m8VZgRPyXU(hzsd_<5~v4Mu`*AtSHdk%=aC98 zz89Z@ZKPv@itq7@j}w4o>6-S6Jx&*T_Wq^ao?QvCPLxqSP+NjSB?=h6<`hS-5S2N6 zWGQZ!5)~hIj)eD{Y}cQ}Kn?O#`#;yu+*{kZ0diTb=T;KUw1JPROr=#3apz4PSbrCxhnNl9fG;Bz_A5 z^GBS>79*w7g0sL9mss=iTz{Z(2-=HRYv0mfN;QYpm_zjpluvt|Sd#Dmx_-Ss!Eaib zw<5bcZ2DBZgFpWre{ocH{RzfC9_Km|ynEF1DJfQHxEw7#cei%%^-a7tfBXskLw-1a zp9%5}RQkuFhmO@BYIJjYLhPKqeGDADn|8nMnm8cY$i@|IwyFWk5 z1>NeeD7O#m8Yvy1_;f2hi@B*-PIqVN78j*QJe)_L=c+k3_C;W^m0VIu8?_T>k;&{eGGP8haCr19bo0p4=qXp?IdPx*ZIl0^U zNw2MidWOFFs^?KGa&+6-A$1$h^sIo{4@3>4N}lyOa3Lws0lCu6Nwq?pw6V$kd`z$@ zsOe9Qji5q~S4wze&+pHX1zA&M#V#+lo@i#SFnulpVP%~}AJ}<96M;Xi)nks9?F^b7DQBaOX~xNh3>c3g{sx`n z#RFffwL)Sc4wA?kQ=xRYk8({Uugi@n7Q1M}TW7`ExKYD!*XHv%oIup}cQ;~myjZe3* z+H1->-IghwgvN3}Sgn6vGy#eYf@L^Ln{b$5+wlP7dn^`Zo&4xA{Wgj)DG|}E_KBa zyAc-C)UYCQShF2Qe*a0*$y02%mYQhjOpN}F3U?6^AK(o?xD;WY2Qp}eV??+eA6q>y zBAJHzBp2-YfQ9L(K!v?-@PI4oQRD@yXMW(Y~Na+E)B- zg@h%e{Ur>(ZbGk#AMUK0GC?a=Ny*zlrlML#bg9_J0b8{1OT9cOhzc?jeP?XNSV}SL zL~JJM*@87l`hieQSpj^pNulp$i>BhD=H5OtC=TJwDJMulWajw*j6^AGJMN?Clw5zu z%g3O+Ak~~Cn28|NW2;DQrzRWRsBT5U)Zr0Zp_eayKmuxZ-{W~xT$df$&Q{xeBl0bz znANUhoo==28;v4JNk~{vUq8*|2d}e|7zHeN4(1LGpqsXLWpv)C{8KNx#BMCmuRmLl zHkV84cR52v&+f61ya(FS6wPEvtPY0>wkt820^w-7%S7;`!M+DopA+B)-b7i7)QA-! zvQ&q=I)`k8CV8Koe}8n>O~2M3zPX;@kJoLAvrVG^!?#mVvCTFeX*+WhFG07Bi!{lz zAIzATmE^a{D^oBrj&fpISFTt9V8LjAXH`y257@Ivt3+13bl_FqE@MrZ7)@C?#N-{0 zVIS`BOY8)*>CqP)qyC+or!U^{R;xuTGl+8o%2rWnn-fNDgr`ZDmiVO8K0Dq{l}B$&_v2gV>7dw7rLJL{{{lIr7ZH8$ z&52NKD3$f+O~oP)`QGUijU3#~dIC*hYNV1gB+t5|YYysd+Fq~mdEw@Hom+#ayp%#l zk7oXsQ%riQl@oDZNo**(1QDEutFqq)GRHotnjO-hMOF08E#aV$0sO|#b#~yMubXPl zNDQiP64SQv0v#k}ctdKl+a0jbl*D@(xauB=ylq7H8QM9rnJMQCx8s8XaAE?6!CwYa z3Mh6#>qK?j#ajHuQWpaI3z1#(EK#l{3C?oAq7^5uvE5=gH`FfD>=S_bTk2W20UOEy z=N@D_DDPb)YRao#n^k0r^zzPLg9)LE2Qh%5{Cgnewbd#I(pg`cP9|GwpnTyy##7~m zU~6=aaM4Z1u{DKW!lQ5Pmmu7=b#lF-4b=h=OuH2-NWGe+M!Vfu!xa>|eN)kozN(Hnzt9ia-zWY87|2G#Ugt2i!U6H3%H|VzX;yxDE#0QacUO; zBnRm|_RRqbh`t@fJCP^UNI7cHls6KrW37|4f|l#hnxC>82^EYtR(2$0yYGC(|z zu7`D$>5sgE?&CnN?H>`o{UKYvY^HoF+BQ|SnU|pbAUY#8_V&pS5!+ADk!xI_Wh1Up zz-u+mbSBqxA0tm`9f>97$ELEfFYtNJ2<$&9@jrUOo+kkIU%lYM8=wRDs~pJq0%{@t zqL%=G;=i062vGKK-hD72=U*-*6wn0yH%~SiaQyEGj(7kw)L+gz1@HszFOtdyM8W@6 zBFG{-&Y)nxz=n|j+=iD?7z)75*dzrTYf;(hz;lF?r1zi6xNJ9bF`U|d5z>WU` zRa9`rzn~ZuTm$(ZOCzj{ZQ^-UFtB*?3}`fPapHft|GWK<2Mmk~>_4B9;7hKIU~F)l zlrA20dSy8PI3~m&h5TQ8PJv=-SY#InFfgw_x(&^L27#3Xd#L{%l_87)j+n8B_Gi>T zn*K8yI6gRo_J4(V(7_4+hIG*Xgf8^{E0l!}j{Y}P`%lQp`M*M!f0)11{vYqp|CxYy z!2jj{TSj1q@#iUrk^jdcW_-l}C;X4cQ^p(yIM)9w<7#7@s>1NOZ^NA1Tp{b%?YiCG zwY}|HV4zF<;f9fl$Trp}2xj~s5m{7-k{Kdf#EFrhK%A~2Z!kfDEdEgWN{mP_m^qw? zvLBlPhXxjnBw`3oiBUSy_q^vqcVvIMKF{+$=Q;PBb5FCLJ1E&cO;GNGYEDp3zrgiElff@e6UWL5Pf&pnqtZe%J>Awz?>-7L7BNZ@5r_mLKYwY4sD6{6Q7< z`k|5iv9xW?6b;s>C4{5-zj)!MNqN3+q67YA02zIHRkBHJ4?q1CIKh^?w=*M4LSd739_;2tc0!E>@IK~d@Kkd_Sz66ubnp- z-L=c8!X`>+%h|@y@l%d4O{ImJ$uf_Dv%C<*4@!;M*c);SwC8KJg8NI01*Ux9wgexy z-Kyf@5+TxBRhMn#?T!HUm|%0(cTCE<$HC+D%D}h;PC58iErhT#>|WZMFria~MxhFq z-bA@Llf-UfqjbM&J{uYuYo`8X?-U}THM}CJ9IZyfi{DEF(&J@mdp6@z)evJBYintC zAFZx4w7TYKF6LY%?I9@}?5!q)8FwpmWC4A5dbQg1z9Fginich2ixI-sh)Z=uh-zA> zsJ;lqx!J+p8@B~$bibqU`l5c~K_&e)0#@|4Lo-^!&z2}DouNsw>jPh3-!_Bh%@OKQ zOp~_dl=Pn(Fy*}x&031p|A<6Q%+*32x21hQtQowyTuK{QRs7?>5GhS{sY4lFUTe(4 zGRwULrbTTHu2%`#Ett&-HcRxIXVox!yNyaUR5ILYNu@R@YF!U`l}E`-QsF33n>ztJOfRDW(RY45D;<|E! zH8wTa)vdBDwIRqZD?iEJv6rs$R@$L-m-?5Lbp3WCQq0zsPAr(DTp3!7aV?wgRi$6~ z1})zEVs2j^zUSQh0h$|Ee6&4k`o*u~{5r^Rw$*i%&B-f+K6=CG0f`>jqfpvZL!7v{ zpZ-6==;KjG&P{q_?NsS)6MI|`mp)WSi+ez#2Df&#Hujp&XZ%Hfhp#<$&axSb&kjv2L zirSHY#c=E-4mxz#m>MxE&`H8f{AJXbNrxTO&%l;1Pbop!7%ks62hwojv_f_`&Y-|F%I$Kn&i%rSBu8MYNti(3Li*ZfO znl2DIgLbGPC*o6tVUwE3=ZY*>?3A*UEc{Yf`IM;4;n}+V{tn)VPyTqZl0~~7IX8Zr z9{bqueC+&m{_~ok?0K8QB*iQJiB^mN`m%@#hzd-{wu+ybzkW3;zH|Hj00fA_7kCRE zXQ;lwly4#y7)MT1Pq!7{kErL#7Z-F$PmZOvp(7gM9+znK58=qJEHe= z^G`@0=c&G2qe49PM@b)f;cV08u+3+PXJ=Xe#&uh=F6NlC&C%QpXRjWSo$r6wIdz= zVEBU&y$B4vmV4JQu>vV{rw*M?DctM|OQ#A%yz?#1`E5i$ z%no|Te_}_-E)C+07sS@oP~VdvcI741O@)Jxw?-toA)O)}DpWDoS@yDm9W7)-=nf*A^V$sRK-}+y&FM{|0fd0@)gGnc$uE!bDXmkaCDa$UAay95YhxbI9 ztv=2l&=K1w8zJPO46T3>OeyD}B}L6ugZ-+u=_G1o`FuSozp`MyB!j+H@|82=d>`N)FdPaP z@d&th(Fv6$A05iiDZ4fLt=7o1pMoVUD5@}KBNnMA#7<}TAHnztO6BJVaRm04oI5X* zvdA3Y*?gedVWMXjA|2lezC12ICMM#s6di?}qthJU;okwkPop6|wEW(vMg93mndI2p z#RPc~e)hMj-SXcDkE@TIFsIWUmO?&X@cYS-{UV9@}w?7FYvuN1k+ zx}%{6JKj$s`Dprxp&%;3J05IoW@Zk44mK40Fib^D%@0iNYS?D2W;FtT2rVlWJ}foO zAW=iDYTOd?rG$L$0VZgpX0c`VJVMkqbhOPq^$})n0HmKivrAEla zSWPZ#AW~(F)oRrdb~VDVfZ63chL43ZRl^USvds>&v6(}`%eBiTPgKpC&d?C0ob@Ny zD^7B!pvAIP`b>2-Tb~5+Tq$B{Y!Xdh-;y|t;PS-w^r^=wKnA7x-%^(LA}(fDeS>5m zr6{uxLuRf3kd#l|0-aw8{m!)_9_g4RXz(5Q)O1yrXEt2FzADcZJsNY(MDwqtNK zrcNm$RVpA*4ofI;xin))>DSF`o{><;D+HUhi%>h-V9Kegp~_FkRSn*taDdFZj$k*@ zOa2WxdZYczm;p8*qv?C=`jcaz=ipV&J{4#vxw3V0_b`$ z$^EARIwx{J*{nUmL65zEPF`qps-^T7`S7lfn@~i+AR5ME)g}%PBtsM0{5PWz1fKSg zOjT3FqiKYw?r#F!QGDEJ-5un^5>G?OOHy!n51t`uW0J{z1vHR1z#jcH3pdZ2HaIg@ ziJ3*lBOdo}=FD_{{WM_*1oCy@C-k54J*^`aRy^tG(jjNoz2KDKmViqZlm`+{Svq)#LCwil<1P6~m{uMq5IS;(SnL%x_6HCL2wysu>SxuY<(Mg$HE3fXW;8ta9?_CEdqktc?nG$p0Nds#l7@%ut z|0wxa@ay2c3u8AqF3)-NY&botJJxTpC?1xncGo-cWk(R@0|yYPLPFDae<3B4eIh8FqaRgoF(5AT2iHlrMUI0G z?s3%e5mhJU?TZq(?r@AimBXCyQM?#ET|%Q8L~;4xCLWXv$vmMoRVf&tmqj0a%A3iB;Yj1)P;@;ArH z1p_wHrO=`NeufTEtz81i=UgnZ9=m>wnmxTTt7x=YWbFd95szjI9retNo-n$JWB<@K zw8&YvWveYSr`D>-5{op%QvZ(C5wYJm?GbRPQW1v^_m?QM=+fs6Ngdl)!Jy`1<-4e# z`g7ASd_)tsI_v#F-|=0Ox2N`Ua(>}DI2N<=jX50RhCs4d*cy$y%X~(BwZU>>jw}eB z8=HJ6{#>++PcqE1hH@ozMtN7*n*cicx%m*QuCh=mB`Gnr8r6aTf29i3o+l@!LEU*5 z<*0E&5UC*@RdqtmZRdKE>eERZSZV|(rz$OLArr5a*A7u2t3#rgWwbzYWdc-K*(ex9^RWE+AT?!1s3aA9q{y23EwmP!wHN@UAj!8LWO#p^@osZP z$y-l315X)nq^8!8i?=b+V-gI!G25Q@(WLuf(qSj4c8Z<$u_zU!t8gXUh^yxlmTNg; zw+C6NjD@MLl942}9FuPiD$2cqOk0H>r-`(C{#mXm2b^n8IT^j3Ucnc|@PIz3`Zs;M zAn2NMP@F6#&#wmtk>D;wL_)1TIO?qjec@_uc|@%ab)pV(G; zvtZGSA{jqRVWjiQ(z)Q^I^ph2J(5~a?M=>>7HanoojnmqnXy*%jAQjfl{nF%4m1qC z?>J~+iu!ZwpM4WwA&dv3Z)c>@d|dvK{WMm1_J?ABoOa@q-NDb@tEKss?{Q8ZS6*)( z0_?Tcv5~i55n?iWzEzb?k*rs9V=u36SWvOQUYaRW}-0BDNmpo%l3m**`<&v zhMOXU14OuDmUj9-f@bPZ2zw2Y1^OBAC5Vj1T`m#}3u$R-segJXirHmkSCy@(m)n>s zD#o~2LX+`Z0Gu4N^9kt+7UB;Tti&C2co*K;t{YtjTD14?OP&01vgF72pR2AYR&yO`MQAS!9V(iT+ugbMc0aT5&ne{1t2`-WmBW_z$(<2Es=@YzORJA*=`g(Jkmya_%MQ zbTBVA=(I4em-P=2`_ws%AIg*Fk9=Sb?EI)uF3dcokh$<L)L9dWnfYkUNA9~|B z`?*%(b$<@~xlfSm@5DeKYm76GD?HJ=qwr9Sqk4NEEsuist*1HKd9VIgAC2>`rck2N zz`W5j@V_4Zpz&Hlb1!cd- zsS=XyPHu_%|8C%L1VW1i;3SB_i)j5G?_@`P{Y1#L=i?u0Jw1GwfO?z)|Kpzk2WUiN*OJ{(@+ zyAcj%_PWuD!nVeC{g$SHJMr-;W)xnoF97+kPA`T<_E6$;unzfa%lyvd_q$KDveex{ z{gUiQ%)AeprAKy%hgH-HMv}uGlK36}WMonUefT0i91rwz3ztHl)}bj>ho#Xe{|>67 zFr{+KW#Xr5p5safs;Yr%w2ziLRldZYw*I0Y=$d~)D?OrKd1Vm5)1(E$g=4)1Z(EAY z4FYQ`<$nY@wwWV^IwFduw8P1^eT~^@dCC(r9Dt+Le&uz7oU6>yMr3!0+e_%2Oh0qt zTY@#VoZ{&{+$}&3^DZuQ4(x6_q5Fv6Nsa6Q^QkZK?1c}&?cH6;5WxF8N7oP#$h&Hh z3Vj}om=^=Ogdqr&1z$pl_UqB*#szEcJ^OPYtKh~Vq?Z!UC zJNbc<+Kx)R>4LUd@1P@PLy(o&-RV`kwY=)1Zt~yySJ>p{c2hGpWb(LseQLV#W!TXZ ziA5A47{oYn>N6{ZRiq8a5|u_?EQor;aRhq}6g&LMo1by2a>S|D35cTM5Qt)d5Q6Cd^ zs9hFm>EPXE_QEo+nNGDQpqXKz!hX=rk8Ja{E`iWD2MJOCO~O8}!7zQ|`LQdrg>Wm< z^#$*W?+b{72$1H?!tc66yYiB=+HHi^E=hWmrdCWXP|Ph@#41LhS2=|;4G&5FI76CC zj96y70BNE1hX_3r5>S_2c$t3z*BAH#`T8ZsJX885!~0Da?nL$c(I{lBHcr?j!^tNc zI6mpjn&}X2H_j)f7zh2AjQ+uWm#Dz^$c3$}D+lOGWA9hn9sf*gpTC(D3VK`3R?$_R zuJbYoBJf850rKwW_=QY?+g}9C@YNWEGfe6UMN3zrn=?u;Z7*ALT*T zJ+A(fng887H`w!TpFA<@dll$>(dfL{E}f)NNHS6-G39f4GO@{gQa#N#3kpO+VD`4V z-K8g&;ume@U+0JPR6V6U46y$I{=c0tnE&a7@d3S3@q7qCKzzADKq&v~TH&SILxZ6J zue7|pRi5f|xjWZS*0;N`TtPAQ({9;7)zOI11_pnD{ss(%)%})kFl)qj@}K}f>Fx5{!I?0aB2pGjQN+0F(~r^qDy(rRE}1} zUI|8{6iddOkZzKGTs_>OR@?5uMxa?tL0%$%gb5>d}?_5sBmN`WJ)==P~vAOooN8g;1U@#B&IH> z7-U9{#dzzioHe)mF03{V##LmMyW06PWJfvWs6#VqD9CMu@U&KiE?n7%+0Gxr{rsqQ zSX{=d2(A-O-%o>PYyiyp{2Tt`Bwxs@%kjJhs=$@<5o^*6n{F-o}&?vV+;B9j~S^-aZ5gA zBdolRFL`{WWMflV5?n%X3+uuN4#^#+B;aZO59N%Fb?iW$>#f=QW(7$KWF~!1aM=RD zlW;}6kvg8aLg1tC8SNkn*Whb+E2rf&!$Qp?A?^404Jpx zKcw=F8#47G0R)zmv*Si`jxMx|P%582TY#BOG>s(K-W5r{7>ZKhH|~J1Td0$oRD=vU#Mi!&WGK_q;w`)X0(|Bg}@VM~U z8>3wDYGZC4$-^40T*kbU+3s8hpE^s@x+>Vu0&je1t2z(1B$QvrI;K95mdwejo-;#E zyz@Ad8CYBy$SB-2{2LV6lHfO_#}bXQsD2BkVNSj4A;s_9D410|)b8tN4YqbFOl<#} zV|NOCS&r~Z3S~*=YXa1WCO`Ih2%Uv_lB&A)YDKk=#PUmT&G<>0gc}+}ZPg65nld(a zM;tZgG#Z2wI5HF3-)aYECaI<=Dy0@GEPlBpaKHjt7fH-(hGq%GZVF~)%5c>I5iosO zOF|cJHE=ZJvi-5_#9wX^>}o7J+~HubX`(q0#oSG=VEFste*hah=EkK8ODm9scNtII z5gS{@VpjI4;}qOXoGNHfpL`%BGyk>{VrtljFC3`HbDKkMFhE*5JVtH++-L79JjpV{ z*1&hC{bl zNj;D#Y{IqNy5w=0hsx%dAd|M`(Ixf7dg|pp9AlD7oyj~LOT9Oh>)9GtKkZ7d#W1Q& z?9F>n^=?jVJ@rNeDxTPVC(P&{Tf6K`te$;h>YW{4xO~&-L%(qI+z~gD6^NeTyJy;X z70z(pP0RI&o@je?&hWnSP~I$g0I_dY&M-aYPBveyvh7Pxvb;lQ-0q1e{}n%Md&kar zz3FA&91vySgdRV(lr_jttxSEmd}nm=|B8ivyWkNRLcaKfA)b4~Cry4+%qA{8Nt64Y zqS+pYcHtjd_chmUJ5JC*mnikgsgOpi(~QCkV6A8rbby{bCZ>0aa3&DZ0vfH8D-oCP ztNtCGVxSWZS4`30oDvU7MJo}29H`d`T1_UVC0dtWZi08551z1^gl>1~YLCz%?*V=K z1I=Rf>s`>R!(o<=Rq9NbNhIjSO(piL3)5JL1z&N^wM#}^_# zYr43G#1tIUS3}vG4%5sc8fb`?+?MpbsJV-o?Nhkhszu3OvqVad+EhIY2H|)!kBWh@*9O|ufe~% z7De2T4&9X3|Kku;=go=7%^{EQ_eeaHiZw?a6nOYT^}c#`@h2-{o^Y8Y!F2KdMB4%C zstcOj#exz`>u6`eI?y5-qe6xfA*&vZuzH>yO}?j$yDGjx*(6!oBIa90)+!@Uj3OC} zGJ=DXkwscsUGt!7MDs{VAFH`ANc}OL3b8P}><>vvv}P`in7O8C<)Q|cw9g3>3M6w* z`t}Zq=y=@sdUb8i;|Zq2MA)#;b?a8eN`yhRsra%y%x@9&B%ofpyB7gm#d~R9Rg2mq z)kub@n2U-zrZ|n;bb>=vi+YYriD8|l675KXYFQAt#~VB9v_U4xbiE9K(7FXKGsK2% zGd-X6%t%Z2j}A_P5lkV|cL4`!362>0?c^&xj!)PtDgv7pZSFFLBTn;fIX=RYl;hhc z1!qtDD|5phGH`wYyy&W6w~iTl+!gyR=hsKXet^i~D;CU*Vd!}Ayz*fUu{KvtDj;;c za$b&y{H0{F=;qg3KLL)~TT!JCmiKPo(q@U1|UFa+;2aAVi+*64Ln9Q^PM3hC=t%950$z{YP1&g z!Oy!0T2Y zQ>_APKxr6?Rot0icZSXU^k8s;Sb`*5f@I8}iZo&5gYUJp5WVKEyc1$vg*d8#Z`Z`} z+0bsd4K%<~>KK8O?F2gk8|)esC$%NK@+mEF z`O>kgu*(t?@O)4yO{c7v5JTtlZc?4zH^ha0NE{+tp%+*6DZO%0>L+Kz;{)=xeJR@m zAsx07nRi5HK$_58a-+BcUXAVT=p}&8fo73hHmH zbnbVyLo37kM36cp9rs*E<5mi93fN$2=EaP zX-^B5orsq>d0(wy2eE(7n7N8R^0UkT!Q`%`0upFhB2fklB+#z)5YAl*mm z)CK)F=Xd1CAM$wyVBbF_NH*P=&Y~D8(*E{UB z=#`B~D9sbTOL24jU2vVT(Dtz0eKg;Y(EA61eNN3~kjuU^GqOS*_#ZcelXx0V48tG4 z3B=(oF+Fygz1sYtwFpIOVnGw#P{p{Ed-YS=h7^Wf>od<}S*=&4cbfa)$b~H-PJ_b| z>2^_5BxG9=&uu7v#w*~-I8Eqj-GKg?*qrz4m!BQjG;(B@IAaFS_+ zr0caB=Mbl&D*%`p+J-fnCc5a(z<%HEf$LT55|q4xYE>Q8J*woLS^m1!j|pvA5O?RM zL>tv@h=Rh=MBtQv%TneJs-h#*=wX`U=|ul@taTpUxYS8oN@NeMXXn7jm*&~+tkw<8 z*#ZxxQqpBwX@ek8;+GJ14aqj!&>zkmr*I*_Op7y<)Z)pWu|78D&|O9A5y%CT&~2gk{O83y*}IA9J)flWEIgn)|-D4{2STQc`YewOCh`bR~)go{ir%&^CH^ClNTrpYS!T!H%<}$>~!a0=E1h%CeN6qxw14Q9b%S7SULI{n zeZFXae$ah??Yi|JIsNJm#zkHMx&z`6Ot4-nFTvCVDkr}Xhwf>ggfCPX1_`=m9HA;0 z`v2r>QIesnzG$?wA(lb>@KZS+;VX1Nhuq`u;{(6)sv7X?aT?&$JjZ-7GDy6Lvz+4Q zV8;1|^dYl21?M>MhB+5hdeUbOwBxQ@m6O~QvfPwH+~&=8WH;Y9c*fl340{rNhrCX~ zd!&WDP`i9sS)v4KeSh*HuR^h!7&GQ_q-LpcY)=z&RDW$cuJZ>>_!5GI?{A>CWuMx# zPyyp~;SME1mg44($Jd~7M<$}0?|rS0e5;)21F^Oq>SIq`A9kt1sa_Tk$PlFe8m){QCTB0#Do_#{p)Y&T~|rwbZu###)z^5TNI=_&hlI zu*ArDBr^)VmdjGj#C3x6^D5a-wFn)F^SFiFM3cqG>5x1=H|=L>jk2GYQTfVfg@D%e zI_d!_X&-6SM zXN1~W?kkdjXlDBuo!*75jck_MKBim1OWVuqFdK%eC+z8WRLH|Ds#EQP`#0pm31d9J ze&O3E5B(k|ic@a^;-~dHSg)jZJh048DBg+pC&crW&@&7uJ$u{v$l~rB{$zhotRVIs zA9^c3f$o}@w-HhEVyJ4j9nf-$8udw~J5vJQCjcTdI?pLc3l>sZXz+z**NxFUZ=81~ zF~_^xf7R#AKhZ6M({2g7QL1GFvG_yMIoY5Ft@e!UEi*+F`M zB-Y1Q`KhouPQ=iD%o(BqeKfl$*ia0Z-wf!8H| zC5A6Imag48Ntgo$-xpJD(MqMRnLRhQtreNE0j?SOdxjoOi ztWu5e(Oi9Ew+vSkJ!GqUY1HTZzjZTeRlTNz3O6B|>yQZ4L!R>FO`*@+0zvC`WQ_-E z3+HibJ!06D^E=4J|TwSugg8_R_< zWumn(tCuUvMKXm`t(4F3Z1H?lGv!(jzKCq0o-EiO>(r!U18=Bpk-k(irR^!ir{Iq%p!;7uj!*6;*xWz~v3#}^2@e~45GR`rV$OmCt))Yn+sjXNG+Y&`hUxyd{8 z-}p!?kDw0h?WI1RuOK}^LAC~6QyRhtMlHDs4a)TM=mRsFyXJ4(oV#d;xCY-$)fMFA zp?$cHA;@iRu~=^qr6^|HCuYw;J;SBF%IlT99-e)4Amx*)%G+dIvCfxnA+Jp+y5BWl z#7+r?@Ha=fLdy$*<>aIWe4Mz1b#SB(7`A1g_3tuaX;SOrT|7dS+Uml{CN_3UTqz4p zty-4>_LW7K4X6&)O$j#(-Ny)5?(Pa*p<2sK%)?di32O_~FAO+$#ggTDX&Tz?h^og1 zuqPxPpj<5ol7Q6swQ1(UhijV3Y{Njj)5aQq=@&WMA9W*ls)Oo#|AdfKk0!LtCbaxZa7`w^@|E83m2jH>P}>??9T2AWjm74i{1&hSej^`@ zz@&dyFgB|Q;8%3MhtEb55)K}X%E%2w_0km`#0n(CSLJl|b--nlSqcame4+S1kwL7) zqG|{T8Fc&gd7}D1DMPGG!c?iFXb6ZHd=dCR(STiG!&K>$*6E2DbjS30g8M(wLab=R zRJoyQ+>q4yhW5Stp>N!@D}R6k?N|5@t2e~GbDx<7ioeoWVK^9|>QP(=H(`-b^bb&VGrN>BrLTP@9OuQ= zdYe%%6s#7jN59_VFBZhH*LMUYuvK_%l`_g0ye!vnomExx|G;)oFk`0*w6QAGtPd>>F`G)_K+-DG( zk#eo=mR-{#svL~db-**W)#JiqjwHAikYO9qq^9IKv$-13S+z}+j&TkZkA5tjCG7m4 zPsZh6!wOX1RZOx*u>yuF5>FN(QBamp(GM;-fUdQji-dgB9o@+f@w*YL%C5 z2<)YIrp3~jzg(RcFQ)X|0L=@OWg^AyuS>#06DV1+u1J2u{=i_c4MKDnY+uGI*Uchk z)vJl%U=lVuB1;V|vYk5KQ=v%oM-cck=Ac5BU$%0h@PdNg_=vOTFn+hhc_RjfkW4V^ zBHub6cZKvsfR_}>O26ZLtYhL%OpAzY9G1i_?5iA@}u#%M^K1CSB-4C73}rxw=o zc{QQwmPU(gTOgdSU8b0}U?&!UbIok7x+NV8XIcUosESf0lKjTG48oRo?S2!AlRrp^c&=_EY@}$1-3~kO|+Q4MYt83*A!Ct_Y}U zpko;_R09N$ioEZ)!1z#C@pxdqqh|UP>fKMnL5upt1lp>C`cs~A&Qa08=eO&GA1?@! z{jzvfHGsi;K?oTk&8x?;U;~LJ7c{1x(|}@20gr}9!K3vPBb#f3F|1EmXi;?zwq+kE zKsBt-YFW>)=&W8BCWF!@R3r{spuiIq9E5=p0NV#psM;=({rav!smNQ#!t11CbJeua zvCMaDR}3DZfRAnp77M^V1w&k^0?x2$eQA>y?4xzO{;J*(mE*n7y}~aV@3r0c{b>o; z{5FpodHw-vt^IV|}=R>agzk%c$S0DNQL&+zx1hML{4G@rhg^Nn~Rr zOHZJ7HlxiVN|YEK@f^=+maA22^&-fgg4!E@lXCW`FfxiDHz+W?4d9YKY!<<#ZZdbE zyX8*>Xf;!8xE1@}?w<)Cj;B9Pay<$u^*c`ZK}xCiP-cdXXm%?1eMnSxzi4WJF#WN} zWv>P>H2g*T6DR>~fT&6b7o64I!37=sKji#qL*jS!ee1@Zhc`T^KkhiWeUzq-scfr~ zPTg#rW9QK{{FuTJoWYK){DcEmTWBNIuTcoKYW2KP2X*4ZJHPlNXI1xFQ0zttY50i; z?p}pqDEA_Tu6HP>zfrD-Qia=q@NUwq1OqT)l}uOzd^pH^dfu8#|4R42X#gk#G~VPv z(06fvXFrke7Li}T~=LzcxBzQ4)EBR zHW4lQMK^O7tTpLX_MD4$gU12kM1!_eIQMbxBaR4@)%Lh7`?xe$`82F{Y)e>SE~nrC z=}2rsmHOgzH`gde}t;(N&6AQ>HE(9Q`-1F&vGxnO~2pe5dDs?^BmjfgeGVVQCD6%^kmPi~!}1+Sbl6 z{W)XZ@Ii?fA5oZ8*ushX&&M@7?oZSq!LAMhqUnwz2ITTntzZm1gY&OLgxAl4NgQA%A zE4CS*YEhE^)4=?-NTa?$P(=Tp9~J%v3i@w}OzSO(dN%ppykq`OX$`maK4(_q8VC#`2ZlH*YW0V)2&D(wA;pzUYnGw`4a+Bs6^O&Iz-3 z?iS3qoCH*4xR&h`ua~3_8ul+@?{FhrN=o{K%BS4m%^fskYV^0{oMf(CRwMvRw<#3qHxVi7-pQF;Wq;Ka zx%>9#rR#b~Ky-YSYNZO`4T1>Q>sO~l5e z=)`@E5*DZ!OrT%O^>i=Kqowj2X+0lxPWrs{2as<5UHof1lP+0bGFe|PV9RUCNV-X} zup#4%rc7sCw@ko-)|HS?*?j_XV{jUoW0p@Sy?kOe)Z~lfo0LBO&t~bk@_2(t$R7@&PNVZGTRj2&DQrbGU!}uvbro`0 z=+C<%dWZ_C7jqq~V62!?t1Q^J2a))Ouq(Wn^EXu!*L9eruS=C(x)xA-mf&U^U~?77 z%*e$n;skoQ)OuA{-#XI?QdD7q8xf88Zsgm@-i>Za)Gw5WSdpvfSL~JOJQ^$<@j5q% z{Im`u1j7sk%yPVgi%8uzVb4YkfZv1$6IvH~TS;Ekvqh;R5t)ExTYFX4bAJ~<-c@b{nULD=J8QbF+8y#g9( zcv=%`-O+e^jN0(m=R3J%A|!i3_D$WPT`_{-OohNq#Zc`!B(J%^?zMA8*ACTB>pnpX@Pdho9np~= zarO4or3@`-J_c#l2YN32DMuVB58l40w`f(?n#S^IaLw;wx3JoHEll=N99>H|-|6=9FyDy6c^mI3vKu=Cf#$gac-fr-@oQU4gM%hYpj@pnnKSbs&n28 zZyESPE{|aHtv5F0h+hohF<}96L0kNoM5K z{p_yHwyUwOr8f_1SP(}=OmpWh_?wcM7k4WC=l`F-jtRzncODc31m!;=%JQEGrBBU+ z{ZE9lhi!tw{*ThUvctHRPsEM*1Elvd_0S!SIT&)><_d?s&n`Mb58GB47DtJX)oO_} zmeP>M_fnRuyskmRr=m|PEUxwnYLeYhnotC%SK!?(q?T=0qI&Vs|AD#9)|KozG@`l< zG-GGA-|_zU((Pe?+}zvy%Hjw9nu*N$i-Bw}cu#~Vfqx5WF%(Nf)W!yv8pt^Fx;w1N zND;{t{Ni!v%lzX{+6C$M%5^U^-@O>xc}qgfAJr-PfXc{Eb70J`vVSn#2K|C{fZkS% z^Kt+>FEi<`Fe1Xg^y_+faQ`C=d38SvI~OC{$!O1`{#Fq;_U)F7AuK+!Ape{4)&wHI&XDVL{$N;8z`ld?@Pj@1&5& zpyP8Ki~+O>5wSnfh?OM_?`J}>eEI0M%2Y-}iN+oCc=^85fWnAqEnYQeo!>2HXfor} zrL1|Hz;XPeG_*r}IR~JQSNj zF2QO;Opv|B)~-nkK%1gVJHC>q%IBauS3-yyS4ZhG4_&Uu9K6L*bVqujb)QTT%KX3V z{mSDAt@)Q+^?Ve_uPJrqE{#M?i6^E3}7Y)dA{L83e!?l6cj9^B%W|ftEt;5Hh61V zM<(XI%Vv^7J(ye^dWCJ+c;;V(AN(x1RD>T+orK6#C9-mIwKd_G&kI70Ud1@rm?}2$ zoo5NU>=++IAepHcTYSRr%c*oJ?I1BoPLf}H9Y=^>%Jmw(LR=Z?d~awK;OSW^`0|>r zS7~aQY|*TqDv{S%JUOX%rjYvm>X-zB^l&k|S5;J#THxvL^QIY4wp-T&4$0&Q;)Vgd z@Vbl+JeMXLE{iN?m{b0ywkIQg7*WQ;{p8-V{j1E3K$LA7W1)W16qBy9T^2AnJv7&w zzw1>lxH|TD()uwD=)ZbN4oo4{ZzH1YX~^oC#DSvc^C*j%eyV@n=2 zRQ?1ssrSF!WdsoKhF&hyDBN`g5buqm-HY*>e*Wo~zhi|I5EmR_#P~#0H~p0Ahw;tM z&qeuz0jxs64_P~=t%>?a^;$jm!3)_tN^J6}*q?iA4tdq4*sp)9emr6d|2`sTjheGq zGJT`qW&k#9KiW|JfxKvIM5NHQy|k&YD69Rk{Tc}RhPz9!7)dz zl2j!X+O@;f8_JHS-V$Mk)Lf0`YSQJ&1K;RfgQg$fG`Sj^&;+}DeuTJ868$1CKX9gE z0!*rMCSxv_q);cSKaN&De|H)U*4uOlU8$JaIldnaCj9s-D$nry=e-Y-6m_}*AyKqp ztK0>2QKj@<&IOP9gh>60_-ab?gCKNbCPBk!S#v7w*M*uoz*4?CC#%7RzNaS73|{)I zq3oe1ue2beI8%!)b8?X5#$QdW65nVa3nI+L;n=oq+qP}nHs_9Q+xEoH#I}t)&cvKx=FNG|_tjhH{i|1X z?^RvhRlV27b^ZEG2X&Lk^49OipMEjXVX!h?YguUh`#gxtLs7W=&&p1*b207#qqSUb z7kWVPfzp)ETfN;6Ov=n;Znc5|kook8v5He)42BYyHBrj64E_+%c4=3{)te%|;@&~c zAd)>;o_`7C#|}E-L{EGwH4BkHF1vW)r6!Q?@K5K5lSL7D?;=$x;9B98?an%afXnVl z%q4Y`pcjO+%z8n$G5l*uxb#@&zkRJ}spbKq7n55WWDa%)Bbe%YO=v|)v&e9i5{DRNu?kFtw?%ITWj%tEW;f(LFoc|82a-f~kIAzFqC zWpRfuEI*}zND!cgvNyyY**}M=)XD;MJ^eOEy8ghDd*H->W5)cpR~(48mnMA}s2CpW z^Ee}HME3aO?`0;ez=R9P4f)Imt_EOvBLVs+HgfVrq$^A!3(8#b)MMGbs@fY4Y=D6L z8tLzGf0rd#VS4#oN$sY9-Hz;IoZ6My9pdk*7SO(i+-rh)=&kX@?_1g%tyZ{3G#*qKYa~^uSRYk zVC$_FZpM{PBX-MZkvn*MMrAT(5YT|l;eSRxl>g6?SW9Ed_5YGB3Wu98|D#rDf!+i~ zfPsL_LV$n>{ipwTga?Dmgog(sY$@JM0{d@WjAKXbe}m{fLDc`wOx{v~{g>ZLnF*rw zoj>=T&;6Z`lX`oL(n9lK_rD40Pe{=JjdReeW5e1~>pqwOj>^j_7(Z^-7W*)8;z$ux zFh(3n+^0}>C0ua3b)=7=puR-9b**IA?bZ*S?~U(L5K0&CHi<0-I%;{6emT0`2s+RE z-gLdbtlv5dgO(*Di-@pA>CQw)#dP9J;5-_Xg>*)8V88m#gpx!Q5P47FluB4KbJxr~c{1#%l;|D|Q;1wIv#!%~41b z??~d`GJ86IIXUe(zZwVq9MyTMh9JVU*_;w*x{NWvqJhky3Lf3-7qoPqdrtA@G{P{p z20axQ?e^cI#R4$PdM6sMX)+4uJbp0G)f)_|EJE+Y`Be{W)>TLy7QOhL@}10Rg(ipg zx}5F`*R|pV^MX(roFi>Ax`hd0=Ycw*0 za+(N0e+vh00Ou}8)S!yMVq5t0WrH42aL&VZK%t99qsxqUbGuBmvZ8f3uQ_1v$7o{RHxx)N(58D(z$O6HkJI|QD z91$@X&KM_4T#{F;l~72eiKCCw!7g>YX_^Hf5r|*@hBLPFh9Ho@i4mOi3AYamQECrvB{&rn;WE~ zxx6><|NA9n{~duq`kw*3sjBeO4VCwE3 zpJu3xE{YMcZ<`4Qxur)ZhMh)7980CaF(%OjRV~#D1~nQsGU3&eHd?;Tu>I~DD*Veo zPF0Lf*17Y3Y6QOTb^e@LWqyWBo)zAd*=w%X{Z!!gcizicq4Pedf(b($5<+DAk1tGR zm>a;bnDCDtRhQV~1N|61)}8F?iaBRYFMrI z=L@mmV#!IX@r>%A>P9{U2Kf|6jCC5MeP2NNg{6^63nrX6^tEo?F`@n{f%i+38K2Z< z!0dujOPwlbr==>tvJ-`5nibvn%v_95#xxlMvmU1Y@-5yD;7B+Ycx9(~EkWIl6QSfr z6@jy#!nLZ#Dp+W|-ZdT!Zo9>m*M_*u%5kgFiSR@I^U&EWm{d$PM@q_kdbH8Rm<9kt zB6pjF;*W|xNd{Vpg007mmNv>QTq+PfmWH;uC+ZO9Q7)s}o4}MKBX|EL-3swq9@yvt zA?o*P4r1+!6biN=Zm$7RNgEP12UDME7JU$iL75mV7bBGi#ZhEK@gW)s%O|(+6J6XA z`Mm+u5M`n4KxezqMgD+s$hZ+0lL8Ql8Y-h-dML`3(Q_u;4e$G;mQ77(97trnJj^lpyG`s9TnM;d2MPbQ5$@+b0+b8NZf z>M?Dvh~__C`%6F*YFt-fxzq}k2lm!5+>)fkbxei}j$EG0jBTHY&0@PHIso>**$)-s z6CP1%JYfp8v_k|pCFCyG4|4Uv_Nm%00j`Nv2W08KZf1GE5BE4+aEG2{40UWG_{6SqxAX`K#DtFl-^SGCu+Y0CH?4VX4)Sbh7qS{k=Z%?MyLfken$n2aj7FXq!iDUHsaE9i>L93&qkTz z-r$JK`zMT?DZ*K2Q!AE0SUcwD*6y$# z{|(b=X#oa9|BD?%q2ZNmvMq3*gwoq%G=Jt$*jCEuQSa%V=!$SmF592Q@r9aoH%aCf zpzm;W0T=1g-j$Xh=d_GrRTqcDj%eCNc;cc4@4XZTSk@rLKp^D? zZt%N`$+@>E+^r}?TpdoaYBZA-p4mQVo^&f+CG__TMMU4NBHWa~KV84%7r)4B0Bfo; zWm;2?g8z*YPN{I3ViOoD;In1l7%=!6kLeB*hH>uR0Y-(*3 z8FI-2eR0oDTV3S)Cge8xsR^rF%+PBz;^Hj_e;Oob6b0u=R9-`d<1nw|x6F#I@!3k1 zrf)E-LU9UYqGNGx?!|~;m*rwSr9>7}@3gtXhVKPp8VtuN@gVJ!hXvXDpPvn%8`_+( za7EImDi1$3QkO9RhpHq9WpMb>Di`W!7LQ88bjdYm!8Fv}@MmAfu2_4Hp^HFsvBxcfZhU1xBK)&J! z;o1L+gY1{6!hP)g{4d(&n6mX*yce}j_*a|JJ2buxj~EaY5YoycvP_yId)Iv|9D!x~ zOk5o95diJTwB#O?>+u&o+aq<#H?hEnc#pL7bWs9G^XU`BXNM$;fHuy<`x2FxErM;< znMjMUfIS5L>Znqt~8q#C!ipvmPx) z%{jWuKe8TGY5)KGRFBb?1 z=YM^a77`cbu%9fxmAL46LRNj3 zey8^RFv=>3Qe*sTS^1PF3@rSCQcisliTa+*@lU4)K$ciI1vDmqYSHtH`O6qHJ`j0v zrm82KD1DCo@G%YZ6}j?{PHZ59?FWE-;2&=Be#C{hs-FA+HW?skocQG4_~Fet`wUR> zH1I?X@D*V61RyONmw14FaSnyCxrd3Lk7*W-uc9_Y-;uSt>r5rXtV{9Gopi&D4;c`b zQ!pdBi>I|O0h6LLSMJrE(#D(hYK~4+-Fzeo8;>>B1jLD4ee-A&SC`&Z6^yUsV;ZhyUr-6DnMn?xdXp%sv5GoTHXVj8V!_l~&A5Vg>XpP4v^Y zyU2&|?f?Agl^xk2ID{t;P)%b#l@F6+8`3B1F{T?3RIMp7hMmt0|Ks+#bUVC*f7nlh*=0-wZb}q)7hA$X-YAYrl(5tW zSn{Y(lg=_54%`*zkA!~iEpS)){gZ)wKYNvMT!b}`JI|~=s3T&p_KCKyUWcXSd%yD- zt76O4eP;=Nw0E%8(dlY!uQflHfb+UN&S+tq0C-tqS{~o7wCxu6nP$Y|SUXRnu#wFO z-Q6C#R#IPKiPg?t@4$DEGIhD;v+Y6(aMlCr=e)9LdT-&1Z?G_y4rJkTK9IlLU~$Ix zdFjpHEIwAG^-bBJKK^cfUCgAaE5X)R z1YQu5yb=4iz!nYyCv?s)$?mLqe68a8kEUcMxZ;~(TXQv|g#jqWKe!d1>3_V=06V$s z)YOQi#<}a2kpi%DH3GA9B@C%gt1UXM1eaNJjS52P?2P>BTSF$%8JE)n;HG;v2go&4Qp(8{@FU#Dr_o};I!VG zHl?|VMBXODitBV=^qx7Zc!#8Mz+4?HWF0(Sf7KXTjqW2}9hUK+24{mZ8)L0Wf&yx* zr_#Bvv_l2DrFea5K6ZV9S@HEJOBTzr9c@4;Sn}miSae~6H9h!*M!7rgVrw>fJTtSZ z3PPMr{oNIYN4a=ig8km3fZv8nteKvrWMkfyHhXHnvuDB7SbIUjY|OYZfM=dc$^YO6 z61vhUk!j{9uuC-#oYqP?z;RZis5LX~*&?RlzxiE;gIy+n6#=+K+Y)!q=Xojz9dAb77O}>pwMvlO4vD&kZj&Jx$jd zQjbZ6fQV#i`4ljQzkzq^5a;d@x-dG_kdyd}KgNoS+y(n~g>jlG$Y_hGLt%VjN2a7c z@#n0H-L4X9mltb)z@8f+tG59w) zw0f_=@GEfli+pKu9c6j#>?mA^v72cOl4;B*rqVnh%i1geae!fL{b73eGX`fM#TXN) z{b+CYsrQ2rEn*q=+zg^Iv$wJ6jFe%A2G)0tB)Er&6GNI z_KX{Rjx!LyPju=%@|K?$eIFm79=9)f8?~5ue#kPwKgRv&Z}w@la>w}KQz)>g-`^_YM1_CxE&pUPMOn%T-v=f{0AyvN_FnzmrZSs2%? zV=}T}GuUeC!(pZd2dVt3R7^o^2_3gU+;~POC+m_?cQ$6_kyoYFX&F10wlKP5WV3jS=9pTRfktd8L{K1!u74dF&B{_r%TF_&+fe zDJYidteQ&dEwk{^kFXH1t8<)2S|zelFx-PLDd(aYKJ$7<>2T$O@ID{h-^ zRh)z*XM43OVpDTF^;TH|E0Abv`U1_}Tc~yc2A?XuU0H$&nL`pzNV(6dcbm}15}9FM z*`!CjNis0ML1+%zY$2KuT;Y8!_{Cu9B1s_8(dN~EP7_nj;Ol_Xn7Wx!*(c(!#brT` zVIq7c_%8i=dniDn0!^-{QCN}oe)62dRz2?S?CM%I^fGUFkx${Bs{7qL6L*)EwwGB6 z@G6rc*#rUMD@OD-+S=b;UKI>mm+$#tzP(Vk>FJJ)kUW8Pq-Y!PHaS0NSUGU11`+X| zeqN-1@pygteSV>6lUW(zXDMP=c!1C@&N78exd&FM=k(@W*T_LCO$ z(D2v~VV*c51G(f>q-$?kZE{m4}(VhOb@W5 zsHkpv-DLYLX)tRVknU4aNyl3Ov1leN`ZK7%i^fy7=wW?;znE%oTC?dDC>GLux|cgjPdmJw_#laur`>XMT1ZHeyi#5j zx>Z<&rJO~p?>6=kXI5u*cV z*^oZ6Xepl!TGkZ+IP7BKPf7oNv=OX#89zM*UA%kj(xT!j~vO#|Vw6apt7l)zRCFIj9XL)s; zKT=%>XJag*gN>3Lj~Q4)d1VZXQ2ffkPY>54383>ri-9f6Vxky&kB6kOIDY)4Bc1Qp ziIza)oQW7}BO`#V5A{>ohNcu{vv55A9!Fi@-gdjSB5tk3vMJKW$$skiY50e1^(>C` zZFO^#xz(O3-~)nYWLgshq2dy}c9k7>p6gi^da?7s7H5p<7{h6k#ALQy-%AklwwFb~ zWKauA9+mF`EXbdt-=5;!crVECE)-QIuc?JBwSfR!HxN&!A`$-w-onuoQtQN)&Vs9D zysxg|K1g0(p7AkdpV(V)q-Pp0LuhLW7$iw0jLRA?z#zCqiJKi)Yf|2K8B8t6W&KBA z+PHjuT4hLY?h;R1GrB?#e5MKsp}-WJhi9K*-`s^f^4 zs}k8RgB`B^gzk4}$CUU|_4Uc;q`rp*e>4B@g`|$E%+P-9HXSy3xr6!o2cSFe7>(Rx zM=u?9WJ)mS-|QfGmzx_n(=nB32PJoEt;2IeQt-{h>?>QHo|aTty^=vUJ|weQazi!b4O>cy)Qo}GoKyNXVG1+ z1CBE7$;%DaaU~+%k2i~Lfwwme%-*CH6^Q;Bjsr-(jlKW+6p14~j?5Y=KplCL|8$8X zD!ag=2~kDiOpFyttG@cfDD@6f>(Vwx(ANxL#6jWt?}RJyt2co_f|jo(!NN3vHn_fX}0ge2ADkY{?LQl5MXQW*HA~M%UsCY zfu;wiS4!5wAY~Ptmc(pon{^ui6HgN~UGYGOYKt*VV8}&q6<-}20EvSn6voI?h3G82 zM1%~zDnnjgs#qNf0&K1^3QY93EieD@0(%Y}7Y)2SRScv96AB%dKO#=emtKDBrviLpx(CLl?y0sm@K~Y-x#R-q#_YM|$tf6U1F^VWjdfdi_P+CsX6?z#vp(RgQrDu#$68l|*2|}G8eK6KQv*2@BML-LmX65;@KX=O3?UdHWi$f46NAE`yBgClBL%!|-qxT!CauoP-%dI9k<|}$;r7H^& zbV+uFG`f3ExEGbV56wyTtWc<(CNTim%J^sf*S7#k6NWT3CK5M#-UpkS{|$B>)`VwjCE#7K5>E9JN3pJFTJfA^-=zVF!GiR$q>7n)`J~U4YLo| z$(!psq_8iorW%uoM~ck_vCYT1acs7*#UN6Z$0 z_YY}#`U1}nu@8aBpRo_K9RC9IiNua5SQ|hr^d;`|G|vKbK4*NA?hY=f=y1dA%g0{k z_r={Ev0j?(jo2H8?GEp`2+S)+zPmaX|77h>zb)Q=quHH9UKsx)`_3UO>3!#XF^95j zEw=j9wZO-RXIBa=cJy#Q4}S_*5e@{fdIa4d$1jE!uP=)iU!5N=C_Y)re94^mJ=vU- zKk1w+y~~}GzT2InzU!S|J;g7)p5HGNp6hE)Uul4Gzc@oI8|Qs2OrX~n9KX{e?t zE`5PhXXSiO%a_oN*Nq*@r5aBSgtZwx`GTk18<3gq?YbE@V2b|`1%k%K1=*qM^2I#@nn%jGr@Xc$q^<#qH~|m2q&%1A`u-5noq#0o=%@&2qtnhw{9(69KZBUTdnq6Kcf33>b?liX57;#oo`5he*+RgW{m#R5!b0~!R%Va6 z5h}ssR1b?j=jt+AR>7xJ2a^i*zV0+)MS zyQ^Ti$_-eNr#tvXZyth??vk9~j{&%P77}rAh5$t8+~UyO^DCb#EzfLub@+IQ~%qlpmY3mV7ghXw&LLHS>nC=Ni)(%sX+L(S6E;{Pv&7}fsp z$I!<8LCxP|&5lc>2*V`?SHfh;$CY>|pG8M-#RvS(q*yt-oT(8;gTlQqIQ?zdamr zz`O`YA2p;iNG2PbNXp1qw>JlPp~(5^P~)UJ<D0&ER*66~TT=z&_Sn0w98^cO&HX$RBJU`z<(R!)W{Gml0&L#91fU zvx<;CZKvacSKZ;!@3NDG>{MPgJ?KYVc5bKcb_4CG8evC&I6f%$Kbu2k`N~!g3D#X_ z3j1^Xlc>}5r=O_PGkQ*XqB|#b`xybRR8aF-XEPMMP2s3ZE7X8 zW2?cZz-dnm9M9YaPRo2{BKQs;xmi?xSREG%Yd&>ZJbQlio#kVrPPHae(lTr~O`Sr+ z^U1x@X}T@lW$sjtP8(iadfzIf4*=%%}u;J;Ke zNaO&S-I0sCKXIB#V1mJ!IDM-AQ>T8-VbXiIapMW;!u+*uK=RG*k7Nm1dmbvImo}04M-C$LbzEXUarIyWYxh)pOZWJ_ z^+3Em)VKPC{lixH*;i!a&BCX3Y`p z17^OzF$1)nj~Vfa@fLgArK#3+amJ%6WPz<(=NNU3$^+uO%a0)ro2?3cK&|aht@2RW z%P~v0#8=52e2d+7sOr5gF?INySCfT}HEKS5%xuqC+ZlJW)Av2t?Lw=6PG$ELjdi*- zI!a!WsTmb99Fz0fn1Fg+m6ojdFxkP-XE5>eWqI0sdD#b3;1)xQ+1eBPGFwy+)`-=X zhrM?ot(`cjdbcP=M9qUvEIco}IpM^~X`wj1zml(NV^Yh-W?(!HUdCUmMxF~z6+2~w z9X2;?f&CI-axa9--$~Cn>9axuN5qK-PYP{b>ui-oW|fspW&o6Oent_shBhMZX61@R z;jwc;^Jh~U=M7QMCTR^;C0*m#H_2ixpSTM50|m{>WFr zsdMCKIX$R?^^bpG67-cI?$#|5JG(PPi=q^eGo$OV-j+{ZbsuaJb z1B-+#+_B0~MH-9Qzqf;v8zS*OQ1TG;UFYQknS*0;8^FmMilIy~qW@yB(bECC$2&;A zfWp);PXf6E0r{RA?_5@KuGxH*pu^fE--11uU0*OA;ZffXe;=8<>a>?2qO_ETC7g#jxrF|AnUUPN z9TiSvTpQe*KOho3-h`EC4lX2aT_6HRg_v6gz{kzWqYOwDaK*D`(FAwnRwf*#h6P2W zE@zh6%Lb95%#vNmp?O`#IdKYGN@OP)haJ(9Bcx`OW2DXdRS9DYU`(|JdrO1UKwlZn z6otY3t4LJsS{LU})vebtbGT<(aS=GeST0w%3Q|B4nw?;XHX{L>pMFbNtpkF9?3uY} z!#VgFH(UJeNy)in?V^W~PMDZ66C`jDEvQyC+3I|nDi!__G@QJEWrpr2EM@!(EflBO z>umZ)OkIOIwMqO|r?!M-#(;iF>Oi#=2;ZB@24%OW?3Mv*wfPV1|CHVi04XR9J-U!J5+=BohXX@Z(Yw0cOS62b^uHoW z#RPu1ArYLgGj8U1+7*1AKQ>qnn4-TWnoxfKqmbV~@eZuJH_!?RhrUxWQz!*zpWz^W z^b;-sp^6gYv4MmEZ-phbcVy7F#|U7nj2XwNSmvG093R#yN9q7T*KTfm9d2+ zY6h{$%=|^6Cs%7{n0xR^=1Vpkm8?GYyqCWD{FTd-87)a1e+ey;Zs_A#%G^F>)z#%YNjNl$qxQAlRBGLcvRiehvQ^G$h5e>3`&nM! zywJz?{+@N^z`w6YW)P%E}XgCVfl&bwuoPCz+FU*Ue6a?PWvJr$qIP%0=IEM(TSq{cx*j+Zlh=lv;t=<2;#(jFzb;#d2 z6=4}&Vy5MkED?c=|4<7AiYzl?i`~?=OZqHdn98MVEHx?qVgrhKXS3a_NeiT^iK2La zv=!kV*8yq;me|=deItg*?8JxUVD-7JDGU27{S9o@f=fkI+`>33a3A@MY0j9XsBq~s z3m5Apw9xg2NC7)DcM`K!uua0|KGAW{m5Exaw^p`ASXAXt4ucqe3Cb4H0TO6egdFXFamZb9Q8fu^_F9O zi5Bx=1~RB^1nA@85d@FvhunRC;$*MKiH&CD)1Ce-I>N)kG|;~1+arpK0W!0~-zwi;|Zr;(lhZWMi$90<6Jo6YPr-Qnyi(#f9XQ(@n$22w#K5u9Uhg zF)Z*{{&1=Ww#j)Cx;$Myw4cJao-GVKmBheY<~Q@|Rq{{kh_ATDTolb{g1F>TIv%jO z(=yfMqDIT?8jzCQR1GR%0c{&-Ak0*!&$?uH{hV9d!&kg88_^~t!9@jTv1<{oBmnx3 zH0HS})#e)-m^iE{CkalE4j1ogw^)$S{1=g4++T1X=fxjL5qn29jcxiyfjQhu@_`{7 zusLmuGT5NseyXOPB!Ge!JX`YRHOxX>yR7FvUcmBC%r}78uieXnzCs101KRmxs?R47 z?H?j8u#P{WZH&Z+J$jl$78)BE`TeQ zefxf1^;cf3Ded_^`VwEQ2;hI`5{8KyLchgn-v=i#N^(t0j3qC~YwxKNpNQ5KB>^L) zR0*j?be^^DQfs9f0LUl+-W1zteAHa9L*A)l_%*5OiC#udXjA;1cwGMtkVTQT74Llq zd3#XYzwrtK<%BLQ`tQ2m(qruWONq(sb&>PXPXoyD8NswAn(DLod`j6x+jM9ssRCOA zC`lD?BE$8>o8MG)!zyyE2%PSW?eWLd$E7-|^$9z~j~f+?=um7Zw)TVEh8->S*Zvu5 ziktkB->Nre4*dQrh2aU4xw7xoVc$kRS`OCRU$NQ{QAlyX0fKCz`Nr__k!EgU*G!~K ziAHpvB;vweaD%15PY6mEc+h`>5Yx+7_C#e)N97I>)V2;JC+-|`OZXLkxGY?&i|>j5 zPv6_2s|+gszjdZi74!q_zY;|`CgUjnt;E0m=Dm<+g6f0fWhS75!2$9$Hl3D5Fa*)5 zJ@IxJ)5=>#HuKA~%Ih5A42zRMN?=4$qiosi5EBT^Dnqb^!n_a4kx4{1DMs+o_QPnr z9iVN{ip3b_-OdV9*=~Us7%NF|eA5f8XZJ_LV2wKm@EIh? zDwDDd9Wv8cU&t}F@W>L$HQe(H-hEd7R=PVJhN&XJ_G_QN@i3|Pq>1t4meV>c*C~U5 ze7ugSHJ_g}27vYIJs&kx3hMTmdOTZMM+nXFnHi$7ACwqP$Y8Q8PSPn+c#SmP!`13Pc|d=^>Uc8zgi9)xclEbg?av4@ zn)aDr2WwRUyHWiE^%6!k|LoAE_ABWRDpzVbF^vjw_VOpJCamHWftQ7KdfCEO7{L`2 zfTSQ4=cci9q#XHkA=wwkMRE2bf&2itKjI(qZ?#Fvv8(Vb+^pdPPrh%g4BrQqToMk; z4aF~}-vFm0|ImrrBOVdr?Z zS{mnSJo@7Lf#{~c^@a<^FqVpgDvN{sFJ|CJN=)gq8>49HFEl-@&I6gavzgE7WO#M` zzM@t{@JFQ~wua83J(fFu_WL9jSU*s_>)TOla8?9LBTp_K1!Byqw1%EC^ofH-ntnq3 zpHEQmRNQrK>wBd~kuvkI9w;jy0RK51FrUEzyx)knJX1-5Iwo+DF-w2j>p}$5eq@g(0MZDMKZq!lb3y)u z#RlX^j~2?_o!v!12!{?F+!(vvYa4vFfdI%wg?i`m2QUwBeP;LN@2Eb(6F*B~{*9Cg zpUnxo-!mJ0(zE~NhW$&(1b;`2)_EWd`Nj;ZHO%~QIB-}W@J87?JBkUqhiW1f;(6B{ zCBjJ-9mz{}>NYOLVRHsRh332la0)gdt>U6+>;F_@A> zUFNe@XQ+VfoY_UgI%bpi)cs|N_WRcf1#?4^3nlVEG!v6nbZ5>Lr$KKbcHPOECRn$m z0ktT71GY;jgkz`b&?}G%lsi_3E|_@Qr&)lQJ_}$;q-EL$0a^z*EKwL@^l1yyr`(8L zkMdz$UsnZnj_r)+Cq4+#F=ifgtOFu~`BC8f(j(fR8%4?)(dg|5#>`G^)Z2d$AyZC3N1l^!79@qR1+l*hD3h+ z+V0nr`|{1Vz|TQ3xbC2bPS5dSz-WlB8NMveQKH0BFHP2i@GtEc-Hs=DnJg zeSU^Py1W5K7~F1OI9^FDiYHiPH5ZB`pR&-RuT_U!F^hdlORnrVuu2Zc zk{S@gR!P7%Aqcj`lU3@FNIO~`kVEQ4;g{Z1l5P@_BQzPY;A%jhMGWE*mRxLYKZ>~c zxKNhtLgWAn)rQJvAX+NDZlHMh1 zB$hmKn-?vY2WYBl%n@6nW5xWeHDaraH_a)`YBS= zr1Yz%Y#bw`TO*%z>NDf1ISKJJ#u3QLkH75`sFVP##3imC>~YJFk~)2Br*<+%D}35* z!IB&W+Gy3kXf9zAML!nQEZp@VoGHF(0tS*02(Ugq$qg^?I8t}a2`)dI$w9(2+Q9Kj&t1;M<2$ zhUx*1Ny2?PP7@Q6s#G76mi{svF6}F9?!z!DYJ-=lQD6zhHI;Lizcz6RD8$-tRcn>D z(c0o?MTn;|$c{sv$Z}CpVt9IxC_qEzLwFo4@&>uQI#-l36D5S7(snP{$%im$QnQ7| zC=5yIPCcxyt8;OjJ?WzMC7IO62%)L)V(9@OR#19lsdQz2{VKxZG)3z`j);$=ABOdj z8)Fq98HNyG9A>|(Log02#qeR1QpIMWGABTuy2BwzKjgty9?C@3st~PLwtB9x(TJV8 zBO#Ck!5u%;g)_oMW_^wHS=bwByv%^ZMFtYG2@LfTogU#}&kxgr3R3_h4{7CgHo*W5 zneK@9!okF%It2zl*@ZaDq*hJ*UP{yWEk1GfWdBHyC8pl_VDH5@nWEmyBJr>5dyk19 zlJu~xP5MCGCf}p`1o@@J6;jOJsrxj>6^_kM_z=e$<&BjJ;b|hZgj%9@#0G?9cQ*&+ z2E&bu9BnT_afwGt*?uHL>L+K@v2{KSMOyga z&Z+vP-NgI<%E70226#EU#AI9OV%;Xrv=| zflDO2nj5Nr-jSS+1N;PAjosdowCi2ctv2UKjA-gZhr>6dp;=(l^|&NGkx>Aze2a$T zc7KkB@g49Qehk-fDGf51$TnB85wd3)Pub!Z$uw0>w~vRHW5_bb)peuPj&i>%ExL9? z>gR-{zG&05tmJic{#}#IGEa8L^0L~ro{$!;ku*?m6~ss>aRy7bz;XKm10q@gbx78e#n#EWFu}_w?64l46SGwsFjV*8a%(t)_a+6ckb@< zph=YMra^jy1S)xLcN?j<-e*-!WXK4wB~y;d&`lOsWQad)7lY{r^-a0EZ!&K|rZDM2 zD%%fSWfFsQBuw_*`Nzn`f6|Zt&=dpU28M6~HGefyvZGdJBw$d0DNO+0IDQz8S>FW( z%}@ED4Tx$lcr3vo&?QG@%M8e7rXt=nR0MVWteo6kICMl-nfJbKzxqa@?p_lT=7Y+G z%pcN*ee|Msc!G3$3RyE~?AEaH3~g1ruFd6^Z4mg-ESnTK0Oos{ahGcdaZNwGwu&5`KEXi0Vqgc_&7i zk^d$Oh?Vi3_$Fh?Fy|gH;MDhkSiT}Y-G2Lc`omPPanzx#!9@UC^8S8HuF|U;QCJ*i zll3YD*+}gPn4d_6e9X(~5@WYVujjKD?CVSZ@qgU564mYyrNz9f20dHvUpEP`?^A+= zO}=Fz4{%f{S_9LR;je#4hu$GGbpD^Nt~?&9_xsPiLxwT7k)14qu}1b~1|Kc5XGyXY zA|y#6q#;_=C)@Pt64HWtm5{PlJ}62dDasZil0qR8`aN^6etqXN|J>(w&igs%ea?OE zGhX)`&zzI#aIRa|yr3$RFFMs~ENY<{GcNqOWa^uN{^!u(pt*|59~VvV{SV_9u`SP^ zq>e9kF!p_qHcr3mH2G!7=+3{j1^4R%MI>8`>AO5GS4NCo+H7|2*)(<6p>L<7!@E0l zYo+m(%;xbsIh&hpcBpA{bg>-tE& z7)PHsItL3T=1L`OxGc8@byXId-=Q-M8|owMMrW#gHYOMD8kwoxyR<^CTnYq^G6Ps*VZBYT_>$t6ijuNHPq$;PV~`*QzjIMwfO5?|E!3s?ye8(9dVhHDmF$=LrR-}H8`wcm&-}m-+S9oJFHR7XB zrXloix8MdIT_5a>{RX&Gts_cjTT)A9jxLVu){N zu79nbC-n4~ZhU*%+`h#6nKzDsAKIBKNMwh}p5Du`SrMfiTg?STd(xHoQ0K z+~iuQ>)fJL^E}|#UpBN0Bvme~|Nv5sg-De~9R8!^X zwoZS&_r5Q-Zhv$9`nI!@p&FYu81ETtazAxA+}AzGuP|^_>mc*w+u5$`Gt$JknKpT= z3WrRa(JFEl#fqO4)0R(v$3ZACv~$_3oftJVOfEhdI|$*Pa)~m2T)A-8Ojdl3VYz*| z)YZ(l^GVTSm8)5BXR7#|>Jh104uXTD377GO;*s_CuOpqNI7~O`?7HGD*lAV%@TkzV z?({C1qibse?2sL=e52v;LfQHJa$opT#dclteW{z3=N%Gmf8o`(j#q#hv`fb>nfeI? z9Gq-K6(2WesX;Bn|iiU-S)uA?@~GPj2mtK z2h>V-=y0l?4lYPu4#M*%;c~S5M%B}4dGaRK<>qq~E!1#JVr||yeqMi5+6;rQNMz6hrf_5)CH9m(Gvypp&l-@$pLQ`bB>h7% zcm1jBGH+*Tx2yWlbBd>zOVk)8WX`BWj%(V4NQ;~`R3(Sqell9-l>}#;;HaGxJ6|m& zTJNe&nxrGSk9$VLZ5z1S>gSBwC(5EfZ~T-QZ|ACBHf||X@03;E|53=+wVNS~1YFA3 z2)$ut5~}fb?`0_t$Xj6d&UjJI1%3BL(`8%$m1l2jCb_9kHE7v%dA*q9zk9~b{wh!W zR7eS+Hx*@Q&3L4x7mDn;RqbyPP!irv9@LIs5chGkkw1`^_~<6DR97o=*o5-r`Lve} zU*(5z#aE??A8za`$viF@H*(8>;d;sX$EC!NaC`8oUht@#%Aps ziisl}`{PDRA`va_FNH)GuZz_TnZgS3vNN<3Qab{Tb(%5^Yw`F09-Zf`Vk{7;ZN6u1 zWWR3l55A+Z*xXUQxr_Ge>NQ%_lZ$6&l>noO%ba{)fW2awx<6N5Zz~K28IeU;tisX3?-uW7i&=gw>DpbjsuX*hL@PRum zcq%W`Xgs6MJX0a=yoVqXSgz|PQyF-7`5(>Z+05ju+aIrAY+>+4u7IVF~9mKmQJEokd%Q8!~cJEa7XzXELW-O@Y9$Zt z58(2Xv|sI+vUivF(6|DMeKvV-Ib1lja(d}|s`HzIgTrZs!!=@)TkDil5_f0gJSN@K za`N)YBkID2X8x}u#~yC>8d=iKdatwBCu@d&cia0110m{B$GSpBjLi1x)2Eh>cMH5q z?&34zG!QKO_je&~4UT|g)z;cVAOiMgvO5%VhtR5+UKmu2M@OTFAbU(^5CIipxWOnW z2a_?Pp?hmkoPIp?5t|{G1Zi=iGM8kij~gB7Frm{t=%_XqqH&?4m3#;k!B`B|+=g~y z_WX(=5`o03Rk`2#zHcL_^Nk?_w;?fvUmTXJtf=_Sg{unc#AXasL+dbB&;zIi&$ zNm-x;#3?*%h`$bsjH(>487c|kfOXKpRSwt~9Sm^5=IB746ZS+037oJSI_TwuccTOP z8rU8kq^^No(Nk0wpSICLg>bl=ROH(lc%v-qWEHlbCIdJ}YFz`C~7I+=J;rCo{%}?Oi36K=#{v86yxX3D6C8xWe zCXB;f(*(UsZ0N^c0Ih(WAizSXvx@}aY;!nE$Se-yN5%=OCjS4>a8Vpio6Up+12tjD z4NIZa*baqcLsln)TdVsg2=sVJ0uFZ?e^k)i3bCLa0e@Z|R0>0AUb?!>wln zMx95UyYj#iDDsHn>ww_3INSh$sj(sVHloNf9#{m8^f?cRRHB#Z({27IQ3sr-vlqci zIs#HlW1GIz50DB-6cMJPju3*a-x7F1*s%_WQ({AI8w5ysG^HpqYQ3lC0I(SVY^t*% z)4wvIZ_3PHQ(S0HP+E?>fL6^6P#7VZOnRdS$oE60WmT?X-sGFyJ~B6cL07j@=If+g|3I0y;DLn25T30^11e(KME-KlV5 zSQ6VwK**2?ER4p=cH#+}`zQkPf&@FFD7G^P*igPC#EcKNL|L#k+_9lfDPb&l{&e7> z6wqla-FCUd;LsI+?*EeK(p(L+nh%ykmYZ;VKVafZz;5G;%bm2_+y zrFDrtdPM^qEdfWx-(J8qKVbrOBhG47ARxj5;Hd-~9HJrseC;!2F+f%FvaD@y-3fx_ z6|ksU!OGBJvjW;w0n`MYJHVQIk&dx9+5qZCnt~t%mRXu0P?=a`sva8HI?w!8WwBH* z?J-r@Uyzvke`Bc6iZ~?#R@qw+g9@AXc}HxTst~*mCHkjF;=e>)wxdwq|LvMU;t8-Q zI*+Xffz5@58|DJEBuF9c0;};92?5emo|r1$0U{xjLaVA}mP&6IrfS*-i6UEB4;L$q zY?U=OFFL*${v3Ig(4VRR4o78!miuGSJ~AwW=60D39Ck)x(zy^w7SR%4<>Dg@RD(yb zmGd(c;zRO;S5?IBT?bY=Z?yBla`^(jilo_~9!v~M6@|r6t3r{v zzwCg;O0bu+2WOm%L0y?3IMz2D$}L?KaBIAdsRnZ)UZhoYRn^B*ah6~z*#d}+tP@*R zX^H_AsS;Cpi@_SGtrV6txC)cjiml$z0hTnT4wHgEF)*x|IFRx+u%z 0 : "Space is expected as delimited between method " + "name and values!"; String methodLine = line.substring(0, spacePos); - ConservationMethod method = ConservationMethod.getMethod(methodLine); + ConservationMethod method = ConservationMethod + .getMethod(methodLine); assert method != null : "Method " + methodLine + " is not recognized! "; Scanner valuesScanner = new Scanner(line.substring(spacePos)); @@ -497,4 +498,37 @@ public final class SequenceUtil { return annotations; } + /** + * Reads and parses Fasta or Clustal formatted file into a list of + * FastaSequence objects + * + * @param inFilePath + * the path to the input file + * @throws IOException + * if the file denoted by inFilePath cannot be read + * @throws UnknownFileFormatException + * if the inFilePath points to the file which format cannot be + * recognised + * @return the List of FastaSequence objects + * + */ + public static List openInputStream(String inFilePath) + throws IOException, UnknownFileFormatException { + + // This stream gets closed in isValidClustalFile method + InputStream inStrForValidation = new FileInputStream(inFilePath); + // This stream is closed in the calling methods + InputStream inStr = new FileInputStream(inFilePath); + List fastaSeqs = null; + if (ClustalAlignmentUtil.isValidClustalFile(inStrForValidation)) { + Alignment al = ClustalAlignmentUtil.readClustalFile(inStr); + // alignment cannot be null see + // ClustalAlignmentUtil.readClustalFile(inStr); + fastaSeqs = al.getSequences(); + } else { + fastaSeqs = SequenceUtil.readFasta(inStr); + } + return fastaSeqs; + } + } diff --git a/webservices/compbio/ws/client/AAConClient.java b/webservices/compbio/ws/client/AAConClient.java index 5fa373d..34fc751 100644 --- a/webservices/compbio/ws/client/AAConClient.java +++ b/webservices/compbio/ws/client/AAConClient.java @@ -1,6 +1,6 @@ -/* Copyright (c) 2009 Peter Troshin +/* Copyright (c) 2010 Peter Troshin * - * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0 + * Amino Acid Conservation Web Service client @version: 1.0 * * This library is free software; you can redistribute it and/or modify it under the terms of the * Apache License version 2 as published by the Apache Software Foundation @@ -29,12 +29,10 @@ import static compbio.ws.client.Constraints.pseparator; import java.io.Closeable; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; -import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.logging.Level; @@ -48,6 +46,7 @@ import compbio.data.msa.Annotation; import compbio.data.sequence.FastaSequence; import compbio.data.sequence.Score; import compbio.data.sequence.SequenceUtil; +import compbio.data.sequence.UnknownFileFormatException; import compbio.metadata.JobSubmissionException; import compbio.metadata.Option; import compbio.metadata.Preset; @@ -70,57 +69,40 @@ public class AAConClient { private static final Logger log = Logger.getLogger(AAConClient.class .getCanonicalName()); + /** + * The fully qualified web service namespace + */ static final String QUALIFIED_SERVICE_NAME = "http://msa.data.compbio/01/12/2010/"; - // static final String hostname = "http://www.compbio.dundee.ac.uk/aacon"; - static final String hostname = "http://localhost:8080/jabaws"; - - static final String serviceName = "AAConWS"; + /** + * Web service host + */ + static final String hostname = "http://www.compbio.dundee.ac.uk/aacon"; + // static final String hostname = "http://localhost:8080/jabaws"; /** - * Attempt to construct the URL object from the string - * - * @param urlstr - * @return true if it succeed false otherwise + * Web service name */ - public static boolean validURL(String urlstr) { - try { - if (urlstr == null || urlstr.trim().length() == 0) { - return false; - } - new URL(urlstr); - } catch (MalformedURLException e) { - return false; - } - return true; - } + static final String serviceName = "AAConWS"; /** * Connects to the service and do the job as requested, if something goes * wrong reports or/and prints usage help. * - * @param - * web service type * @param cmd * command line options * @throws IOException + * if the system cannot read/write from/into the file system */ @SuppressWarnings("unchecked") AAConClient(String[] cmd) throws IOException { - Services service = Services.getService(serviceName); - if (service == null) { - System.out.println("Service " + serviceName - + " is no supported! Valid values are: " - + Arrays.toString(Services.values())); - printUsage(1); - } File inputFile = IOHelper.getFile(cmd, inputkey, true); File outFile = IOHelper.getFile(cmd, outputkey, false); File parametersFile = IOHelper.getFile(cmd, paramFile, true); String presetName = CmdHelper.getPresetName(cmd); - Annotation msaws = connect(hostname, service); + Annotation msaws = connect(); Preset preset = null; if (presetName != null) { preset = MetadataHelper.getPreset(msaws, presetName); @@ -133,7 +115,7 @@ public class AAConClient { } Set result = null; if (inputFile != null) { - System.out.println("calc conserv!"); + System.out.println("Calculating conservation..."); result = analize(inputFile, msaws, preset, customOptions); OutputStream outStream = null; if (outFile != null) { @@ -165,12 +147,11 @@ public class AAConClient { } /** - * Outputs clustal formatted alignment into the file represented by the - * outStream + * Outputs AAcon results into the file represented by the outStream * * @param outStream - * @param align - * the alignment to output + * @param result + * the AACon scores to output */ static void writeOut(OutputStream outStream, Set result) { try { @@ -191,29 +172,27 @@ public class AAConClient { } /** - * Connects to a web service by the host and the service name + * Connects to a AACon web service by the host and the service name + * * - * @param T - * web service type - * @param host - * @param service - * @return MsaWS + * @return {@link Annotation} * @throws WebServiceException + * if cannot connect to a web service */ - public static Annotation connect(String host, Services service) - throws WebServiceException { + public static Annotation connect() throws WebServiceException { URL url = null; log.log(Level.FINE, "Attempting to connect..."); try { - url = new URL(host + "/" + service.toString() + "?wsdl"); + url = new URL(hostname + "/" + "AAConWS" + "?wsdl"); } catch (MalformedURLException e) { e.printStackTrace(); // ignore as the host name is already verified } - Service serv = service.getService(url, QUALIFIED_SERVICE_NAME); - @SuppressWarnings("unchecked") + QName qname = new QName(QUALIFIED_SERVICE_NAME, "AAConWS"); + Service serv = Service.create(url, qname); QName portName = new QName(QUALIFIED_SERVICE_NAME, "AAConWS" + "Port"); + @SuppressWarnings("unchecked") Annotation serviceIF = serv .getPort(portName, Annotation.class); @@ -222,29 +201,27 @@ public class AAConClient { } /** - * Align sequences from the file using MsaWS + * Calculate conservation for sequences loaded from the file * - * @param - * web service type e.g. Clustal - * @param file - * to write the resulting alignment to * @param wsproxy - * MsaWS required + * a web service proxy + * @param file + * the file to read the results from * @param preset * Preset to use optional * @param customOptions - * file which contains new line separated list of options - * @return Alignment + * the list of options + * @return Set the conservation scores + * @throws UnknownFileFormatException */ - static Set analize(File file, Annotation wsproxy, + static Set analize(File file, Annotation wsproxy, Preset preset, List> customOptions) { - FileInputStream instream = null; + List fastalist = null; Set scores = null; try { - instream = new FileInputStream(file); - fastalist = SequenceUtil.readFasta(instream); - instream.close(); + fastalist = SequenceUtil.openInputStream(file.getAbsolutePath()); + String jobId = null; if (customOptions != null && preset != null) { System.out @@ -279,21 +256,22 @@ public class AAConClient { // ignore and propagate an interruption Thread.currentThread().interrupt(); } catch (WrongParameterException e) { + System.err + .println("Exception while parsing the web method input parameters. " + + "Exception details are below:"); + e.printStackTrace(); + } catch (UnknownFileFormatException e) { + System.err + .println("Exception while attempting to read the input file " + + "Exception details are below:"); + System.out.println(e.getMessage()); e.printStackTrace(); - } finally { - if (instream != null) { - try { - instream.close(); - } catch (IOException ignored) { - // ignore - } - } } return scores; } /** - * Prints Jws2Client usage information to standard out + * Prints AAConClient usage information to standard out * * @param exitStatus */ @@ -335,9 +313,7 @@ public class AAConClient { } /** - * Starts command line client, if no parameter are supported print help. Two - * parameters are required for successfull call the JWS2 host name and a - * service name. + * Starts command line client, if no parameters are supplied prints help. * * @param args * Usage: ACTION [OPTIONS] -- 1.7.10.2