From 0e7fb629f5cdf970b4d0ef4942e10faf0a650c0f Mon Sep 17 00:00:00 2001 From: Alex Vondrak Date: Sat, 4 Jun 2011 13:26:38 -0700 Subject: [PATCH] compiler.cfg.gvn: move crappy test code to compiler.cfg.gvn.testing --- extra/compiler/cfg/gvn/1.png | Bin 31256 -> 0 bytes extra/compiler/cfg/gvn/2.png | Bin 32112 -> 0 bytes extra/compiler/cfg/gvn/3.png | Bin 19748 -> 0 bytes extra/compiler/cfg/gvn/4.png | Bin 18391 -> 0 bytes extra/compiler/cfg/gvn/5.png | Bin 19781 -> 0 bytes extra/compiler/cfg/gvn/gvn.factor | 61 ------------------ extra/compiler/cfg/gvn/testing/authors.txt | 1 + extra/compiler/cfg/gvn/testing/testing.factor | 54 ++++++++++++++++ 8 files changed, 55 insertions(+), 61 deletions(-) delete mode 100644 extra/compiler/cfg/gvn/1.png delete mode 100644 extra/compiler/cfg/gvn/2.png delete mode 100644 extra/compiler/cfg/gvn/3.png delete mode 100644 extra/compiler/cfg/gvn/4.png delete mode 100644 extra/compiler/cfg/gvn/5.png create mode 100644 extra/compiler/cfg/gvn/testing/authors.txt create mode 100644 extra/compiler/cfg/gvn/testing/testing.factor diff --git a/extra/compiler/cfg/gvn/1.png b/extra/compiler/cfg/gvn/1.png deleted file mode 100644 index 29234d5b751e3ce4c4c614650a670d43760f7cf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31256 zcmc$`c{r7Q+cvz+QiL=aLnR3*6fG31C`pP28H!3IQ_4J4%8HPPB2`DGF;k{w zo(Y+jdH(kEy6*dVuJ?Z5=iR>VuW!5Cw%f(I&UK!@;W+kV-}mEp|M)R=b~au%5{blq zSc7tcM52ozk?5OPneiK8dBbD)KV}n6bqZ;j_}}yF*dP*V6X`JJfUe`SKP@iyJUxpl zqtlnKGte_~zx8ZSG?6gceo)Eh^>N`kHjQBF{x7O&66f9T3p1u~ta>F(;iAy75sOWwDiQCP{*|N>u z-^z~lUgK0{<>cZr-$WUqr&6~$zVGMc3cUQwo=Vl&{la-Yr{z1NY#$#Vw(QbPV)`i- zcd1lX{Af}A%U<@Bk&(Z3?&7JDUB&m?mY1f}hBF2yr0%>q+|?r|B2v97oCEj0r{zth z%6^Mcqfo*w)Ch}+l>hS^EEOq~R~zL8{`>NPycHy4x5>2@78ax5R;!%<{o_S^(S7Oy zQ>8uqesgni{ZChJC7e!jmTi5)wsK{%xYm>(qzn7N2?zu7ev!g3OB}5>#!SYOwt3s>Gh|;T= zn3r$fu*!$C<6ouHG{635%N3-V*}kY`r}4{g4Kvq;%U@Hya6$Ob&3#|Le%*QV&zaiV z+D$4d#)`f^RO**s$);R_g74nAr%y^7=R8PlbzVv0T(|CClT{|Wf`Y;Zvg6KG%nZa+ zyG&b=zNEIf`?h2{m<~0jRA0TBDKPjm@lMIb+nn_Hg_^4BZ7KFA)b5R5oT?)tw@YTn z`}EZLb{J)CIDGi9V_$>=@$GtD+0K)y`ue;}Q>nRhB;}0zT&bn%h4QlAvc~i zV#g>6rxG`LdFGw}!e^azYcMHS@D9srW)kr>eU(u~uMP+CzBO)Q9e8xkW9m;s+Vax8 zz(8q9Nno#?ymd>x^1`Uv!qRlEdZ?5kiKMbLBkH~|rk-C=kiPHLF_}isH)CToebSq_ zxC4%kdsS7Rd8Bt2E-&<{XnKs)C9GFoUbr4RqIvl60Xzh0zv9W6`rM_vMM541&XuMC zO7}b#2aSEMhMrsgSgCw{hO9AUruO>v>l5GTJkMEYuU#)~q$|h5W$qnXzhIE-zIa?u z@2*z3Jl=Eex2WqxmAX$6U3+u-^|Z;K=U(TgTD3Ixf5x<299*$t#jO^r=_|(15`_c= z{63mhD%QpphRI!hZ&A11yIxgI?e%U65t=l)X6*X8&z5;X+RFEdiI^GfVCVH|-fJ^- zJrW=4EPJ}UxU^IaU(I8kYu%RfE8|AOr-iX1p@aT+E%zQJ5FbCl|IEG zK|sNd(PipSU~jx(u32T|@5YpbKXas=mcMrDo<40__C$v2S3JV{oOG{WivshP`aC!`LsTUgNBub~#)zylK?f?5Ak03_nKtT^qLslVh+X-P|yPPruf@h_(AwEXwue;l#+D zPmlg?$=uV~+4_P7bJRDs@B0}^+BEwIhoWo5PRy_LND83xvPdV*Drk?} z56pG?N{<$-H~wNNFS=_NcUPfbkl?U*Xe+x+X@mFsPWn-!X!`XU@@C1P|2EU^IkVyBpI;rL4^pyS zraQ6c?$ucoG<-CZvHyLXxS_K0BTDz`85c#~8c}Vt@4@2KfB+WKTm2NawQJWp4yX6= zW>ubzJZ8Agm&pTbV06S|x#>dovuFIx4sCALOMd(cCoEi7u9u=@-W+-rs~n~5#w&X0 z!IyW2nXe|zDxTfXUFeY}y_3rmKN)lW+dcMp|3K-{X?rTKkaQ9g$$H%0!s9tZ{Yy>* zrMnGhBP+C37QIS>#GVOpZ`#$c&Cu{Fu2>f-nE z&bsYswqZEBHK=Bex@~lf78W&rF!ET-Gydo*)`YqN`*RgEdn2cwwd9%hJH-_hhi=?R zu{YNe4=?}O{vhsiGMCP1$5VgeGZhsP`(Ec-H+^Pzo14(dS_~4?77-SvD-V;qzW0vK zfV9W#%FmV!ouiFQi}QMwY7{L7EThrQ+Obn17fDyDUNWtdGNAtXWBE+Unu3);o^$FB0l@i)TW^`xboWuE;-4p!2PEBefGFU0?BDtOf6uP}zh3^TxXC(~{Z1YcCO%mccVN^mR$;H!gAbSIk$tP;PKq5IS?rIEviZioN7n8jg@@`G zqvq3$|NLDQ&7!Jm;8E)3<@H=WK+tk8rJFmPLtNe@pLN43=Fl$O6no>xdl3;f*{rNX zK93(i?%0z%%l`IMLe1EZAIF1(gP&h(`pkR!&|l;G>P*w;YgMt@LL2-FnN1Hxb765_ z_$Dlp`paJ9F(UJ~hLU7X`fuK=>tEoGn{mf@gB;h5$;rt(!^=66)DInc`RNmnr2eNL zal1s=7|AuldIVy*#lRx6W5-cv$sIdZF|cr4#2wFCD!yv`@j~rF@|jnc5H4S+c@Lc7 z;$mVmG7_x=`uXwBaG$QOE{Q~-E^PKqWU@iucWQCl*imoYm8(}5wddX80=jtre&;Gd z@)LG%Di82gz$!lZRfrq-hn-)O$uGjj2^iO&crx}_$Cq0S&Y@iP14fS}#l`b7ZVcML z-MUw4^b5o9=Jb!PmpJ3NN2B_)rdwSWqU4!g-@Z-X`sDzfSbL?t1(V~*Dh-y^f{dhv zu>g7i2G)t3P)bWZ16=3=E_K_DYt2goS zsz5xWzoP@<8<&BY<2uglSZ9e)hb(#;m?p4@;wiCh8>fYX=$0)9k+FRzChP+W?{Z3| zuGs(QSF)PE@{NJuD=ir*pU9WK^T=4YlFeuFNFuVbx_U#``zjuXv^ft-*3C3?2ut!Zr zc4+0g9s6+)gfMRe67s_6w`zG~_t{IhAa(Fu;;D-lFOo>_4AO7YXm)RnbB)HP?o+c~ z)_Wh$=`8VM1m0M4>Cz>WrG;5Rzcu~rNH6rdKMai+JiEIue!5ciwa0tZu8TtHe)>Es z>*oAWDnr^$v!`Nz{|0eIM8xfXtE6ygpr?}}BMCsHI!J)3!FQm+zT%m}9bmtPYmxp5 zV*n9|czfNx+nW}blpN644;#3a?tCsGC>?y3xD332g2|I?)*lD7TTTP|L@ zbl5@U)TvV@RWA<`K>zaPtvlBF#?L09F8uUK78TH!^E(lo_%W#13|Ahs2wT|UmGx1q znV6U~_x7jpdW;pU$0E)ul&ZSm5;+QtG%-AgeMAQAG z{PL^V*yxN5Ueb@ZXLsYNg?H^b;arJbKQ>;e(v^RI4N`^ox3hOsofKNT7kSpM6$U8y zk`ypQ=LwvoVa5hrKHgVZ1e_-9^@V*;GcgZw2TtqiZrZYiNtKmCp|qn)EO;Vg`Yf z=UBN?&EEb~ys3VDyk5e4>o#R`r|#lF$C(cAwRMLmtQAG=vX>((@VwG?c6P6NFj+EA zw2QGLa^dA7WO7#CXScx6E(?L;?!~losh=aUAC8oIuNGQ|@e2-F!_A#f>p^XMsWe2P zOf1#Cg*Vb|>g> zw@D|-;p_2eJDn%4m^;KeuEz-dKx`n{@CghbJ$rVepvxZ_6zwZZ zN=o8?Zh3j=l|%h_NaOAZ>@B+eb2YeBuPepi+DFvrotX1#8bX0U1p&0BE>}iMZkLcC zz%*Z3&C7!;b?fAwq zUXqyfido^{!GoReGKaaZ{(NgYudMyq77^aJt0+LTw4k8irJ6TKeBanQpbNU~zbou{ z_i38}g3a`)EQ?D@pZmNDX)81&Kv2mCYlCv|pn}r3QF-a2^{6fHefY4;d=}BE+Iu)I zF7D0Sw;1)glhabUNI<5Y`S+%xs&krP7hU ze)~pbGOv60MC9bwV*jSO&hA18Mxpj2$Ia#F(_Ks?tabnR`0e(CKiR9Qs?MZZ34}-+ z58ISAC+30_ah>ar<(ORVSnY9q;Z8PcRa7!XFc()zQ5rAPo9CHX%saK! zCFJDfp6sy}T$(9T88Bqyn!S&3SV)d2yn&3{U)|w0-QxZAt7?RVh=>PQu$DLPY1Ggc zQky2F?obzw9|xHFk3e}~_9@4>eewDyMQX2%j>`)mKGg>!f)w@?_ly)EM9{q*vhI2EJP zx~CM=?taiC;;kyi-TlNIA;0TOKcv|oi&FOc_3KQ3*$d>KJuUWY;^X6a{1Q6;xID+A z`;}@fWR=msmGlLxWemhu*F=AfPhp*9=JV$y{9Vs*PvE;x9;~;mWwg}|-Ofk)ciJjc z_^-K0yV;Ga!UOVN?B@v%t$z~xjV#bR#Mw_7dDkb|+rPKZLclDk-lM!_Doi!fzdB1m zp~51#v}sIFaP_|z`IA`DB=Nrf-w~*;|j@#ef^S{3N@BZtzd-j#pj9Hh} znDe6^XFGnt!HFFYa_UK}8fB8Hr$?^0UskHOpEFPbN#~8NjJ7w`V8!>+t0-Ak|AXP% zx=p3#LL>)Qpz`ex{h0Rbm}jx39~&Mh$(!b8)poxhH3OiySl|`utX)8?zcmC_LeKm1Wp+TXcee&9|OKHyvi)(bgt#?vH zkbh1`FQIJ)hK)nJC8saa#iqNM%UnT3gg#=Q12gF#;LO$abfW%UqL?fdRrk*a1Nrui zyohSMN|cwA;=lmIxIMP@4&xjH5~pE?Jr|hD$DIlt(PVz>TbKjV+JDVKM4+hp%e1r& z!1}t2n{7pCw_6P>&z05KR@5n07$q%-We&;RB}ZgbM5#!dn3}Gw97-T=VW!CQ{Pyrs zZzn|>UbX^j;evel>mDqCj*xR!I%Jh`8*0`X`#s!XJy!IR1rq9zD_4=eJeD|(73)7a zST7OAcV3Vquzo_ZfVQ@`e`XIRh2wwOPXu2why2VtZqK`Z+@4ze__?KGZ5lC)?-((Q zpki76!Q8G1j>0T?Q#FJzt63#AV-9vsyHd(7?>+=Th>fQw!)iA!(W1=76pLx<)r$1b z4Jr+an=ItB*3jNI+Ou#ZRhyD0j$oQqUX$)Tx&3l^*j*rOq-Sm}F0M1_c3UbUl~#Va z5qS&@)a9}#x8A#i%L3qBWc_A?Wz=tSG<|Oc!Y7uR8QJ>zDK1Dw1Tmq(sA3zVi!L)T+Gd( zczy9uzW>un@npn^ALIg0K!fqkN(ESsk%C)bY3 z?8StB=qFD%Usq+tEAP?`P*+#qM_JD*Offf)o0y)fV%{2b81HjPpLx??%rw9v#zk1N z$x=QrIC%5oLrpEMwczc>a_U;FMq0BET3NmOHi-1a73DVdR81+;MlQG7_H@qt@V>EF zmBqteckkX8RC3k2SM3g}!hbObsZh?I_?Vof-IJ9zsX5>QFG(n#7nNAGJBtL!i>J_t! zeOG6vt99n(@k8e%BwX>>g(74vfp-`$*_h?m3la6>k477C(3Ra z17ojVZT4PnU=z;oEf0U4tNmKdxPPKVt2h+mkQiN>Fa=L~ad6Ow7$6T)&*MHvAzb#Qt zLPGPIibrc-)9Q830xF41hyM-&v}yYVCG9>`mPAf&Ot~6cI>jImAQZUFhLGyq-H)PC zGdBU{+VL}Is9J4sMHRnh9J#~|s<*)L@@jWLhg zH`f;xwIAQa_C01znUkU_YqImCh3%hTGCF#CTL>Jv1f62uen~%478qa~6slX>K@Gg` z>#senqto$_rK@yS$y~9lM#o49OXcPBtBR_O4v`fQx>UsD^;v~)4mXPrXO1XGl^chO zX(48RA2h8&8YaSXUPSB~F0NZBeZO7)_ySc4>g#Wq09Sbrltmvtetg|iTdNC#3Pp?P z)~$zbx+8JQ*(&Z)N+mlb@5K)*1xt1!JHVCH!R! zmliJ*nfLz|vu`VDvyeFW_j+b!k?sHd;xf#P!LqP8P*ms4nc{F!ss?wk zme{Xx`<&TczN1fe((Q8?rT~z-DXWmO#tQkK>~oNUa+TdEBx0d|`yEmO%ah$^94Ahk z(A~rTdK{HK3R3#iW;@@3Svulf%$=1v^433z?FviC3J35>w(B{zo2yn4_%B>`kw8Tt4D_WsMB4pNOca+LNPOWw4a1K)ghi=Uy)7 z9cwU)I$UazE01}Bv`DY_Lk_dYTJ=JWMd!o`5wEn6*pthaU&CjE9zEh+I3D2Zdy>3o z+&;Lz2=lw`H^LOAM%0TFY;%awJl1c4p+ieg&FtWb`IHNh{;+0{ zbX=e=5P8`&@>oqiSwLiYeXy4LYW&3&Ihf`_OevK*k@pX2lo5mt{w7kbPK-iDjm(Bs z8ix-DwpxE|7zN!du|zVmatD(E+8ZMS*s?HDqYcvjP-Uc&Tkb~+j}4LyprPu2-d^F!#kGD!9H|TiwacQjv#>HOPu!Ap9=k{={ItwxZ~0 z-2zd;Wn}2Q6>|VUK2TDuIp67+L{=x@uoBeLX=`yfVMJi#TR*b^Y~1Co$G)&%N6(!)wqI&!5iUH7;vsU5`D z7qck0d#Kp?RowZ(0Ut#1>gu}rK9&4@T9hm6^$ldWWSb6E^V!Fzjko~2kG1vf2zV`} zO*84Hxss?rc;@ME-e`QXZfos#KhgeQOu^Ig%alWhL^kKo4ww4XFKUewL|M=G$H&@I z!JB@%*0hfFO7ljW$Fh?1)Svr^&tzJ$DEK3YO9lqdCZ>-?C@MTN&jx*`apcIO5JKnb zgqSNem^t*hiNE4Db_S2VRxHTHGoP+-p(r(So76)Q`G%Keli?ADcWxn_Z*6Nmj1#e@ ziCb@zkT^Lx(W8GVA?3hs`%|J^fhx!z*T*^!9u1RSp~`wRN?8C%t8OoehlfYQ!#LT5 ziKyTl=OG#(4DEXP@+Gh9saN@6)syY}Pk7fue0u3DC?cZ7Xjnr>F0F~n-m;OTpK9f| z-pG+I`jDTht*uONWt4QbH8SA|4oxtDCr+Lul8kwly!2LZMnWD7GM-nRWH8rYJ(+AI zrGXq7Jk^X=*+^FQfsxvvRKVe!xBl?3)jVR4GERaX*TjejQZe;O}pE)E;Hph%yTx<#d4WL$W9 z44EkK;Y0Al2l_$15PpXqrp7eyEuA{5lJ=z#|GL}R_5qRA(8x=?z>Ok29KPo-S9q|(e z1`j~UH1_{$&2|w8*<;mQjJSO4Z~H~@vSGIKT4+2V_U-0#-n`is91xG(0Jp1re8NBk^)E4je*+3bJQv5LV#8b5!tpzYY!di*t5O2;5N}|yG`A;N!GEw z4`WKy>q-_cNRv?A2Mp<%JaKhbhqn+`T=m&IrB`E*MOci!aTYOyEOpPSC8OVvnaL9j z;8=(=ef!qNc5smOA2`_d!yrQPL@J1o5cV+JxnV-;)&e8w98*hq%ByuF1l#jJ8H^ri zhgATLCcDkwyl7_TB6}?NL(@=3qA^le-Df`E)S_3(y)-%PfZWKo-4u)2SN(*-kIY|) z>YB{!P-u}t6cIinBhwSpq$5X;jQ;spX_8OnA_RLFFWxhsl>rx9xJH|N3nh=RxcCZa zjXu3bx$a5`Ur?oN5R4469J$QR&3A5Cbtc!{?as8>#f#@BepjK)6&&&v8$5mLln6*X z>D+}~_^xQ@@FV_F@MioSTL?m2kH}dM1eJJeVzo~jo^y-j7XluD^0QW4T%2%vpm0q# zs}!tjk`FK6upaI87`gp~@f>2|3aWBqJ;Occq4nBPjr*aeAcJcaswMf|>*|dHT ziWe24dq!fZz?P!Qrlc1ICR}j0Bq(@|{+R(OZ%gYwY@Uva4w_PY>&;WALS|r~;p1P4 zheE|DWGrCpK%(Bhefv-gGZS-C_%Tb%x1>#r=5_IpU)uT>h*a0qFp&bIqNEE0grpxm zdXx{Vki_@z-`yoSIYA0=gK9OQb(g&KSY9$gaa=tEW6QxKM|_Hw&wDJ*n*BweKs=?c zlhogvB?bvq_tYsiVXtlC;#{b3b;-G5F@`@0WCeu1fXuk+>gq(4lnf{Ll9F9#?aZATK3oz} zR&KqJ_5S^FeW~r+xsjwD6a!MrE`R(DECVx5&bLA6SzJ$_KK*)e*L|=zddm{JjrNeE zu_gw5r>f>u9X(bV3aF3>{nE?Z+ZV+=6{(~ux-m;(<;2v?f3Q!Je{N<10VpRq4eEG*cOeTq@8(4%#QJloRyQ`ltMq(&75 zGj0EJ3$7oZ`g55#C7IcIyE#W%He@L%=bVYsNS-s)7q4)&rsO1K1fRIR zuzmY>%9%4y2Cfm4+NrWU8-P3;Uq4wl27UtAGGXqhn7DXJ$Gngy)z|m>oRM{ocQ)}b z#vBNqxuYdLDgR(GY)PF!)tL~5*TE4N?fCnJH^1@|t3NRx;p-dAY+J18xc(A>L(wg% z`2t%YlzrtpPA%1lv4jn#v@HD<&opw-BMRVY+h8e1LUp-|g2xflrM z_}DQHdF$3clLlnv9OEbr$vd1k-igvVg3Tw4bG0rFeORScF{so7UG4E9^BnuKj$w5nI|QTueknU{t*3KU_J5Vp08nTC@3}y%QM$#FAb> zO%nELX%Um$)EvZFxbtX^O@0MUrqySz&#qL;HKW$j4%aAL?_Fh;Gkf_j`%px(ej>z1 z<_{k}@U$F8t|Mo3Rb2ikyl)@h)}R$Ic&IE+tRdbRj)=cp34tLY1kwkqfUqHo%fKUk zxSnL3D+ouVBP3V>cLiB7F%}@8t2Qg04jp19W(R(`&|Hl{|G$#Ye~7%-LV|-gL1j{9 zCHy+@7^t2)wNCNI0AqV&{T3)2&bjbsz~A<6=IW&seHmC%Q70J9T{@@jWarwQqY}Ie zNl3wNGnfN`DZ}BJlCi0o8QKiD_=)B94!0$>)up7jNJ?sDO;l@E(;jTxZJ?~xw9#xb zvoSX2N$kfM;bn=PyA^(Stn1>|BuKb3S}T!xF?(xZzz;%nq#X#SWEk4U|_IA z(f;>y$76C@MNMu$Ox?EN3azKR4rXEXhSl~CD)5SGs}GG`KR7ZXux0#X|3l8Qn!vR0 znsl2i<-oT z{QjPU9zXHnBLPA>K{~lBAt|Xqn(&8b4U7`~igEh|R)_;85WtABCTd^{d;FwNP!l5M zqv9U_vEJ`FDe~-GkQ?!)29KkO+6$VtkY?G1k-YyK!eqWYeJkzcBlir>>v#%-0~ z6l~f_G#c#(6iWM{#{PblXsBBMdZXpY|MLH&TGX*282J4dF_RhY27ZBkG;JJw|+Z~4n}aejKA+r;6aB}shR*ke)d!68v7%Y<8IVyJ07xccJC zN_EHtYKncq;wN7%o0rys(!2%QmQ@&D|6492+3QUU9~^LYR@}9FHy1Z|=S{ctu4q_4 z^DqEoQ%%-g%S$86yboNi%m21m;t)_gk3^By9}`X@6$J-p!7Q%k#O*gjHe`Qu;=Oqj*7e9xg7r zpb{@sQy{gI71QcV?~7cc$_i`N3um&TqJD>kaSO8SL%gWub(sg)#3(IJFX~T z4{Qp5@qtNaOGVw%!M2)o$1xEYo*0E0;reRbq^Dy=xc1Lv*vEalimrgbC1qfOh4HB6 z;E+(sbN5j6CdA7~ORvTTPzUw1_2?5%jJ~GnfAdHD%2!Wp2f)H$aMttg_2LX`dtDDR zQt;!)hf9$>9|>BBpKc?ZO}3qs{+S(T-ha6;T-cfm563<-M?Y%%w4RW2vf(N)ess)V zE$~^3@?V#{{C_fvTz9N|e&CMHX!`-uejObytK7w#1>>cQ^AGu0{%W2e#L*G=>3x4u z`8WR@&sxj?DkqFePj{O+e^TaZk3JWZT~c%Q{du~WV-Y@h6+(G|;gx}T)x*N;*RK<3 z0(uNX+SH57*CMst-IYDB?op|A-#?2^1bPx&ApTJENbkm-Nt^y>--%^w)N+q10f?2i+rm6Qa4rC>ecdl?;_Y}KMjlt%G7RtRRI>QYIC zO<7TeWt#NCJslS>Up9fy9vvJKu%6wAgG@Zq_^-%hsN_8HMQyc`7tyxjle*eqKGh!P zfM@X36J~PckvI!C5td19Hv}YeON;3(zv@~a9_ZEt_cqdrWy1%iyLaz8 zhf*k7!B$R+etu3$-&3sH1i_C(ciYDLzvD~fTRJbNT@;?*$oOhf0SC<^ePYL5!o}1m z-P*3z_6WvR*)9&D0h*zF(`KL_;VFW}cem%&0KIhZ;O-c#G8b}-Ti5$rF5RcYWJSMf6obX@K-9AD4yOx(DxB}t#$8oNUGBTPlqCH|3_JZ z_+Bn1f6t1VxE?8Kmb4J*n%A1^A^1jPoyAXSVZskb`s^Vlyh}=Y8-Tv2t5E=i?)6R- zJ2Shm$87APlp)~z!^Y~&bG_?s@=F3Gow8EQt6nVjqm zXF(ObrU)CEE<84Rvvi;TzTx8w4Qz6+`o>HJxpivtV~?)+ua3gMC1z+R_|0EycjOTK zRn_E37-cpgxPp_R)W0*7fe|!nM1o7l6fUe)=~;Z~whBjRj{m7mrV%R>F!jH$=q-DC z2QVjq4;C+Kv30Eng>KybSx{-F&LeNpB0WKE&`YqKyvEvIx0*caNz@KS%}>KBp?`Iv-{; ziD6*+1-fvKx_>>K^|(!N_t+|4S=PTi^gL_V9|a z{Ae=z)e4BGqb?j-JSo)M|8O@TxV2|!{qObo;Vjvm(k+1>LJ9LuP9a&q?mltLtFGT= z|FiQl@)#)&u5=`3`24w?9ylrP3hwOzLHB@Pfg9l`UfDG?Jom!~Zr^p1s#;p?z=d#1 zxMl$A>k}{W+DQSFAv4iO21zKY;y={-JV7q5en_Fag1dY0b|@26>vq=%SNu!2uN(ha zfGUEE-nspHm?`wm4**nps0Gm6;#rY%Lr!i&a9cK2gXim|+CI-QZ$Wv76XuOd%k^T^>4*@&fNVuhO z>`QMy@aqw$op7zI!NC9yzzguZGh^`GH(0FK_9dr%4~On}N2l@pp1(^J(LH-o4|Lh4 zdJsK5f6`7grCMVm_7NdR*1DB&i&wAKPG59zSm>rX2fHrP{SRs-&rrC5Q576MTzq^I zl5N*3mG;_oQ#(yl!EzH_pw%Cl=$=Dg1Nr^o! z7a_3*m26g3Rpl>y+?%|&G(2u!fSA+HBk790N2V%U(jE;-8KfQ8ckg+8ngVA+&9p+( zat66%FmQg3ffJjg+76`S6;KYHiwUncCly=D`@)m!GLg15W%;s2$xv>yqa?lniSTFp z5~y8vS*&mFNiOawuZ<`QB5#m$+WqdcM5@PdVbAB) z`wh};4(LmXi|ai0?z(0a&|Gh9<@UOp=7V-S^hc%^mzV1)rN+vw5YAmjn+2hW+QJnV zVDSTHraB95$i>S>%W@7*JM5fxSA0GhY9RRF1R!*Qpu6^HDTRT##RQb!tkf&FVA}{SN3nHv@dRxy-yZU7^a=cDi7Cr z#L_jw#>Vz4HwitDunU~bdY4+HjXO%FXT5~-#RClag>dVa?XDz|z~J_N94ZZL^4L;j zHcRW-AZHO=Gb?S7);^kjc0P9M5SvIMlYQhdAWTv_`cc0D2-A_;+~*}duP$@K$3aS~ zG_?)gvxb*<03&w#*`*%Rmy_B`cUgp7kKbGdd-HP9A?B~Hz?KX-BgYOVv`sxnHBYeZ z6Uym})AC70E%hG5&FR&1gtCGSr#lX<`St4ImcUYpfu>YxLN$S98D_r~q-U+Q9p8z* zH2CwqyJ`~8?dcyBRv(@>w#tf$Va6KnVrS&pI}kO;s2}OipE9q?qk+N5&vBcdkWyRc z=;Q}7a<_m-C42<&+}zyg0FOa4j?Zkj%wDv7?}O>O1)gKRf55`jMdUod!uy}T-c!4^ z^*r3jI|Jw)b8&3I-{%6{r4}#$A7J3WHB~m+uoh~UQtm9k#r}~ z-sI47!#Q*fC*ju-Z=&8leJ4hZk%VAV5VbTR_KfUQ-6g~W^DU3ORWo(paGILlPW??p zA1_Ap=+-sLv)yZ&od**EYk4?lo^qt?&FiwHfL=|$F?fnpA4yq+)vq%2Qoq#Jt;~ei z2rXGZ5>89=@4I;vy}$HW&k3fI4$eGCWL0+{zhkid!ZR$Tu! z^_gjnaI8i6F$6ljq;r7spu+P^k~NYZhlX}R^_n{Cw)6@zB$}^StkQedO$@j2q2jB{ z+$@q?5Tkai&d6xx3Y}$1vc?U??yC}VLZA+ ze<5+4KK$P9XOeMSd*D0(I{1hE01(ng#x;qSsi~nRLLw0Km@PFPtvhYpZ^#|khVH&t z_-@fo_`+EUq91&(dkypxF74bv^tBrY_oWh@hA``Nz?F6gM1;-nAHvz1A~Xqzwz@+R zW)?#YA6Za`+My||;XOivdtoQfUGX=`iyE7v2pbqiO&KPHP?^^N=QL8KrX6eX!6$!B()$#P6C3LT+G zCS_EfX=ecYyCy(+ZkzJ_pWS$!>a|!Jmy*x?Ku?+8AheCD{z0M-&&NjNBt1$uZAErvST6?j=4w4kAD13gBd*y;@(I*4xkOP98w zP{vsUOu~%NQEFKA=93`4XQ6DG88lw@DH3#9mFY0@6N6;C^Z-;6BJTdM#Qlh7WR2|v0+5j4%S5~ z(tXYx{dvc~3yN3_kX_Q&1+rcKcy@$);SoNMwMi75Gc%58MH2*tSf9D$Je$5MzHHm#HLp);EP~#rLvQBjP!NpB{Gmh9GzF8Eu z`8Sy57>5;Fg;*&UFo@{Z`ei8(2!9Z_)`cDPkRFIvfR{nTLqUOPrNM2oM!&9v-Vgb> z3X4dO2nKiZo;$4QraEU2qRAbhq|IVta4#P*BSUs2771%O$BVy?kN`p|$(e@sZvDqj;{}Qf zQCV3Y5Uym55?uE$@LeB%*|WmIxsouo@{=7oZ)UdiyI^|Ic;!#nIl2alBXAPMSGc1w zLNMnOA|o*plJWxdB%+W&9b~6qg>e9N#x5c98bO#Px{7MsRhWliMFJ*<746w{Bx0?i zqqm_at^D%%jL!UmVMO5`ObmJ_p#w3)8H3W5xSEH!8hwPLIBtRnlb&@JH#V$Xu_BM) zY`{!A%BD(-aBH-}$x6&1Y%E`)k%1z{1n{1(5iUWU{T>0FISDoE-&ProM38xe#~bDi zOayVlg|(YlE*8Qg^kWgoAq~{FU4!_4jEsX$lKx(Kqo-A`v6EenXD-C!!PJxh474iY1D0=r5bF&zK4m{P|b< zbunPD<0nr>I~?X=oH==S8&wI7y1#PV_9-t;oFvb72cfL4)&#{E1q{Y(sD$%uTVG(~h-~oObyK=6zb{ZJYIqO|3HZoBW zpgH3_95F;A9tMHG)pX~Ehhbqpu$z}XQ#e_-0Cu|g`}eP<(zy?iv}Qio8@8aPnyK_y zx-*iyEEu3PwE=dC3A{C1RX)6utSOm9GY=JiG{VU&rO~#+UIW*h)dr={ZSn~J4~vgt zR#Et3LR=gd4)2+87E~Zn4jecTT|V+1{Bi-YmWlBt+KS6lwY9W^+(d4jAWl0%E6k^7 zp`qR|;TCk+0p!5;11khO=?a8)=--?hH;QMQb$q=`9L7YHJg`hLfZKmm2>xIv?33tI zAliZ*u{`yL+5nCI?&e=wo*Gtq8^5cKVa9Ht#W*n{4V>abA9G|mswN8srhoxE3##+glmR4eg&$-%s@g?`^ZQD zcoRYsCG^Du2k1azGmr@D>(6k7>syIKWWMaO$iouRF)&yq%t*N4&_LT?Hh|=TjOfKl z57D2%5?i$+AAsV5RQ$EFva)v$BTawAaA(=$$AvSE4po)#)wtmo|@F&^hi-NMMR00 zA3mJGvf3+aOzmC%?$+hEhvMv45`R9)Cv=)H#_+ycIVc#%)M1}o;A&O@R z%6df9fpg?&s{6y~E+v686^C$wM%|zH0N2+V(riT``fS$HMvDWGZEy_gP){5fAhL5O zC!Xl)E*?Z!*V{x#cny^4N9C*8+3)6^f4B&I(pXmnv9iAnn>Tgv=rGQ)%EuW{uln5= z=Q=P0)e~URFLt%d4d+(Ru_qd3>$3%aoEEHu;DdllMdQ#4m=`}d5vL2`Bq8De1f&oM zG2FQ7+f$debU4wny(~ zR|->{oYMasHGz}L1cwN8qG&+tRNCQvC;`^u%$|@KO-)Th_n7F3u*4x$B@Ih-n{X16 zY%bVE$dhnGmX-#k#D2;NQ~uS3=hqtUmqo~uOlUg&Ey8<^y>d;Q19s{dco`qi9KKiU z-}Sc$&{UN@Vosvj5XNB$m|%fpON?!fj6a4qyB)zeBnGvtZ(7=3^EnXD8X6k=QQ5tX zya2ehZm>QnG-l7W#*6h+hA$A%;Mop}v2ISg)!3*{3UN`wL*GNwwE0YM8_|sAHfIkm z@x|YK`J%v(7=iiy@sOF8^OEJ2?o+$@m7IBC z;{5`<;NK6vg|;;6c~#JTV}Xw{78or;MdP4a{{Y7_W4C6_5i z5+gISNo$r9D=X`M+!cn=<2pKYu-^hfp-e#ZUPB^|pF&DGkM1;94vs=hdEn#6Tbj&1 z|7^>4*@G3bbr5RIBB-*aKl4^^K7U^K7t`0A?XrH4b!$G9#O>vKo*pGycLoLqj-NeC zDCg(FM#eWO4$jAJO_N>ceLd!24Qj5?1zTwj& zj`AQXIE1`64xz;>-~T2#b_c3+ zZrHHRZ92bo_To8+unP+dL>Wl*S%beFkqY!B93@Dfw_ut@`Ixi3s_Ac-e(F=^}BaX0WbDNH6H56H0_!8dlOhPHc--u&rIyyRLz$s1+ zb31KYCm>??mrVty3IG=}MB*3{tkeFMEwueRK)>(82~b}VQV4?!0a8y&iO9!omRO_;w03x}?*gDClR1Ef!(4QetL{W|ccFo#GPZg+Vk z4P^y8rGP*%s9jCara`cnrE}K622Y-_l3+Gq$8lP3;;&U}gW$4-tc=qQgfSw7e+_3o zyu_@p`Msbd99koxT_kv9@nh_=1;kB3Rv2;xveKwldtdU%PvY53EFW(2eWazTY4 z0SO}wW@x5I+9S>(RYTkPw9;ujygF+U&BowysHueXR-C3o2$hU1EWQZ(CoqW(EjgSa z(|b@EZ2d;3gnADLBj~~G?*qMdrH6+{=#-Gu_sp@&qt&}3oN?qJH*h-_=9_yN#}iBp zbM#YJbALe#u^9xP-h@jM(lKynwz-b86BK?Mj%oZb6sL#4Pgv+Ny4VOGoY2afhsZLD zIQtSlT#g7GnUR=FSKD%wrbgNVhy>kW7FB@rX(oob`wx!9_gUaLvc2KnUGZ7ZoPW|x zGVJ?BU`O}j49VTg7v(1|j)R53m%Jg4EA0G0n50oCd`?)r*ZkC>tGpd8W|IJTe;KJk zh3DhVF!udl`YP?8p;1$Qbx}hW|Ld#`U+kvraVQgsHZN@fR&EvA;VEc`!;wHMNjR<` zs_s%L3uLXll;+2SJBt8Hz<^0TVDZ* zu(K0ZFXC`K6g-a$E=j-$O|iF^#i@C>AOVuzUu3+`9AIyD=@M~B3-AO33Us0gux==G z-^e|(Hr{F!qaqB;0&!3$(cXw2*ufUbYM%--eW@a{fW`g)r?)SUr+V$X{*^?Np+S=r z3Y|pflp%@Iph!xC%8)XYNQND@xe28VB~FAANu{kM^H9oGLI{a%+J-h6vO}irS(kI} z&vTypdEfi}@BQPP^QmLld;hNMdwtjXuC=aDS_%v$G={5ug_kR!{dfz|o21}0)MFCk zVIQ}OJ6vo752^o8*e{X+R>nqZ@(R)02VtaL)ZUooB8-`2=)0_2L*|n^_vhS2i~Nzu zLe>@9BqpAw3KiDNKpNj%lB9{B9ugj&;H3Zl&=H#dF2f5KF8pFlj3|z^tK_}LLL{4t z2pv@+bffZtK2hq`hHe^P+2Q9;TZo^Hc?+>YYvXg^b$IgxQd3hYdFexBN<(4>N^@2k znw3jR1?@L73V`J{vFYHL$rV{e?{(r< zq6meCPP_EFsmD&I&dI{4^k*-CLP|kbXA-{Kd!#Z3^}`>M#T9rGP{xF};|y83YSnH{ zEN$oRCtz;Paey94x0fWWf=l)lF+~-Xg{aW`jh}%{$0=YgcQ>taG(hXwL&NC6uq=bF zvwjz4Y7dgvxs5Mo?eBsMmo{c7 z%xABb4wjpIdQ(PQ^5p5$`O7`}E|4rByxVzRUS2O!qVNfHv359$^m0gHT!p6lEuz%o zI5XzS6iu(EDF?}dh?;(B>tN+N&Vd{M&juUOMBl7N885xIfp`gf;r2a8+j0#fp#g$= zm$6R6JS{A#?lY0b48TD+>D16MB13UHA(1J9!XS`-YLrHTEvqxaTSao7L_e{PN;tsC zI17Svcg@%p5wgmhWtwdzf{v9WnRgEqGHSm@m!E#=#>z28$={9-YC{x)Uv2cQJ(WC@ z{qTW6yBXAimQ^UNyR=}2hV#S9KWlBpurTM68loXfLP{D~QUbrm?gXYlcuV*!P;t7I z=&5hdG5dz!B}S};BtvKfq*+Dy5N6x?ri@(vWFqiq@rj6NLBmab98` zC^9O{Z#LlQ?EJaf%dkXDS_Eg$ehX+LA|m1gZCG4<{QcP2sZh^@phhs$p8&cP3DZIW zdJW_xA})R%b8%@zAiOHGP0E9Nf{cHv(ZG&MD=WXM9byGXWJ^+$slgDFzBWtleG!%F ziF^aHqapRo`dU#3-@|1Pj2zaSDm-iQnGrv5@3Y_q)iZ@CQ`32nSscrBA9`k}c`<2W z`fz_lR-J6)db@hn-|gztWf-GlZAvJM$50LnA&m8tjds=QeI^pJ*OfjeEL)sX=F)6S zWb4qt#_RfFT(0Hp{Hk=blvGagx8ORkPOoj1yI6Ci`YB{VlG#5BF)V1`h{DBHUmz^| zF2Hds#`XaG&SkRwJJjupMCH|zuTNA#yBSGWd(~b?rgCss>FxA5yeaQ_W~LhXESr2DoH#y)JO2_cmmteDPmx(`&9)} zhCO>i*OEt7HR@N-T)@2X+N{sNF+PVGh4nQzF$Vww6aA%7J+6-N;SUg^ioM@r$=VLq zebeD~|6pqJh$mR6?A%j82^b(N`oQq1akM@gYDa#1^}yxrK#=*HA;kQ-!yDuBzHy zdH(!)g>LU{rR^-&^{!3pRC_+&zo=DOiIVybt4UVxc(&_)po=e6E{5VRXV8vZ6_wuk ztA5=v@#)Ozr~1)z73_~-9Co7r4r&?u83K)p;}>9Aqa7W6_9lC2FS}Iyw|wW)N{q6I zZq$0D*>5?qB*t0C-(7twXjAIO!-x?iWGp7j@IaZ>C?AvW?uv0oS;PJfeA4gOsZ<(Z z4f{;!tD}uxs7l7wJdm)8*e-D#uu|nvmxZS`2B*+f8fHs4KV@8=(z3w(ZgT>qDA!;J(77opoXVHPLn?aiF9$jB#do-Q2+(f0kX7E?D351+Sn zYW@%PW%L4O#0S8Z`FzP>2a?9c6_>KTEV!4DkkdML;;izeFN_UOZ zhF;%#W;wfX!A5_m*PBv!>QOP5pF6&qH z({yLS^$;c~;Y`;Plu)r)s>rB?dP!>ZN4lgo%(f)#0e{~r7(Jv9+rb5!ROF`6H??M{52x>j zn+nrlrkCUay@tRCOw0T3=OLt6oJj5n7?)!WY&;0p0*R%zG%s20(B<%CSjD&gV~C<3 z0PkoE1UaO+6e=0AzzBV^#eO(z)~v|uXRFad|7Z(84hJN1RD;0I*dHCm25*7PHRK`C zugSae%*55MP2t;en$v%Lo@l|UldV$(V4aU~M%Y^RM~B)z&&U!h)K1msh*7TU%4$hJ z+f#hsccRxU;5jTi;DH|Tx*j_8Xk!{=+kSCFG$XVN`4Cq?T0-SLb<#r*=8h03WNHbB zdJQZ{)A!mG5-)l7?ApUmk6b`5fH0C)@_t8-FG=8mh)9_#?pubVNEOrVR z!r;dS7~b!Qe}Z!!hJuO;185qB;9-1+L#7Way{^jHsT*7tKPeF-$1rt3iD<$=dLPTq ziM~T8W6iTK-v5C|z3^|19${v&`B(G2y5X@)Mh+fcV(GJi`l{R%=8eOnRfqpbOcIxm zXJ=;c5|=&X;5Q*&{SmF*9(7y&=cjGyP91?SudioXvWKE#VuHwSh?y8mcsyX@P+$1= zEk(hmCLeRckkdaESWm9ajYO~zqiMumef@_s%?od~MM<^grqy=36LM=feF3#!@0KNvZUu#ptI3CVhHh=!g$m2-g zC4j(siI1)SAiCL^&`s&pR8?KYfKf-l92(t6NlAys8#>|RAmb?b+}?pxvEaf=_72K- zq8E7!lAQ1;#?`qg%Nq#DAs9{!7(jjeXQf_sYW3lQn$W@HyLS283VKmeD_6cf6Nw$6 zXL`Id(I(ok*@y`H%$ zAkY^I@ckbKP8-t@)Me>?l}`jad9raPZn38~kOse99C!uP1o3=S^_DC#qAMYI2+ATd zbPiALwQUGAFby#%7k#5N%E%}SEkA8*@Dik~?dJGK#@B9lgK`HK#Iz3DICZb_d=?sL z6VFRLq2CagLzc=d*q|Xvc;Mz~*lOXBUuLBmIV(1_OLX2m>Eg(v@X;b+$)cEOvT#Pr z$;-b*tQaYGwPVB|4#C|Qu-`<4|7C#pxxI=C3oU@L<73pO8q4lYk!cS?4dZ;*kLvFR z`DoXeJLkkOpOBWnjK0n4aj%?^EC{f3j^EZW)M2JZ@M=%uMM*O)w`mE=8>fq)ggmZs z7)(#S611lPU4FcA5PmW`6q4~w$*Tw~?I_6}{Axo8JqS*SQ;FE}UJL^ygW6w+NKazB z%xZ{?$d16eCi!n<(^y$OG?6^lQ(E`@wjo%U>G{q*Gn?vpb$@Z4)0-0N!_h113Yh($ z`O*VtwsD5KlJ0J_tIs$Nch6+Yn^8#L?2{=jZ#4NnVr9JKO3~LdQi?$PwO; zYYuKH)D1b;d-pVRm~-edV#|&=YEI?jJKKKoOGK|fP$;HxpOPN3+P$rs<j8{mOhf>WTLPFC^ z-FNol*pd9YEEh#+K;k)n_j@la#pI9pkX)qiU-lo0yz#p}ldI}pPvv7>IW*-@AyPu< zdR|!Q#E%Q9@-nEOQqw#k1@x2d-sDtIi4e6{90!feQN2Q2yF8WF zq7E%iI{yk17sf#vJJQ~*20U+`zpk8oe^m#^mX&$vuBwC9s~lhBLp0mAizw{@VDkcS z0Ftx~(Z!1sGfmn#W1j;P7A!jzxRh!^j$8!|orTFLtG4V)g~OAV8mrCAt#|5{Ro+o` zIC*R0;DgxMxZ!6-CHp?`gSQDFISE>V4&Y5>yl;PfqaGFW^+#MR`?~|*mio-|x)BPP z)B(b!eO0u%J8mquEKOdml4z`AdZ?Z-_e^B zqAjtXrNO1C-&)g8Bj???J32-Gt5^5uc%IT+sKZ>F5mctRi+cH8J<5$xsIbn=+7hkA zwzcz(Fb@7}o;{Du>9GO>ZY))KY!^dUi!KgfKLl1GodvZ*PEHVNM=`{ST)`OC9OBao zN1e&{p2U8|TV3||um(HOAO`3Eb^JNqtao@_(%#gUP>R2R(dOB?<7I4LbzGfM+r-IO z@$r&_&`^xK>xjd)=&Rv16i4Dx64_bHND#57A#pT8fCO`8$XX}f7@e>r5y}YrNH)7r zJo2f6^Y_k{KyApKL( z>Ji}NhNb>osc|XL#0eO6pdtuk8RvP9DigUJd?M0HN(+D;ol}hr4gHX>h0+-dvJITa zPFOR2g_iwhL^d-ldi-Rp1&`vohJ3!Wjk&m(W`D2UzF8zA1tBAu@4K*}TfGRzvQqF* z8g96!p)ZR`%b**&X)a(>cuul>n(M>bOjR@`;U=BFY#H0&j&SmQ`+a?Ymd- zV|uF>5kuhp4D?J-wbwXK^VqBpiv=dpN5+M0-dg;zn?C`s60PtyWHs0>Zs)in=y-XF z;VIB$SQpJaN8g8RsnY=KjyiO;IUBhS5HifAwqtbq79_L<7i#)px>{VI^h92;aX=m1 z%OM9oR9Y9^x%3`VZ6F=uH~=tR83}^83*^M z5_aV6QZ1_KIa6Yrmsjp%=P7OKQAFhgP1cg>a>yS5!ElhJ0VEYGwxi~UNIiL=gRPvu zv9aogdVMFl8rH9rg2LV<7dFB!hLHI$EHBRqY!$bbb*iN{4(>ttrZZe(b=!fsSEP{a zV>xdtY2%Q-f;h}bv>d#x#56z*X;s~S=yxPIAEEtZ#{c zg>z0ltH)N4f?Qqalz`TeYe**PKA6TNHSa`u`SO53t_ROuEjK#B32tPR_TVFuG*1Bcbo7pQW*wMc8W`*%s|h9LZ+}8KA~sBl7DUS z$CQ1g=2OHGI~R)BIWzD-#O4mQH*&Ww6JI^U4G8Sn+qR=cJOUMK9g=Gfv)ek~6&9WZUk(XFip|e9H{c(=Yxh$%=8Dp%#wef%@>t{;duXl>J3fzF>V}#L9-MP8ni`?;Xh78{?LSUriey0RyCDhq$Q@RSF zmzDzUVW4sDyeTLXBK*7I-pV3vM3FDrbv8tr+u0Mp&4IKWbSbKL*XQ-UZ^;#EONpNM z_;{ybANSUT3kNe1sCA;;+H%O}J0C2kQU*i%a{d}dcI<(m?1gwFAs2}}M!6eb3Pg+q z(W40xbVc$a`0wAp4?$a~gq(=h3RK+=Q@Skq`vrJ$aegz##>bKQn&cFeJ&*jDnR%nE z-njA^JFhRgfMfVuy>##VdoBY0kJ?abBN|NXucGTF$@j>Nu?TS0M_wbhWq@28sXjJDzMpqAo=9cl4+q&&B4JNyvK+YnbB@81y7#i zk<_9}aajBeBJKEBi}jzERY8+Th_;$bk2vZW5$4YVQ=a0kL6-sD7ov?j#MH=rc{uJi zZfINp?lmbl8n*V2A3s`k9N^-!ERtqr)8_&7oSr)`$vJloBuSq;yGU{faC!YJR@n9M z8vi2pSdU9y0YGs)2aU8jf?OYWfM2skGX}Moh}J#KV@OUUM3E3eCWBzZ1oA$nkszKQ zJ$XXXcLH(3^HG7zH3O05gIk7@YTuaaB6|tAL^|rqojo$dQVOI^`9MieEYy@dJ7WL? zF%E~bXuZ{JNW2Ne==K8IQ+50K=&52!j;4#4nc?sLBXa6eQYssrzyHbVA|85tpuYfJ z*5Oj3tafim@X57(ZUdeC6s`c8OGFOf@u{$4D=-4Ty3ct-Dv)wYIQLh}EJ&t4e4QaI zoOYBJ5eb&EmyLgz$Tyn2_o4vmWa34dN}=fp!YIG^RSYH_sg_ABU&iVj%~U*x>ySd! zr3R*uHLh-e_Xk+r+;M6=Z?zE@Ax8@1ezPe=dzI}sHB~Ueg&NTzyk!y+fjEud?AR`+bOpFdlIMw61Fiiiuec#J6D?CR%7ZY6rXTw~y0*!%pZ|MZC+A z)H4eplti-qQ<=reI$S31Q$({2VbL)+%+dG0`iLh8cZaa#G{Su%BBQ5)@Pz zVyC(D@F|mpg9ht0@CkTVknL}g0Uc*aLj1`+rDP&U-a0A)6_(I~>{F?=;dk!L$iKPd zE41WL!kGFlTQ+ScCQ0`Jhl0iODT=l@R~d6d z$i}gqT#X-Fr%J_65MuzD**h0BMh`a-C_~g^n-_h$Ir&yQ8*(Y7|MWTZ=iZi&wqtj-Cn9TK;O z!9L{wP!!mER* zi1N)JQ|+Nes`mFbIVWg0;|j;3Zg7x^3$d&_V!S0#)d|TydA;kt+uG(fk09Jx8sF`Q z_%DnUF|3?Q5kV;eM#2~DUEAl5*~CQI9rY+*a5y9~n+jHVXMIQ8{Ol+dcaiT1kIQ)U z$i8@RGtx~P)g^*8Q#dAN?fG0?u0T7Kbz-|H)uS{WIl{0i5l(9@?h4(r|7al=;QezuF7`*i27<@@YD>$itJqDpi5angTw>2c|C z{mfup`DkBn%tkp{21Z7+Ltc$5@$de#TD-ix6=#0G(w@vAy>{&W$ny2;*LZ_fk_?+S zuX$D#@35IdE( z9awCnbh+0DEjx7O%6?uxzNa;PQd_K#s!LBWU-%r>FqnLlvgjQ*G~aCECw=SZPjfSB zQ-TM(YdowneV=Al!@$ZK8}F7qA!6{xv(Ct! zgLG#1rZ1V+MqSEmgKm4^ z8aZ0~{%>?^)~tCUYRVfBhuKN@d9ozwI2hJc#gd?%C}(TC_gk`&AHF<$zl{BlIlwl?`ovXLyQ zkY0A)gUfB2#>U1b$>F*D-6U@Ft5U9Pq%G|1jI6A;?lY8F$2Ct|yU(5O>%}8>L@v$8 z74^o%#1QvDisthzSe!_9>hf2N?v%nO#f#UkHO-Ys zmpgsMJ8(Nz6^AJUw~1+c<|lLK&6@+i8q?R2h8O3CIv1webfh+rE>=bq`-->jSZIzp z%62>X{O(QX`Z0FbDlUwfp5B_s#lmuPbksIywmIc|Ijco;R@Gq2moLZrO7D85-BeU@ zv#N}ccA6h4vH9_Z=Ps9Q{>dVL_SH#lpHCPX-rINa^OGk}NPaT2@f~$sGA1C!16SYii`~9{`GOb*>Qq%RI<6zq9wllk*ym+CaC*$zzVaxQxJtnUlhYYtKuveP3 zURqqZ)6W+*SZ-s-gcXo&F2%jwFZ29{H`I!50+{bYlC%=O$$@ALd< zD=7FiOWJMKEb+Cj&gAFU=U!f3g;5GVzl6IU?z^~wRmAXae{umQtB=BgsK(Tb^qj8a z8h1DETV-9aAhu=8mM1lR3|qF``SHW_E~m6!RX#uNcO8f5hro3l!NLZ2o@>P!x8=Jk zDJfmP)ZDO=R__Xe!u;Y?flkZ?!ykvfPCCsBleTT!#w{h)Ja~Pj6}1a-JHbyYaSt+-T(9hh+V1-tg<}2kdvqU>!I-uic1+PcJo0>gedW+*QhW z?)>@Z2270Uj1l=Yo7C0XH0Ij-4n}2^@bUBVR<9TPw^uiHGHJKEx7V_jenHDT1gI+7 z2`t!;k1Hgron0wk#SjsQcb)TEzjG9)%k@t%YBb?mvb|;zns!UGbp^x8?hEVa=;&za z=}X4@YGOi@KX#L83bD^GFV0iLq_47OwmJ)Py3gB?bgU;*&y_Jn$HY8MOJjD<@DWt-nHecmu1b~tiRI#?P*fdhO=kS?%uS%zQDbpMS5@pm&{#}{OM(^J}bMsyAjOZ zCuX+(?37lf=oJo;&F*fYs*uTKFF(K4BrH$H{rmSj&GyBemaf#m4PHpy>^@z@HJn+n zP+^sqn=94qI@MA=srpz{+5E1c_RB+=RxQyv4v{jhTQ+V#R`~YD>X->5ml1{eLC1pS zSSYd4(Pv8TaaaxT8MRLZc{OsXx2+^uj|DwmY+tVPOgOAXp-Cg68jH?T(yr%B{j0M| zs;Zbct8_yx`DGrLlCoEY2pa?hPYpC(42k=idQqKxp-96u&w1i{**RNXF2)(zi2O0T z{8BCRh`{K&{@x3x(OmDY~oI z#Xruzy^yA_H}C3{F~0bY(Nb4gAlBER+Z#B3-SY^VZ5eXAEq!&eUfKZ*BD0q#s<05N zNUBWB{7u&u(t#^KJy`^`xy8lVFsu%d0Rz7Wiz%~e%jY0P9}&GeX+g{|l}go3H)qjKHvAp%4<$@kim`ut zdCElm2<6&MwgaZeuJ)4sZF9d|iyuhAoC&D*#YMWkORqEZS;r1g-#M43)1)9$Y{1w_TSR!|9ukt^Ox;;L-7@N*~K@IUQx#`JP_pJb$|QcTj1Zf z!~Y+C9`z<@6XI(5>em-F-bR5S(W2xtx&muq5qPglPs3x`PGFm53-dvh1Sh`VcY$L&m$am+? zT8g4#rrmi;mxxm|MP?%hhws^7nnEgJMBD3FZ-bv!XG^^a1 z`RS3JCn%If&$yw|IANsx`g&baQPFy7PEO8yA3v(t|NN>P^U&Jv#OytnB%q6yH&^6U zRq06F$f3QJk&3#y4?jL&^#3-3OA7DWwcg~z-D_{pc;JG_I>ZGT#rVxPc7E`^(O_{4 zK{(5%^Q-V}uX##*r80{ZNvLwaF7iL&Cop`xjqQ$OK`bSNiAMjf? zf4i)f^V~q@jL4O>Dxu=mJuA0&IWAjNdamp-WvF_<;nyZods5DzW_Cb(=TA;giXN+| zs&^w-C?jLG58D9-M*j=g4F8AM;egAl3FLF@)~choKVJdD^O7p!<6r$bO!5Xs zvVF9>oYQxC0c60 zi=WWeRw+j!k55X{mdZCN*|1g8cE!xhOyZWBQ0shez^tQ(pS^h4;#0`tqj~tYjy4y+9n`yw7g)x zTf}Da*C{heF)>zbo52FCXET?D*@=f@mXFh;@m{g7)-DCcB$HQaW{d%~0 zZFRm-bau3SLeA{yDE6tgwYN`e;X0o^vK`m>e(8X7?u-dG_=molIL6JJpU1Zbqr$k1 z@1amAB+`o)FBmp%>>RnMkJViwl-c~QGHCv;TAYdf${Bu6a{A@(?^b?_kY<;o-KG2L z2?5ZizG0;g_k>zEN@rZGU>e`q(rJY4Tq9OJ@*cot zv-{FQ^`-pr>Z4!!Cxq)Vb$30Kb(bL#D;jI;!{k5{OMwidzs}d$-3fV4woi)yI}}cy ze4zWr{<&f&#eBJlJ-2LejpK&s*w`rSS2Yo)`|JX|yp_Y_;mgHa>^FKO=zO5=RijWM zzWXzwa$6PpU#}wemp!N|D@a$aT&WJ<;}!4viY$4#=hJ3=_k{_hrZC^$?(U~iQSZJR zylav(H00d7cW<+s(8bKdnjOe$MZX$SrS)_ySy))A7k?r|3mfKog@tYHQ~B7~sP|Go zo5|PLxAgO8gcpZPi^MkI<6DlmP~Fh3TPJU2C4BdY$!UuX8in8c4z5Pc#)t{tt6tVH zjUaQI|7dX96>o>+-Zj=+dcq{_qzrW|QBhsE)rC(Fudx}q zFtYj-56lqIhH~VHaqWwfPFVI>Ox`!wvCUpy=e3O8FGz1#OkG(`UVi!Befxkq=t(FG zm)qLfV$};vUo5`EGL0lM0=#BC-2T=6vU@{BP#cl6G$Nj5gNrk0Zn_YMvg>KM853$d?XMNv@5PFD|Y z%Cg~;Ss2$cqgF>NXDuzxvD6-+paR}%RxTBDF@kyob)#}Q@QE?v;)ckkFJHLdy?dvZ zmmxA55SF<7QLcbazgVr^ulhY^GbkX8i*C_X+sesZCxSs*?uCjiIWt|~tPP9advCm1 zb`Evm+0=%xZ(Yaa1nbQ5QCyl$=aFNN z_A2N_NKyBSSvBtvaz{?swD%k>ZebY3W>iW_m6dCD?zZe)et!LK=`w)G^{duz;udOi zn;Vco#hNycQjL#?=dIa-ZNGS?^MpBa>~fECQ)fkN`{CgtdJ{|%KM=fcR&FC}1{&lF&hsclqiK%)njD>FMcFxw*NuQsD=# zFya4Hzb-pBI^!SEY?5SHd1iP002k@qncYgAz^hCsszQSOxMZ!wBb#Sc%pwl-zYf7^hmcS)qQO8<@aeYGT(0AcNA7L)29fdod0fOY(yx}Bx{G51{QM1h1^wR= zFH$WAKErH|QLikU#9kWYe6xzo)^nd4Y?=P? z%T%LI6-7_S@Sa!URHnC;5x^k1SQU1%1H%Zqv0HnFyi5uE_CPH)0)WYI@0RPd; zbq0>l4c0Q6tx#{1ER>4LIB94o9R4_WZZJpV#EEEI1xhrFh052#H;zLaLMvjyQbixe zWhj)#Z)1^a{_$EFgo`rGEE{|1)m#$WMFLV^*CoZDZ6j$*J!VTi`pG2fObNp8ZuPSC zL!Y$**hBb2O16b$zL(m**5N=E=TewXRg-mruTAF%@*-dJUJ>%%z18OC{i{G4V#)AW${sC!e7Qg&+O2xjc>AxrjHa47m^x_qkbUnv(6 zP@T&!dCxqk{PgHa&W*siZg&(_gfQ@i+`Z)I;eVbncUvupgC)6w$yfP@18vx zU$lBji3`LWJ&gM*R#@ZM75C@+(&>B1j2cI!TzfH;jjUrqUZtA>K^;G#^0^2U>*XbS zL)H6VuaRV8@+RNr^6;8_tCrDNj|Qcw35%4Pr}Ltk0}+6#S9W21Bf{>UbEOQCpF~2$ zDU`Rqs{cfJ=OY3VY=nG#eB@nRa)YYuhT9K=wb-KQ$GMWEyNh)jKmSwpNEuSn5rOqv zL}>vlrpo43sqz{c8l@jUjt+ca^lvlKGJksBQ1kHNYY4Q#ojOVShp`EWJU2Xid6VxE zi~3hIC@e`~z2uv>Zgt#bGd!fGwqfnMbt4TIBi~wx6&a@xwV0HLa&vSk_OH*Ip!m)1n;9%BrBiD%sX%?beVs4!i3rzt*WIxnu zFtQjJ3igP5=T4OomwOWBp#kMLMvE5%%k6A~1HbQha z5{??+vr4%wRfVM2O;=n}ajAZYG+$ZUm>eiB?j0)U3 z#wul}X6EIb9OH&!XHNI19^Ov>QD=@`Z8WTF^hsB%kr9pcJ}e20H0oOfuJ`jZV=bJ1 zckaCQiDi)U0?6*`4X$F@9;j?T(0EdB6*m~*m~POiXYo+y6KZz`1O~>)UI&f(&NyX9 zYerAu_sqR5d1J1QcxIBlYV7_XhE7vt3QI4h9Ney~}Rk)6G1``Fd$psvx_uEzlk ztwXXGlleSdID-PF>e%XoN{v#;lDokQ@OUz;W8HQ6s+6Q;!=TXzIogz~Q&xSwpi>(- zq>+=oiQJ6mUz{$Hy;EJSIZ{L~>xDR^4(6(%f?&+|T>7?aw0Cntvx?25oDx-DI)GofSA@5~L@GbDFyX!So?|Bx0yuunO{`Q}%dr?9a2a&ZHSXfr(8T$G2DXMf5 zD`U6oto?e91I)FxwGa26UmM}RNX;2}^=kKce;xhA#Ke#KlxL@#wui8tOVQo!zUV?K z>@E+{Ffi~PXv&KvesCz8Kc)(&}qSDk>@j9xS30&r0bHsz~md=ms0P!{fP=xVOVw zDgNHA-5j9y{U1Nx36eaLx~r>{%bQm9|HU zpU1O4%`9-5sImrAkbr!y=@8s@PmODifK1lQEmK+C%S=#lrshnpH^9{u;sVW0iKpE*$J zS5O-={6e(2JpMz2nVIg$r~%CtNnn)swAhuoJ=H#;<0%7hn4 zI<~R@=k$@dv6R8!?+_OLP!=eVf}$z%Gd&3boDK}~@#m_rnqE$`XLr$0ez4g@F{*y%;29bl6O^M#{*ImZd@PIjT z&WB!^kevTwdKpdj3Kifr`nqe?N=-t@R@dADH~xh|P&rH~FjKh9W1G z;=CxkI706-*>F)Nw9Pn$n@nEgIy+873VQJ1?3X8pCEOQt=`-$m&2#*TLSJ)vXbSIf z9Au9Byz|k2GFlz~HK|fD+mZIihuVywa?Q9b{vC-p{XGi4>Lu@=LFr76RSW+)*{sr& z*Yo!t#Qli4 zZSQOO9w~CUo;VOSTssdfGAcjcP_H%9I&zb!>HQ9DsOVf7G5%3SlvmfzRBA2r7%Eue zgv$4%NoUi?3hTczqt4JbgFlH;Fd~wwLZML`NUHyaskn!DuN3MO%7b}fuFqQXO7rv^W|fadq-#%`B?cOODJa_O>Gmzi}A2^FUBXF0SUgy8G-# zV`JmyEvvc1Uo1~@3+{|hNpmp_MA(;t(vQO2wtuiebrfTT>%YYA|qt}re zhu^N|B4s@$;1>}(NjhWKEyUPK_1!CJbjHHm=0_C4zpMnB2I-h&&-bOL|8$~uy@eQv z&_b)bUP>p;-Q#P&%?qh}m$DVE;{bD`R7R873+{d8PB-;3n*E~yL|%~u7k}%2W8_y< z)Hb!ri`TjrrGvA4UWjl5gIs`vIzk?sRq_rf1;>anP zo9Mrdvh7)mIUny5C}z#KML?PX@UG-qIz5Y}=J7DJfw6 z?PhWThM+9GGZoFyf~2HA{fKGC6BZFM`^!D6d$*q3g-iH+wR*pNn9@IHPS-h^O(zOpdH1rLy zIG6Ub!i0gA60D7pslGx$G;L;y8yj%p^kXnHwrF8rU1} zn|{F65wxqe#&SvoK}LaVeB!W~nFI;zLo)M zvOf^s$bbAGGH?23F+N^fw&ee#KWSK5>wx_a1`zeP5i|Wh^tnTqGw-jft))&hS{66C zR%_eMJdT?)s%YEHYcz(x{u8XPLkGAjI_UK$Tr<1NzO5PB1CP>~j`!Xe&}9*Bvu03p zlTNaJ8R;w;sW~PE3hzvcu2dtd`nTl7LQ1~~A^>+y4Z-4pF|SIT5n^3OC>1N$ zv1S>ZJ{s|h3m8*&p-)}u=+PqZ?hK&mz+Kc2)LEID7S^YjoL-1<&RNQ9k*;r)}tH-1IfL43L6zBJb+N6RBK z-M$?4&I>0u#fgJW+w%-XcCq?&WV@!gnV3Awy8Qim`5S$W*Gsvs^c5FUp^z9>@OWOF zi+lR?Fjj`9p0JP*3pSBefrFabz3K0_x%39sSx*(9ROd1pXvNt#6@({Fqux{^wXI^5V^#W1jJw9%~=i=wBdyL=H z+JGT3bD5hQ;1v?8=v;aVe&J#j$aSGeS$9LIwq=8oaB)OsWN6d!5RmalLuy>dOpBRH z>*9#Ei7WqHCEL=gFYmTudl`3se9)26WMy|L56Mg$0J`*ByQ-`C(qP(tv6%MnfqXI0 z4G0?qbcq(u)!ZB0jfF+I9FZsL>eS$d-VyD;n0Z1BYUxA~y0M|5 z;oZ5t-dF%R6Uizus%6G0wBc&KZdEdRMzljyPg56G9|Gg$jk11^)9@LBiEug*Dz50? zIvDvkyrq*HQE_48^XJdO+iTEPWf1g2=fJF`uPWJTx@%ty)L75kw;`jC*xPoZ-U@b8 zgB=4@#cw}TbRxKYl2}7g`g!HeH&|TgKWNTWa&jc2ePAI5Gd(iYLyC# ziaGl?96}t|*OPIZ&uZ!0qnN(K_1N=(04AFz%S>;f(;1~Qjv&T)d3X+wG^?1WH&}GE zzrA4<$vRp)`}wEl$M6LmEiFFC^G(UWKT)u>F!b(1YIa^y@}wVw9KmrURt5o$47e@P zcx7ct+^(GHajeHE`b;!!fjv>w#dg*TTN=9nC0+ZZ1Zkv1c2R?%ycAD2 zd4&is_p@etLI-5xb_xqSOzQ`hZ5u@78YyNo+7Zzfu9r9SEc)B5?c5OTe17&nRlE|| zAfbM>$i*>t)~?lxBJ?;TFq)cRfkw{}*#FQ%3lMNBxj3cc3d zRa#zNG}w}p7vVEkGS$Cv=CPXBh2H0++=a=eP2yHt^`w5;5!_j0x?qxi_A(OuoUd~} z-t&t0hR39*;RCtjib@Lgi(U3dTjf~PZ##N&GrdE8a9UO?~e!Jzs1*QQ8R)& zcf$Wb!?S|0*Z8oB@In=W*D5%|ZhqP(7j_1iJ?Npf+=U{^0(IUhaDbmzGf@4p=K1sd zt2S)?A!@2_rC+{_bzML}z?V36F4Cb>r#6G9^h73FPBQ!>#e&Bfcpk-n4v{5$UV_XHY6N+aI(3&lbwdIsvM5)7UFC?s80S*cSzd&r+t-Pa15GB zLKFP-XrH3qtz(=uSBLTh90nTsh2Uq^h2gj&abV*+YQzT8*>pXE!2dat7}&^L`Mi4` z>CeHBhGA}MC?r@t`~W|SQC^`r^CcRFjRI=SPyirn=4cc^wC@0Ps2;n=B`Xa7%bCoG zgsG70%bh}>KKULPJ3d~czK+L}U}>5PRlZpifs=yAknxla$ltgvPD4jsMgZ9`pRx7AiKHhe|EYk0o+m zTJ&SiCT<)d^tiM-nV0w7pr6`Nq0nkL41O*0(?62h4v$TNTi!Glm4dReHyncxIxOv? z&qsWQWkL|{qUdfY0aecw=`(vQ%BA9fj_%;YcOU_47#a>bXfeGLpQ~&b3VM6SwD#-c zULi8oojjaEUP+%^5NH2)m&;E0sQ+ei>Fb5u_+7+(#^<-J53h3T;0#<#I|K#g&CJLI z7f05Lt@rigILNA?pimEA!S-Vh+rLd>#Wu8T=u54X0ZHA=Ekx+bwXlsI0A?UZEWua( zuGF6|1)fPMxM)Zoh!F=|tWKU}866uNf$3>y#J}oa&z6hS!Ql%_Wy&zW?U`d2%_7y*mPZb;xH9og~9^77Qs zqEnn&f&Z;V#Et!%K1|xQ{+9Mcc6BgSjdVXS@CISHC)mk`Q~?r^V&FkJg1G3BKs^bV zM7w6qTaaLD3uVSiLKiZj*tm>WDUudL94Fv3*E4TMB@Irs7-|IU&V(^P@2VqV`LHX^ zE1)nR(&Idk?idk}8T9ROU?3md@x5bp^sMFsvX1U-(X{+00WdZfrX0Iz0WVZ^kkU{L2$wBqkPrd>~i_ItT70)RW-2IjOq;6SMoxA>Ny6 z_%%t-&893+q*C~F#xWPzJ9q^J%b(ed-pj$Zhm+9@P8^kTux1WZtQHm)L4&S8${apc zMEd)mb=0Z{Y{RaQkmbf zC%&C72B@-zy2j-)d<~(@(x+N~S%DP0=)9OZSxQR(4CC4+_BXg1}@%x`?TIn+)tS3p7cAowfp4$-ioT|)R`tedO;o@nrBCR-@z@}oOEh% zi5~7Xz(4mCcvj{oGYb@8syTfvw6%u{<3P}LrE=kJKdK5SEhgw&tRzpEYj}8g96D9T zoVIq;?T;)8l;VyF8?Ygz1QFcX7LgJ+Q*i4XBWa`4Rpw!$K!O7pr`^R3PhAF;9 z$4-IgC95~$>aW3_B8tDi9>B&2Z>XW5khr@+J0AD84A&NJ@QNg{W?nJFeavjs#`7ez*4TLPTNa8DP&YsH#YZz zoc*z=x_`oWaejs23pFk>F-^UyMW#vT4Id;M$@@yZgqH@2 z%v#JjyzOd!A2|HymgKGUX?gOO7O(Ds)|vvFlHW4nP&@I;a-I61>xy{5GMfh_otCZl z1Eij0e0wUt`ozhT%Ea?{78`4vXoFU`8}h2z5>k4z)nG=eOm^;zjEDm1(N~041pb7E zQ0Ahq9^T0_wRF2#g4FEP>8qRXB59RBbAhNbkk)kOXDg@yy$W5z1)sHc?%D-2O2^$; z`a?)*mqEzvgIeH^CFg|e`u(nt5cik(nfWuYe=SSKvt``BOOoZ z>Uv?PM_IS!lahM4;PK%R6+MxW57P^n@3Vy-G#G<-;3){q{QO8Zu>iMb=k8RTQv!nz zd(ECbdkiayy^1)dq^x|{#%7ONgp{{0yZFusqu=YHhkz5{Yw3wP8xF#Dg9tYNCd90n z(-8q%9W(js_Z#e%i{=OY`-G91suF$7#Dp(+*Qx6{gKv%wXnO5Xnu#X2*w?6nDzYQA z&RiiFPWhyywieb7Nm#VJNpCT1Y6}Vp;oG)t1+3ZiXcB=d`m3J!GRopzOauntt5L@Jh{S?h2?!}E=4Hck(0CTAh!uajE+Xova7V$$bbc&=pib{@+Oy2t+xwxoHK#{H=6Nb8idS&=lI2TS zo>lGGzdp6$E^-}Fc2_%Lw6PCky8mI)=vaW3`u5BrY|4(Atv11I{2_H+J`25OoDXWv zPlnxApwJM&YkrS<*-69d{|Qvdooe+l(Gs4KMH( zP*oNdQAr}N`3^I|ONZ>-?fgR`D`o!L%}JvHq%*(jQ;4QCINbJ}eYYYrLmgA69C1&4 z>}q*a?vBEo1p!56!@%abqm*k!$!H$Q`gn9%QqQ`Hznch3o^4Yv37yHS*l7EJ?Llbh zx&OphLSMJ@cpP`)gEm-S@oxr4j>8iQ^)%?gvg}#tyB`f`VNbrcTkm)KqZxI^bD7%pLNTC#eN!RGTpe~*=o8S^=c6LF4 zXKqj#@1>`j`2Z%R2$`wN4|2*%I!IdELL8&F(U-C4P>(t18GeeCHG=s%1>))+m+8yJ zV|&%Tm(c*a;^ss3yE(|49Vx_Io^j|vue#;|x(6<%|-BT93fN=_~I#;p?<~Z{f{F)$_Ha1M2h1GDN$lYQv91$ z#sW|?|D`!+U$OCMo`<)S@M6G0;U6AOm)h{FW`K{knh7!K_~Vc?i-x_s40AUD^~!|H zBAo5J@Ch5283m-vE0{AIVVK*jG8*v5s?qWWsAPt2)p86>b3~>jbXNa1Q>xEu!YQ{) zr0hbfH~0Yns2#PPYxt?hB0jfx;t7)fF%Mn4M9ltDm{Sr;He&ds9)(g>m}!x?R*wZW zBOH+>C9`X}y1@@cRZBC;T!;P1cl^qu++0Y>PW?dGm$dQqg zuC~-ugfR{@G=?571T?qa`lBK$jOm;>LAburtvcAenP`DfQ&US2G(Z9U9~(xxb$gUp z?WoVu2p6hD!|U@M@J_OvI(3TEH_)-!wIGespMLeU5ok{d>S%PDzMh`BqjeET@SM=< z{NZ=&)P^#KN(s7oYN__0eDfH1GOvR}xms`Ja~@+LMZmlCPCB=TT)c4$sp{tK+efK~ z0H72xgy=i;#j5Rid@1Se9Tq|6-Vup%_GMC)%Qd%{X8l{c$D)F8h~vMx!Rddy!Iw0H z6Ov+SE1r8m4M57(Y+wMWCl*uwcopcrGa`YZK`2>QN5I=4;9M zvmXZ~eOQHvwwI`9&sZuN!kQOBo|D=EqeTeLplxw7Q#aQsrRmCX2D643WTZaaT?bT@ zWgg&7dADtQZ>4X>>Gv%6Y0sEb!0PCrRM!oUa`|-ncRm;4;dxrSXeJX`Jz$sN-bG?S zN8$ZoSUb*xzyDb^AJL^ywy;RUfSpxsi;9=%T8Xl}^!bz_>%aJds#AX$Yf3^BwfMsa zLgDp-GsmVC1_)UpqgLhRS*^M>C*23&IN z($v%2319E`Z(-o}33*^6Y&|v-tzZX0g8&Ri#m0Wrb}OihCOsYPQ@{I-^PNU`p|3>E5{(kDCo0cf zM3ahxU1rIoC4`b$Dl#cp%dn0sd9F(ss9gS#5EM-3rsnd%0g%7Rd!xUZ7A^_`IShZ* zQl}wJ4z^sH3Ipcq1hGT%0Ds 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 F{~wpcVtoJr diff --git a/extra/compiler/cfg/gvn/4.png b/extra/compiler/cfg/gvn/4.png deleted file mode 100644 index 8c9683c140bc3f57cb997dd6fa43a5405c5e169e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18391 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 SKjCxH5Cs`k=^`nUfd2=SwF6%O diff --git a/extra/compiler/cfg/gvn/gvn.factor b/extra/compiler/cfg/gvn/gvn.factor index aca40f51b1..5f399fa65c 100644 --- a/extra/compiler/cfg/gvn/gvn.factor +++ b/extra/compiler/cfg/gvn/gvn.factor @@ -86,64 +86,3 @@ M: array process-instruction dup [ init-value-graph [ process-instruction ] map flatten ] simple-optimization cfg-changed predecessors-changed ; - -USING: io math math.private prettyprint tools.annotations -compiler.cfg.debugger -compiler.cfg.graphviz -compiler.cfg.tco -compiler.cfg.useless-conditionals -compiler.cfg.branch-splitting -compiler.cfg.block-joining -compiler.cfg.height -compiler.cfg.ssa.construction -compiler.cfg.alias-analysis -compiler.cfg.copy-prop -compiler.cfg.dce -compiler.cfg.finalization ; - -SYMBOL: gvn-test - -[ 0 100 [ 1 fixnum+fast ] times ] -test-builder first [ - optimize-tail-calls - delete-useless-conditionals - split-branches - join-blocks - normalize-height - construct-ssa - alias-analysis -] with-cfg gvn-test set-global - -: watch-gvn ( -- ) - \ value-numbering-step - [ - '[ - _ call - "Basic block #" write basic-block get number>> . - "vregs>gvns: " write vregs>gvns get . - "vregs>vns: " write vregs>vns get . - "exprs>vns: " write exprs>vns get . - "vns>insns: " write vns>insns get . - "\n---\n" print - ] - ] annotate ; - -: reset-gvn ( -- ) - \ value-numbering-step reset ; - -: test-gvn ( -- ) - watch-gvn - gvn-test get-global [ - dup "Before GVN" "1" (cfgviz) - value-numbering - dup "After GVN" "2" (cfgviz) - copy-propagation - dup "After CP" "3" (cfgviz) - eliminate-dead-code - dup "After DCE" "4" (cfgviz) - finalize-cfg - dup "Final CFG" "5" (cfgviz) - drop - ] with-cfg - reset-gvn ; - diff --git a/extra/compiler/cfg/gvn/testing/authors.txt b/extra/compiler/cfg/gvn/testing/authors.txt new file mode 100644 index 0000000000..424d9aa409 --- /dev/null +++ b/extra/compiler/cfg/gvn/testing/authors.txt @@ -0,0 +1 @@ +Alex Vondrak diff --git a/extra/compiler/cfg/gvn/testing/testing.factor b/extra/compiler/cfg/gvn/testing/testing.factor new file mode 100644 index 0000000000..064b3611cf --- /dev/null +++ b/extra/compiler/cfg/gvn/testing/testing.factor @@ -0,0 +1,54 @@ +! Copyright (C) 2011 Alex Vondrak. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors compiler.cfg compiler.cfg.alias-analysis +compiler.cfg.block-joining compiler.cfg.branch-splitting +compiler.cfg.copy-prop compiler.cfg.dce compiler.cfg.debugger +compiler.cfg.finalization compiler.cfg.graphviz +compiler.cfg.gvn compiler.cfg.gvn.graph compiler.cfg.height +compiler.cfg.ssa.construction compiler.cfg.tco +compiler.cfg.useless-conditionals fry io kernel math +math.private namespaces prettyprint sequences tools.annotations +; +IN: compiler.cfg.gvn.testing + +SYMBOL: gvn-test + +[ 0 100 [ 1 fixnum+fast ] times ] +test-builder first [ + optimize-tail-calls + delete-useless-conditionals + split-branches + join-blocks + normalize-height + construct-ssa + alias-analysis +] with-cfg gvn-test set-global + +: watch-gvn ( -- ) + \ value-numbering-step + [ + '[ + _ call + "Basic block #" write basic-block get number>> . + "vregs>gvns: " write vregs>gvns get . + "vregs>vns: " write vregs>vns get . + "exprs>vns: " write exprs>vns get . + "vns>insns: " write vns>insns get . + "\n---\n" print + ] + ] annotate ; + +: reset-gvn ( -- ) + \ value-numbering-step reset ; + +: test-gvn ( -- ) + watch-gvn + gvn-test get-global [ + { + value-numbering + copy-propagation + eliminate-dead-code + finalize-cfg + } [ watch-pass ] each-index drop + ] with-cfg + reset-gvn ;