From 9ba1c81d18482f05dee7c36f83a00da9db7e0a2f Mon Sep 17 00:00:00 2001 From: Radovan Kofira Date: Sat, 9 Jan 2021 00:44:49 +0100 Subject: [PATCH] a --- sk4/program.c | 170 ++++++++++++++++++++++++++++++++++++++++++------ sk4/program.exe | Bin 44856 -> 47759 bytes 2 files changed, 151 insertions(+), 19 deletions(-) diff --git a/sk4/program.c b/sk4/program.c index 7a43ff2..228fc78 100644 --- a/sk4/program.c +++ b/sk4/program.c @@ -1,26 +1,133 @@ #include #include #include - -unsigned char tape[30000] = {0}; -unsigned char* ptr = tape; +#include typedef enum { INK, DEK, BREK, GLEK, -BF_NEXT, BF_PREV, -BF_LOOP_START, BF_LOOP_END, -} brainfuck_instruction_t; +PUK, KUK, +LP, RP, +TUK, FUK +}inst; -void interpret(char* input) { +char dtape[30000] = {0};//hlava dh +inst ptape[30000] = {0};//hlava ph +size_t loops[2][15000] = {{0},{0}}; +size_t loopscount=0; +char* dhead = dtape; +inst* phead = ptape; + +void run_tukafuk(const char* code) {// char current_char; + bool running = false; size_t i; - size_t loop; - for (i = 0; input[i] != 0; i++) { - current_char = input[i]; - if (current_char == 'INK') {// > + //bolo pozadovane zistit, kdd su skoky a teda som ich ulozil + //(tie adresy skokov) + for (i = 0; code[i] != 0; i++) { + current_char = code[i]; + size_t j; + size_t loop; + switch(current_char){ + case 'T': + if(code[i+1]=='U') + if(code[i+2]=='K'){ + *phead = TUK; + phead++; + i+=2; + } + break; + case 'I': + if(code[i+1]=='N') + if(code[i+2]=='K'){ + *phead = INK; + phead++; + i+=2; + } + break; + case 'D': + if(code[i+1]=='E') + if(code[i+2]=='K'){ + *phead = DEK; + phead++; + i+=2; + } + break; + case 'B': + if(code[i+1]=='R') + if(code[i+2]=='E') + if(code[i+3] =='K'){ + *phead = BREK; + phead++; + i+=3; + } + break; + case 'G': + if(code[i+1]=='L') + if(code[i+2]=='E') + if(code[i+3] =='K'){ + *phead = GLEK; + phead++; + i+=3; + } + break; + case 'P': + if(code[i+1]=='U') + if(code[i+2]=='K'){ + *phead = PUK; + phead++; + i+=2; + } + break; + case 'K': + if(code[i+1]=='U') + if(code[i+2]=='K'){ + *phead = KUK; + phead++; + i+=2; + } + break; + case 'F': + if(code[i+1]=='U') + if(code[i+2]=='K'){ + *phead = FUK; + phead++; + i+=2; + } + break; + case ']': + for(size_t k=0;k 0){//aby J nepreslo von. + current_char = code[++j];// + if (current_char==0){ + break; + } + if (current_char == ']'){ + loop--; + } else if (current_char == '['){ + loop++; + } + } + if(loop==0){ + *phead = LP; + phead++; + loops[0][loopscount] = i; + loops[1][loopscount++] = j; + } + break; + } + /*if (current_char == 'INK') {//> ++ptr; - } else if (current_char == 'DEK') {// < + } else if (current_char == 'DEK') {//< --ptr; } else if (current_char == 'BREK') {// + ++*ptr; @@ -32,8 +139,8 @@ void interpret(char* input) { *ptr = getchar(); } else if (current_char == '[') {//start loop continue; - } else if (current_char == ']' && *ptr) {//stop loop - loop = 1; + } else if (current_char == ']' && *ptr) {stop loop + loop = 1; while (loop > 0) { current_char = input[--i]; if (current_char == '[') { @@ -41,13 +148,38 @@ void interpret(char* input) { } else if (current_char == ']') { loop++; } - } - } + */ } } - - int main() { - interpret("INK DEK BREK GLEK PUK KUK []");// (",[.[-],]") + run_tukafuk("TUK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK KUK DEK DEK KUK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK KUK KUK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK KUK FUK ");// (",[.[-],]") + printf("Programova Paska: \n"); + for(inst *ptr=ptape;ptr@a9!<&)-DXjs-7%b<4(fFm_8|td#``p@L{&6BuKUfD96Ai2{!R zSwYO~EsKmvkYFNnFjQ$};SXb~KOU;Bl~}Zn|A%I(R%(=3TyenP9b5E0VTNsIA&=i1RgU>ZA>Z7&9Ub&RvQ958x#hb%C8E8hZiZ*9Pn-r ztjsAZH*6qi(O?8yTAdinr-@beZf*d4gtep9n>Imd}A?P^2=x9#X0zZR5{tj*1J%@flLu!28BA z=Da18ym!H3k|>uKBohVYX5)B`lq`NUmj6teB|bNne;sTqO5ptbG1vvUSdRNipzLp9W zZ*mut>Y!6~7Fp{sye(&yvm;1zA5`Sl$i8xRDq&@6%t}}hu=YZa$5VA`2=&<6IjzcK z8bzH{T92p;LzKvvRLW222E?s}g|m5Dlgrr|50ujBiK(r#@K1Gv9N^6TBC@2otFjMa zp5zvwK42r{M#wJzv$*2(tcA|b2smTeX68<#20EqkMtg|@q01UCc-V>rQgHpCNh$E+ z!4>BT9Bxw3>th%@%n-J-Gr0U~dn8o`BZu&Jv4|fGG6`1R9At7p1I_f2VKeiz)RB82 zp_H0RI6)l0Y;w5}qO;R*KK;+^Li$}wQ+tC3sb3sinSNJj(Z9iVq+i#cOTX@P&vM=x zsNY^qwNkkS;dol1Q)Lw@(}QKrX^ZvcKcs4)4y)*gAJmu623!|R$(EOlTy!={hY50~ z-xb@F6uWNT=IhJ#K2+uG@1oxs1>D=&haz*xQFQZ`t}lNVc5=ijZ$A!rqXF;jZMV-X z(9s3@@~3=gz!{pz^Pvt+_wGLwXal8QZD`t4e0G60GWF#HeWC9;DR=cu+L&eaj? z>gea{h;ViEb#;WeI)Ypsl8aiwl2ul&gO+YtqrQCVU604*`ehTX^R_N5b@u|ak8R;p zHZ~+3YEgc870SCu0JoUpv;Ssh?LVWwL#V{*(nr62ABj@=0qA*JVUSA(1u$r@L=Awo z1S|v4@ie6Ms~iyLlUN9G167(y%7L_*q;VuIgybN}L{d7WGLm9RnhdFeq+pVUL)uN! z?ctCHLaHIDlcc_oo+s%lB$pFGOLf5(Y%Ehy)IXbs695_^h|_%<8gHV&l%4Mfv^!^h zt)*i?ED3jS{yVn!yqil`*p@fB+>i2W!AWA6mFxOE6S)@~yE9GDm+yjkT{8}aeSHf0 zl$tR^S`Xv&4i8BX_VUpouZYd7_~nrKWM>LJdf&8M>~K%F47ES#{Dsh7Oy@_jhgxiC z3;mv;kq%mTYTwkc;B4s)?8nMe7l)84X~Rx-c80BXVFM?m$|_ZwrHYt1E3fXGJgjv# zoZs=-hnIh1kE8?1<%xbt20Mh3o9K1@AmpX%CcoNuz-YqDe_PVk@pIpSO~rY43x8ZcC|1_4@`BFh=%p)~>J0FGL~nTDN)lZH z&}lPTH6VV{ti6|*Jxb1pe-xU@;> ztxM5$rz&2!HDY{{9Lzp6JGK#F!@{p$wUJfCpfUbR#HfYj7GXIqXsIM1OK;N4*&N?Q zX{QdLz9d5~(0%L|N^4#NN~`-Zw1PG|j;?me9X3TK4J13L>&uHVOFK@YO<$B3c}`@E z1{WZ{IdZV>GG>wc4u3f^PWUVTY2*m8em=J|ns^lHG;dD=gH3?kq1tt3Hkw|}TR~e}<)vY$jPU}Y`aL!9cBXb6|4Y;; z5o~b3dBh&;moV`NY$`5~Q`31n*#2O}B9nxe7Ul7C z{Wb)X^JnhB&6MaVi6j)aIGYXVM3W0m!Pt(l>6!-4Z)EzIdn5*6>n% zwIm$kV-jx*KWG?{G*b{`^t`~hOL&3bHl7y#$m>nnk)?TNX75|k<^JqzY$>|ZJf4{R zi3oNt*(vVL0prHlh?A=#&Ur^;H@Q!t{7hOX zMi9bL2+lOoe%$>MN*7ox#-ih(+a(Jk2{mpfpFeV#aE(7P^4ZV~(!UjDzvTWkmqslR ziun&lH3=K}z|kkgAT9sZ=mg;l{^jT)m}ikGR-uruOfkh@!;OHJc%xlU*VOHQ@_1+< zuyWjE_@R^ueQSIQCH>vk`DZB$h5dZ;m?wq7{3m0^YckPw_n41Fy~vwVlQeOMAf`@1 zqLapskfn#l_78^=8~&T}uS%92CVl(Z$-=Ms@v+5@9rFF!lU%0oh(mPW_9TZXJXqn9 z!kNPFD*Cq+epBIH3hz|7Tj6aAZ&mmeFLxw=r~sE0eo5gM6@FIXZz{ZA;l~tyMBxV% zzE9yUg>O;#CWYG-ULSU!-uW!ZQ^U-|*vA?S&b-?X4wW}7jen7p{E6Qkn|rDjGq2byKypq`l->w*sHHbh!mg_=ng z$AlO&`(1xC`y$%Q_r{vp3ktSh!7_l6PItPk==iYjE4n_pJ0Gst{t7Oz4?A} zbQk^&WrshKe?#MF+Yv~`|2cpMky=Z-m%5jI*tc=Vw}Cw|a`wM<*wgkO$PRzR|3LBo zNe|=iYnXaC2gIz!g^w2J6cldEF<5gpJeD)nAkSJx)0UAoo3()68JYC9k_p)|**Mc` zU<*L=7iVS~SZ17=Jpx(-+6XEG)qqZd&VufD;8jb&Kr=gZpPI6}VX;ct$9wAjGcx&d z42s7M0rbx}_zrCPGhdIo^TvdR;>o*pJas~C&Gf`U2R)t_={__&+#qI!gi9HrY#2oP zqL^F9r%xZb_>jjl0}?dMPlZeJC&(=jt-xcvxFG`E1zOevI|6JCFdgaPAwBv*l6#1s zn?4dZkT2zT?2O5iq1CEE)y(kVa&cB)t>%j6-7rbM)J+3i_NvDdPI3C{LjNTae`l)IZrG*!Bb`>h^J2Q`LkAw z(@yd?W~~%2{+JJ#Jx+|S=ksT$5ZgL?x+pd9b6_`5@q1v4PV?!OIb!~4zRfa1be-lu z0Xub?U$smZqtEe#^c1n}9G{>5i0D4YUrV2(ZTyAD)6S>NnaoGc2^RC4_@p`Wbyu2j zq6qx`jQ+fC&i!K9yZq{$B(eToE@q4nFTcxEGEzk8JYSJ9K#V)jpUjvq&OOiH%gEB! zpZ9p4;18$A@TqgNw2hFi@?U2R;6I-Gu(su*$D`$m6Ykt^t;Ov{d6v8)G5X|upc_^M ztPI$(ZdmZE5_8o_)rm0l|xCFJ*wd?Jx8GA!2DzUFxlT*xoN~H~qKQ(`)gC@myKo6!bn4g|Geq2g!em*5T z8a{~%Hf&r~Z1ZG!mPqx6P`S$6pwnWz ztqr3JeQlWcFIO5N2%y}ER>Gf%wESU5|LRmpHvn*bU+4~iG-5QQuD)bqzy;Z6vlZm5 zUC*rHJ|xASx5p-6W6P2>@o;p1*`T;nq!i^d^C{Iw z@}jaN?KCCqIR18NQ0Qfhh&Ru#VSChlKp{lSxowTEDNm}Y3E^3eC~mINQg*Xrl#IpE z=j?2prryYWO`v{jdBTWqP??(StE8|)@v|d!h!63pyJGnH@+7fT%fBp7&<%o)Ylu92 zE?Jeb6ovQ(QkJxHyT>i=)$%8|B{=B2eD)}xUutOvAt~JvE0B5>vJwcxpI8EEEg>rv zvJHsKkN6_4A3;_W*u$8w_woMQBXuu8Ga{AZ4vk3lRX6Z=o{!O;L{*DiC4%kWo}hah zh;^)-V6bc3X9*wi8Cpe2_F6p6vBC8 zg;BVVr&kOW2J(UmqquAwzgpc>`6K>!sC~`{?KHx0Cf+xA-p-+7S_t30GpXMWbb)R- z8kVw_{^)9&w3R=-+bG!i7dwr7_wLB`6C)6(TBQpkp+Y8x_0nnUr4!ss=i^>F5>Mnt zZs1YEc|IPcl*%X`4_W{+S4IiP_`*t~@G^e_@4fs*ym#`q@h;_`;ce$ZyNtp*J`(S2 z{?IOCzpS1uOv>ahpw`0A>@p^&^{P$jg_w9um2vWbp7=!isHn=pB-}51AUeLh%9wl` zi%O+A@mMe0HvZEpBfcDcg7;h8Q)TS;T2HG<`?(PVvy<2DHu4F(BV#6R>E$L@!*B0Q z96D)1PveR9Ub+?yKfgOk7{c4(HJ10?W8|CmMDbaBqQq+=&)SnDwD8S)jKW#|65hx8 zJ9zKspX0rY_i-78EqpZI>-fWXuizzkTltS%MlMxH@%LR(d{}iPUtZl0<nYTVSWfdy%3_;jeLcITEfFhoWU@hbMTh&S8rSZLI zH+MNCKDWl8o9ESAUz4C;f?^x~-vDi4ZA!HGczul|=F1bF*HlIEH$WfOL^&=(RXs9s zz2>Nd#jVzf?xl0rKk^iF9=y_n4=eH~7TgYj%vA<}&XiSoo7UP{yhDzXjv0D(LCNAr zY|548__*$S(?RIaKSfXrUaNB`*85$PpAUc>@%tg{Y`5T`%N|*j~_o1KGhp zMQB0j_+Ec+;e`zZQs(a(&8rPSkErI=Na*ZSSRPg%XS>5NC!1kb1z^DN2FH?1ZR>c^44hcJ6h(AIKH#(q9GaDxKd3VKu@tLyeNBHWYnlFLsR$_Tp8A`T4t419uZTT`Jcatd3nO z*Rep$kGm@YBU+<74*e`%OU2O@9rAYUVTc#W=30T3rmS7M0d2AgwB71CU{` z4~*tEAn@01?4AQ6sbW1yI;sSp2C_`OQ@#txt!nHtkbG5$SAkglI<|tmf>lMES+h## z26PM-Pc0`IT(B zYw~h(y_+3%$J?cQDl?kkxg|v`R~2FePP=H4ckNGbB%>JUk!@8@etzL9*5+5Y*;W@6 z=H|%*7-(bytmyIev0%g6C-c}{zZKPGK&Q<=SqNDS|0g%8kU@P+G$~T3)I&Cxu(^Rhi3bSRZe%$4Q4j3J} zP~d(|+lIA|uFuJ5d;OaDMJs3SvLB(a46st4_9;M)`~8s4bRhHuQt&vCv#LB*H~@vI zpuMtLL^rb&K-62(+p>x8jF#^xcoZQqgWsYa9`3HGXgQIbkcy}_j$LKUS{q4{+U+(x&UX`v~#`3 z5xEX5pr>J0q;h?TfBKTqaRxZxZaw}_AoK)s&<4c!LrUo}5K;@|;2y-AstyO^gGQ&S z#aJMzvW_ovMh75z0_jZy(uzx8Aan~5^&y!Bt=|#t>iBC+-dUB-Z=e&Q8m4w2nW|yB1w_4=`iJ8>nyXS8gYPqo z{Ebm&<^sw0BR1vx;we@0E1+}BuR~UaK-4*_2C@W64P^Q#5C{G5G0k}IxY8#i+7$v* z@>f9AtL76RXH|{01F@?Dx&dUGN+%K@mOk_&gCV8lt+B14{Tksjk4@;~12!}iAN!RQ>J{Zrt$gYUQ;2+?ttu>8Z*N$3;)?J; DKj&PQ delta 9453 zcmcIq4Ompwy54)w52O4e1BeO(GyZ@`sDNZdqXD8IAgOs11r@m31tlEJyyTE0=Zc^X zd}RLMNsQEcGBYv7C+nb4npt6)mYJD9-SJ>2Ofx&0bKf_ z{l4|BZ~g4O2RHm8v|kj=Yx2&&dAERD$#E8*<1TR?yeBVcxHyjEav{q&t~&tQ52A;# z3%eIMP7VbVn}*^zGim@8nuhbk6}=pHMnP}O#w+B0JQvasF+dS>ljANlL<}NxgQ|b) zBd}ne;%F@&mN=L>&_m#ui-))sJr~yzTTwL6Fb@euZLfIi;gkF4k7iV$`a|S`}@S?GgsW(i8HeL0^yJIMZFe z^5pSUog4)2xLn5uX6YD3jq;(w=23K5K2ex4ihh@m_0fP00@^uCp)aK<62iWXfrFFQ z>t8;wTHSoGsj(c5p$0{uP(F=zDWZ+TSywmY783^D;-%MfwQ`;1pbvPbG4PhcYkIDx zqjHMnGkC01`!Rx_Whe4#y4q`bfUH~IV=Y{5s!r9ym7^IUx5(KI94&y4+D^+_P-+M3 zETQPEZpiMNcGhd~HixTw(vLCqpxAn2_H|FjF)T)kv8_DZZ zbuny^V()$}DnyBd$jj+XWoU>$EKFU=oo3UG!9ZC$t?H(mdiqW|#0bq*T+27lJ5LJr~YL?ONEq2u+`<)Jfzfo}TQU_EE;Zei|$ zc(T-twRibZr`e1US%7JGS&Dj!>Sn0w((dxzz6ZHAX}?y#`0H##Ca!ZT(_7?l33zpf zVf^v5`z$#)gi0UF;omVU#kXhAEtu13w&X-( z3DGd`FhQlKbnln^*I-UeNxW}OJv_CvV?Mv~F6)P!)uml}jVq^YpD@0P%6wiIigGE? zH=EfN`R*Ec0U?-P>>h5&G#%rwSFowCu(Dp;bbgb0SP(}oZqt=qH4Y|__MWSwgzsqfjxZXZ6u(4 zAQBMw8-)dgj$(Mt=as!Z?>W|*eMz@0v`?x>=emO|O~(}gs5oH0Un?4fx>TLc(Eqps z6*?E7_24FOqXM}J#19xCKm`q`h*}MvWdKfux*=7##r{S-qe{$mGPX|EYB>hgerRc@ zw+9Rfvau`eps6cx_T0{vYWTi7K=XK4B(mO#LF>`02Jtg)t&D|G`=s3RB8*yC54Dbd z9F!+j78Okh)QyBEt}b7v!6D*n>Ixa%F}qV7ty$z+LPRfQ4jdb43#J;~j_yE=uyFF% zE#qp{=!~uf#yrK`A}r%^1-oO*ww+x}U4uJW+SvfmUOCBj!;aEpVsCZ>mR8GC=mmZB z>?$$a23(|$9K`HE_pPbGBJJ6WJ{?i+qZYMVhO>(ftHYIsX~^&ux~LA}&(p8!Xu+x> zZO|NkH@y^;TDm~PJp19)v8~?Pe4UEzX!bCJyLx8Z#TFimwAnrq*JLxmHX!}edTtcE znC^P4yky%RnmV-|@bul#2ygG|pQh2lF#=RU@D!%r2o6g~g-z{o&&M;MeQU0PSEtUx z{k!aPJ%b&dY-yVQp)zFFPS?p1)9q>WAb6>YIe+OM+`JI-XauWNbep;~7(}NTUBTFZ zu-OR>la6WhMTlNsgmC=~3g5lcbzYb=HUUVQ0xcZ4R;zkDHfql~$5LiEgTJ}b(}}!? z=;^6}QL_6t^=-z1Un}`S`ZtYn6Y}+<6gb%XuW?W@Z0&A7@;+dhuD$MeVN zcPk1+n-0K+NEJCqui$3H`_#C7s>Y4+&7!cTJY923TWM$u!2VVzAI zlgmF%JI3e+pTuLGZSf9+FMGoL*AG@Jn+WV2OE6s?6YsskL8uJ2oF(npr}$O${MZ$| z2mL&DtZWa4J|g~W;a8qy36V1HXH*j&MWW{?MB8c`5`uj|;-XI1{8%~bHO4=XFphtR zZX{F~t1!D}vvuflQQsByZBh4%`i7`2qP{BXOQOCY>aRq7M%3M+J|*fCqVBM3IevwOQ2lqFycPa#5FxdZDO`L|rKAd{NJ`X`^-MbP>oEb(W|zM4c*X zy{MB#oh0gbQOAio#-<$)My9X7@rBjuco0Fe{ZoyH2a3YBnJ6NuC`5y2A6rs*Y+5-q zZU=)g+x(xo$~TTrHBQdX)TE|mY9{94GARp}+!>jgOvvmx%-7;zJvU!16^$EqHpt%Q z(0#doP&Yp0oEb1@-=dSx+&cOLNB`8%AKS!9N9Jze7?HcK4sH89WxcX7Jz~gPR_j)F zB0uS)5oY%Hkx%mEMxdGmDSDey(nrqNZ?!&w8W{Tj^pV@XU#d{e1+KQ^8um?NhUE9b zT7fMD#y&b&VLbMBRJ5PoPanzer@z^*L6gQMfb}Ovnc$kh-tRzFC z+pN|I_x3rgnI5EtQb&$T7~DoXC(RU!4$^~3DMI`qO34Tk@(j7Y_%LssixI+`9% z%^518{t)fV2osJRq7O6D1zkJ&OpX>*?KFP!cp;{pmQ9Wos@iEMYTfO0dGZt?^)SUw z2@?#5DSJwZaQ`qJoHAcn^Dc#EjuFnhOWB#ROs&jJ5xU-|_n{7S&;zKzqm+`BF2o$A zKV?M=xkqU~l;J2{%t{f?d_-YWV};g}ls)wsVfRV;%hYs5^`}=9K~d-gqY7L zF*{q?{25j`PoL%lQ%m+^Lh5O{m>nsUpC%zET4*{=u{p6q*J+xY6DoXlnpWiCRq%5< znKM&S{<+oqJWZRbrt!Hm71gL+q)&1}>8;#pis~~~s{;G#-uT>JmQ#Dt{lanVbG6wG zO9r+a*lsuM1hCaN@nLCH{mgM1ND?F+k_Rb*7$B=4O^{YdJLDwf2gn16&n@%>84t;V zu#yj5BHmX(uYxo}c0l$)jzLaA&O$Cj{(g%ya(8ee+{ULcBnYB`#6aR9DUb|E9wZ;K z5K;lDf~=>B+ciHP+7FuJxu(_av1-^_VNHmUy) zl9`s5ot8CrOl(nUDa%|Sd@?Cpx@!1%LPb@5Dxt$tr2lnZpR_E}-0oTjV|RqR6dGMZPf zrj={^lX6=Ctz4t>(g0<@)5!R^N-8vmc&4(74H(i8p;lhOZL2^x)=pIZhT9G~ZLf)~kt)t>IZuylWd>UKY*N6Y&) zZiu91^*;1Wtq;rGIW%ef#mt5LXsh+@0_`g|ghk&&W3R^1$inW2H<{iD2jYk**PlMz z5GiN``rC#uE!EY#O3&r${yG>tlEJT+~BW#8O-jHEN;(kn*ocv zjdGgQ$~|Z@$FL>=YD+_y@;xAaqihJ&<%Ws;IU3ri<*(3WTyIiY<8YyO6m4vbTQ3iw%P$8|$i@ItLXtNI@H;7I zqn2-`rMNcIE4Z$qcX6$v?{KXk*(+LpAq{^;J2W4&#a?`5TRWO5YYqRht6% z%d}yWmOn*po3z3)8EH00Jes%zyFn6gLj6MlH1_2ru9DF|nj(b63i95prT$3ZUL-e* zjv~3^>Dp$k5F?}hTOtJ?8O3giB-NGxn!hE0|A8vEXz{VQ8P|4t57$=u9@i#PY}Mkk zE(%uzO~ti{p4+Mw@&r1ybx^21xrymmOww56$pmg3?b;d{m=N<&;3_)2RXe~9FIiMt zjQNVApSFe%(P3B@a6Tbjwljg_#saCvFZkFN^w-89%Bk~E7+C$EFF4xQtW###Z0LM* zm~tj=n;xMD&5?qahi%C%+!iqGEKq6GO%DaSPe#ozN75D~vis!#;|a$MA~KF!00*q# zyU6y1gqIv3$)Xc>jxQ))zR19Jv8}|@ z?I{pR-vK%zA^pTWpfD$PM-PA`ORT&xgk~G!;0y**D)Ey5ZJPOS3(oW*~YA(guVTJTXPiF(3;ioO3` zFX4_zy7$4^SSlI)a3IoDKL(_O{`=K%V+QV6aZP6-L;T#47aro&*$|DJ)$2gmm|T92 zidL9oafn|$gj@@H2>Jy`70uZmZd4$FYg~gZH&nortrOQ&4+JMhGT0~}^-e2h@i-9n zgC>+1NEU9dN|H85Y;3sOgFAXn+= zj&P%v?GqIHfC@^UuUKR#=2lBQCV|uC?3J<8ft-;bGl7gii)&sM0YU!UW??yyJrd8W zjEp47-XR+gko2(} z$aJTl0>hHhCC?XEBs)2Hsb5}7U$<(9)_`fYF&!}w5QCG+;@d_MudAPKmF$u?!D4?| zcCGirKnf+u2S8YHEx|8=ESGS;r&nKB2kIpK-2&@APbXdvGpg|9b%j^3U|wnIk_BA7 zlU`6zQnsY1*tS4j2?>T3E8?;&C|kN{MKRavv|?@1;Cv-XY!Z-EXVMsFvXME0U)P4s z2a+!_TLHxJLdQbD;Rs}pWR!mfasn;vB(`(*1CgG~$AQF1Jb&5WA5$%f`aAO2r8Qm$ zHP=ZkSi0!n7tbr@raPJVVzcF`%89VBWS)H=w*El2JN+%~QKwy$S6v(IHANJSDy zHT2DHt?|#m0lSUwAP`nuBR&qKS7Lh>h$Be5|L=h`ONQ6OtnmK~n0GtpE)Z5+=Y+S> zo9lBJg#+0n>1-4bR$Kv129hM<H-!?*|ee>;4*h1W25O za~{YkCt^V@ws>JdNyWS}D%%@EO>cbMZ_#2yaYcDWv7znRJ@=GkXdBbEzwLya*0e{o Jz0-c4|6hau5D5SP