From 6fe7c34211196285871314c949ff44951342dfb9 Mon Sep 17 00:00:00 2001 From: asus Date: Mon, 13 Feb 2023 20:53:21 +0100 Subject: [PATCH] wip similar eric --- a.out | Bin 16744 -> 89360 bytes mini_serv.c | 26 +++++++++++++++----------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/a.out b/a.out index 567c8b69a130878f1a1cef37660ce2fc4f13bb71..26843327a6b7e3f14193567c37d67b0160132f48 100755 GIT binary patch literal 89360 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ËJkeNfZp5ml$UZ`6{dNAr$}(#BH!k{b+uUg4k@e+!8;d))Dqm?V zHFtX9L$C91MB`nr=(#PAHp%`s|LVepci{TqH!oZO9`ZhfD-rUC{`$g&MO@!`{=x<7 z1V4@IH<|x87cN{1JU9M7E?h|BYGvwO_gB5H)0cL=;*#FJM@;^;sNauvZo<`@>?Jww zy$1iN)BEOMYCGPZOQ-f+{l>k!PW3(Dz2TbI-8}f38(5F+{s8`c1^tr;nTbEbCk{{05Z{uo!!mUVv_z18wBBKsZq#-EFo ze?-dJ_Otlcg>U}^8??`}?n{3!jlfGI@X`ppGy*S;z)K_W(g?gX0xylgOC#`IkASt` zvi4eFA>@xVJ^!Fm(LcisK+7P1@29~f{$8$^&@RkmhxT6AnDYGXdPAOoe<1(m?{B|z zVU0IW7-O%{#)|Yl{>;VuiYXVS4EZ9c!`0eGkyqfKYwN|ddCa@h*dr;o2$NIuq2z1$ zM-?sqUZxi>X*y{0PnsLs?p>JO--p*p7W7V%PMY>0SF`2vB-lVn zf5&_{M0%38-(i~nzFn+cc58!4Gv9ZbYsFmOYOW{E^#OBz#9TjSu1}cjlji!gxjtjA z-!xax7?WLUuD)wr*4n9yr2FpF!s%@Gb$Q=`t&NYK6cGnWOXm(aQ`#c$$e%X_rLiH-Y2L8K;u(r{BquRf0%`T z@G`d3oyGmOm3@!ne$O|45=Nm3^bULO%rD`|J(oO!d~bW^P9*kT_7U9odEI|IjI7k< zZ2RR8Y`<;CYgzwSe-uC2y}b9loor$h|1RZc@AbOR0hVl^N>F-%LAdmnc}aZxb9nzx z%wywSf92;<@0x%AYq;OWZe4oy_J57Ky`QRq_3ym^h|%3UJAq#JKL0a#w)aP`Lx+0L zW7M|yzU+N?;VZr(P^Qnj_7~A0d$|K(qVHN6zdc`lC7SI0)E}eC?f;1F-TTW4Ht%hJ z{vZ;c-uYD|y1mPP8JC?Lq4T(ruJ87`FT*_Sc=;7?Lw5HxCSb=kSG<$=AHmCazUuPt zpz5CT2hpjW*Cnx(wr~Cx@~_{!6Zfd~8+(v?`{itK&$oA=)t!I)PS)zW3Hg6-dhto9 z@OM7HmydUEFQKiS|8T`sNNn5wPCovveSDda@_WpcHh&C7?x$SOO8wf~{~p$o&)ij5LD@-ZcIP(R zfZVa;=m38Ej{XPC&zY{vIKMZs7H_cZnEmdq%eXjhXEtxVU8~qKyYxHX5;iFvlUMpb zgrVMjvU~SQTj=#&{$4Dc`@7^j9<|wB;dgj_m)(qU__40NoS?^9K|cSAH~p^X9b&6r zH`q;tXGnK_-Vg5O!a=AP?6iv`3#LmqgS z;B7mCVA)&lCM-%k`UoHU;~)2sA#3l^$C2S(`9?$7T+hkH-;QPP1Lo^KgbF*}=6&Ew z9pVqOzPFR##ZQsFccDi&V_-A(e!{!q$$y6#x^w%TX3~C68^)x46}2wmVBC2Xw_Eq4 zbC=L{;m%jHL*0*7c5|@rJiym=KU&<)>AQ1GQ~BNL1*E1mHF@O^n#RwV#?kG}PA$Ze zzhW7S^dOT9`?Lag8vnXJavQMUZjSiD8+pr4&|~7@t@?C*HD?Yo_)#y}tT_9Nq3-1Hsndc(`5#l-lo*S@^4@AWV5 z!UH?dZeOh3on2jpeJt7)K7l?&Ph65{ePTCq;(gn*ud8Rzu3ggo>-*T)-ck9gORvY} zR&?hwxk&&q-y{Y5&~ej`>w63P*!3&S`{kprPp}7awmI z_w3u%bKNVhW5%T~yAO!&Wf&5)akUwwK49#9U8YC7*r98-p^JCy+J({8QD){VWVEp2 zu9X{f@0B-UqFyDRlZfhFhw=CPaC~G$f3)l6I;7WY$JpKtVHFudxBIW|T!eN{VqqtM z_5KdKtE;Q)pZ4tLgwc+0p{JS6jNS=Hi|Nc+>`&0befr_`_-z5HZcU{-L z_wWtKRo9{;Y~(yvWH*0$-iqY5AHq-1{jB^W+*D_H_d)z5nAh`T_}Tu`{CS)|zrY_F zRCRxmcYnyA|HhxcVIJXq_YSsv8Q*aoetKWapEQ29WtjKhS!IUFBm7z5&kBEN-O>FZ zezxl zf?ko6nJ%4WI&+G8BJB$gXkuIUYxX6s zVU^zQBC$2h^==+=Q15$ZscWPf^gdf&(-$xU- z@ur!$l^ty+cK7V=^Ar1emYRtjJ*$0wH`to4Ajs5ag6Ui-S1n|NO1V~;3+i`Qa$utr_&TTU@?3Xu_!t&UlSQKjqm*^3_~svgW6g$+6^k(W^`a zlez3_qv@y8cxFrBvGL@fHcJb!g;G!}&sMX!V7gkKt@uMDcy+Dtrd)X{sMO_Cf^4}onW@*S zLERrhX`xsdOb6wuDg0)qikaz}f5X6u!SoF%I}-4n+45wre`ERBe!pKYuYbKi=D!2) z9$nhc51pAU)(g^u!jwPAVVQ3>*O!lOHXFg_Mq^RFHOdOmPGAc5@0ZW5=B6+t6SK9u zG3>>nKQbW6A?k_od3JWvd(bJa@LPmkhdnA~EalnZ7ub5hSHq(rBEE;}0> z#)uZmC8^SuD|Ji7pq8uKX2KLc2eXXPnJi4>OE98GviS^#4+~)mFP`){2HAWrd#E-$ zB@*XeAjR>2xdqI;EUxn2%3c|W?vXJN~fGBdgUh1K~Jjs1R@k@hh^ zvo*{}F*A`X1{F*X_ET`c*P1#aBSYwT38NsxGCUZ*CSR_|LbdNQX*{K#rG-*GS1n~Q z+VxDeUMNimd2BJftuRw5=4NuGdZx~q;;>dSwHh}^D ziP(k(9DsMMffh5lS}il3lWya~La2c+$xKcLGr5@wEW>=E;t#@$)-1!ybXuCtXAb8u znl%gw7S2==03($iLlJwFLl4kI)#vs)xxDDWDleEQ)N2-g*aZgwF5y2GT zerhEA;@IaRF^f+ozQQ_^>CjElKQNLSN(F;00dRSas z51RWiunn1+B|v|CQx4NWeB!$+L}C0&V}2{^S+Y}7;{MmM%aHnZ{wK*DgPbsVD{0?<&`GpV_|I-;Q>~g z!AX72zv(7(bBCYgpyOMrb)ZcSt9(kB^41s0grjeb<^slag|P(|gQIJU_w@%$C();< z+bhfWG*<3oFHwNuDwKou#{6P%vbpZxaXV_pvk`<~zyAiz%jVL`+9@seU+3T4ZwJ6% zI6lAb-^_Q!pG1SV+@js)W}K@Rq|@deokg@9*=A-VDdGWUU}OYYoQ#rya0>G$mRIfz z_<01|lXnBjfhYvF$sUrO#9f@LR?AfoK-Hjph;$IBhS@ppWFU2+8SUQ38!?jgNd!d@ zWR7RC+A;gVL}kh!P7>3C3aATUmL(ko_s%1F!-jMKn-qwWq$nB^>=TXy;Rzm|n*^PP z9+1i~8+q{HP%=FRyfQK}I5wOf8yg-UOQlAWL#eUBp|PRi)W~>xxN*zi*i;BmCvv%Z zCBpBTM5DEQ6=Y{&vYzMAjo{OZK_*l5(<8$i2JGwYTzaV?SHR*N5-NQ!ns<**)o?GEq~~ zt^(S+F6*&16GKMOMHZk?0znAi&!I-PVGf7~E#OUILQ{l?f(1w*mg;#2861$YaZv(# zKEH7SE#gxQ!RGhBTC0&}165x>;sx1SFgH;f29CsX1B%2imULYS`iqugb%SG4v<1vE zi4Cs%E|#UA)BcsU{A@j_PWtAm)hxOR$*}%`q47a}w~{=y{0s+3$d-w_>$%#IOhqYW zA}e&=9kRhOpehXJB&l-&wy9(q`$d_&T5cv&$(O6Sh(*JcH`g~8n!&O4wat_L_004E zlDP+nq-qBY4JNC2bCm?o+kLH%8&l}N)0fJ(*%GwTUh1>e+x&NW8vw@lH`dqCOPP&Q z(Qijft82~U>uaY39SWA8s^)SNh0>%yI_9B)lc2)@v#=-2Wn`0!@l#1}its7PY|w6j z*{7`=SErDSlguS<2w0Ry8YDr+VRKl(iA=Rx$W{4`h6@xhLF{YkCIJ)#P3f^gxd(`w z$juf2BOnPhRNQnm=R5a!(Pj%}TEWuF0QLw5auQ(^vv`GV0{3WQ7OWQGr5^*7;iO^+ zaxR+=bfm0G8Qc}vVUQ*=9QA4jY%n=7i~V9bvSV}!wNRGWHxo6VTW0HGkHiG#$v4+{ zYavTba<#p+wqkrVX*p0*Ld?0)I+p{=0&vl`3U&*UutDA-;P|6OIS}F(i>TD_N2TnpJf$W)(z~Lmsa_lCq zW*}+6{9%8GEEA;kB<$F3=O7-#(>*LljG^Z(e(K6*kF2Wd^|Oh8f**< z4MQv=6h?J2BccT%X%vd)=IW3cjWha?O{i4j`~#F?qj`hc7ySaP}C zSTda&9`Xl)^UbG?v~gJS*lbCKJK*CX%o@Sg1&?Bx{NW+57&K3u1P`N}@(iR!kd4R= zjyAKb2HCpUk@cLiTuxd?QnvusuS+j+IAxqMhIU<#nuU!5AX$rU!0sO$97(5=gQ=mx zR4Sbu9~@4Or19VAD28}2of;iZk0ddytj z(>spdp&Zyd@bAEzSk99LOsXNUqhuT+xSXq%vTY4vR17EW=O9%)4B-*PAmK||@-POl z8v!K;t`u@6il)H29SVqFgebLe0pn*u3;8dISSF@W!LIRK9ZQCUY-@&eM2HI)a{2uH zwp?^3ghK|7W4E=_y?nR^4hygx0)Z^VCemI!OJkjJ?lCR+{5n`J5?N)g5ZPGh0i4X5#ATv{Y<&k4@TnTI;6qi z-5s8S_nHlIQW*{JNMVYADmU2=cC5L%L8>gw^KB+ZhOC&GCbPh0ZDS~urX+$=389k) znN$Pm0|XvP9LbV^dYXnTpdMt3h3OKdW*7qOPIBWF$kFPV;vquBFo8$xN`S<`SqXTe zFu|&Y3Dn{Ap*-8au-{*ZZxC|C?hZj34^*m|>6r`(S`mi=XxB*?akvd!A|^KSnu+2p z1lQ$yp6?425Ig7^p9o5jj!j{5$%&j?Ucfg|;HA@ge11b@Q{bf6R{Mdmz$r%zAF7q6 zCP`EJ{bT;kK13F%K>30))=P_sqqlJnNPBz(1?(ashdiAkoJxWGnSk0%4I(s19)vpO zJb^#qj-uGn$a90{@`=X1kbXJp0+7ZK-%;W^TNL?aP|Hl^z~bPGF%}|Q_G<>8S49m#bA2Sk$T1vw#c|#~n#3 zQ4lCtA#NWX9~}X|173Y3J(wCEO^&68hSQ@%K=6ZP;|GUF!M!KPfZR{(>}O`{c?$hN z@e>eXH0uw+7_%t@hQ}smr~H;Q+7?X=u-MqhR>&uWm27G(lt{c0%h4Hy946Z6 zoMI<~iw1h7SryfjH<+qT6c1&w_Cneflq!IJF_@*uT1Zl9ch>UCKIbq@Ng0>2Wb?+L z5Kc!aD1iL0Q#2&{8AqypVtxhESB!SM$iNm6jA3ajVGrR^i9M1|hOg#RldxU#>x0ruy-YdX1zA=s0aJ#7U#d zn5C2gA-zF4ZN2X(!`M6;EF522nLoAx{igP*ST0v4Ncpw&W>m2xdP53rHhY*f6R#Xs zP;6-^hzyADAbbph6GuspLc0mR2l+o zNEvK?=X~vrAWFpn$+fI+#4bjFm* zC{&EvO+MWwq(muoLQs4I2gc3d*G*Illhg8fdZ(jAqY)Jch@>WUFf}#~+F)pW7_u;(DJ#)b!zgURtxq#Cyf-#RixRiZ)dk${6DQ8O~l=6zJ2tEM$qi|{V)vFLL3 z5y5GY%oKAau@O;1y;cDoPTtX#!r(>1U%Og$_9OZZpvXcl8;m4}hsTA8=4cB%o@{~7 znzq=jRw-9Alhn-Qsvx?^Aqe&-(pUC_B70TZ#!1<>WoSrT$;bQyuNGk)GD7_!_NbB* zVwtP@xJk3{UOu zQWjGAl9i@gO442bSe~*25Lla*I!3Z9d|p3-J8Z0j{epN)nHPh9MV^gl;VV$j@An5n z-o_ML42e~+wmyFh79F=>Z`;Ohe!=QQGqQk%pq$JdHtX3YF_>U$!NkIL!(nzoxT|JU z6nlj04m=SXA@n09ls6|NNCgLkC8R}zL1=(?2$Kr}>}&@Mg5 zd+tc>dU@}xpyX9gn}twIgVrhF#QKrS<* ztKQtBwTN{L`MLD)eyF2B4Pzm372t(je5jg(`A@Z)xx1e&i?R)Z7tz7F%C&d;U@uOb zY~ClTSXG|!0nwwq`7P9>1rT#qU~Y+J1NH$4xf{TPT)vKY&K6h*iP6}gUisK6jV8!0 z=$QyWXd&1phhqgzlSp`$V@(_W4bgm5rAJ1u>q*g1-^&o6CksK zh0S%ymQMTq280^E&G3=(h)kRsU^>}x!bD|qP-Q}8l7&1GDC#ig1=tkie8)n5g2**+ zB@IGzA496g)D1%i$048@9vK=Q8%m{zMuvxmNMekPjgF_sM#j?V6jTq50jMHGBw@L0 zKz>l~A+xPX4;+$!A1*q)tZlF$UvTIxDir{XRV8f6j?^W_p zBMR9k8!$@ZMH~u8wK@Y@b}mw^8UUpRqq!=~L#;x_ku9iZ0pJ)|mC}XpD;It-CY-Vg zS`BSkC#CX?i`GfMh&qE>$8hpS+l`rxO3 z07MhFf?=((8}!bDCJIKPlY&N}j-cV1HLRGcOb-#+iga1l9`3P64I^vVGMZ0ti^Et& z_BO7v%*pbGz{)1jz_AvkzKYSlH}-`P3Wx)ALnLKRk z0iFe-x3Hr9@o||8h&|qvtCk_+@E6yB5JO@FAj$_=y3L1b0_?1a)z;T3Slhq~fdv*p z!7|dx+gJ}qffn8A1N;43!yFj$8vVv?{w=qlHl-qwcm+FreVrnfW$Z+@_fG%R@ntB* z`YBT}?4NiJU{DPPiB0f#CDJCNpi7CwR46hBWe8vjdmYl;L|aO9xEWHz;Y0aAlvIoj zO+S<-_>{GK8w-wXW2G^eZmu0y`4!2cr zhhogRa@Hl{MmM2DM-HHceo*5l?BLQAd^)h?-1mp#h)&ib0Fc%{!xmHDNVg0OV#sJI zXQr91#?es>^V5|Q1qBXs4U&pjo&Yc)eZ;bd{nJ}~NEWrAPv-*X=87!WDH}k!fCpg# zUPwr$M*p%WLMg$-6!>q@pZZD?Ub=Hswx<@SlrF=RG_rSXoIZ)uuE1YP!2yCt?MEns zLubkS)G8oLVXY@Z#}jLdt_X~;6cGqjEoP}3@bTiUE+PF0sS-X6V{eKYmY~kz>N`!{ zFjYI?vN(8v+muAY-YVx0g`&ubYB>Y38WyBW(m30NpVw*d$l1Z%-;nQW3zDtgU8xIk z;-vYlwVA9xG|0P5eWr3a>$9WtCl(>uB@-4=#}JPfeHx32-V^wRJD9UvGW;7hqL^-o z5%oj{JYiK{*p`bI2oGevvD6cW9vz15qeU2PQAW6n)f+12Qh|l1P8Ea}cd6W)qb$%P zO53#Hqs~#GR(%{m)`3wDUro{g z7>|}Rp!_klmfP|>Wuld63r^b(3$-P)J=t1RamLJXgmtz#=)PmX!VXwlQ5jNn0g_PYI7Q~f;WwO-@QOqxggov5 zkfj%C5b{A1S}Akjj~^U=p}!nFScWD+OuEo21Xdzks*BYW4f=ur2Z#p1Q-CXidm-^5 zrq5cLkxzu&nu*6CSu0>%Awb63>|muG)$p}cy?74zYMzZ2K%9z8l4EW|Jg&Z;z8LYC z1S%6p3iwVR0^EX42!JFV!m?$G$KhB=0Wt+9loPVD&~2&laag&T2dtJF(tvVB5g-lB zmlm)I0rx|CdB~YFokNOPFL>byRf_~3f`%K z03?*<@(6|05tvZv(elaQ#Kx8aZzBj0Iro-gZd-}IXBg7SGPK69Sn|OSP}><2jB2xD z6`r&tpa_q)@X@_T0*TZENC?G>x{1ZznCg91?#5^%P8f!=g9#kgT-<&R^lH&jnQT>v zfj_mmP7M#fhuhxxi_v82`24*Mc;*}z4;@Z7j1!1u30twp9J>cFFX0vyfwlbTF2#~5 z6<=`CgsTMvDYU#8m|2G;jkExeGJrm%-?3J~Oq51MmX|3}84WYlx66OY0~h@dJPZCK zR8`A%fK|D{cL>MQ@`2+zK;jgQ7YU_Bm8mj22F}8Vk2u9hd`%|oJ0ok$mOK?6S4051 zK({G}=Db9pPgvkMa?$?-vHGm|I0w4%!330IxS^31Q7D za|x4p-?`T{j_(CgZtRw*mDKGI872b*NK$T58)ovG>#G~V>e}k+=E_Qk9=6mlews1s zilk#+k>vEizCuR=u>vCGX|r0?Fe-Oy4~+oa6***w!jRB2n@YCYq^@coXAsBm;@DiR z!0)aAH4-zz2#k!L00l&8AV`?3$r>>Gwv*W!7tq$lSQ*g$a{TQLx*$Z1gT#&ZYUt|c zL*W2Z$tKhuyx<98fm*z|M=%Yp37;-jQK%aIi{9gLp>(MR0q6va#P=gtC1;9pAvGHx zrr0bL!pAf^Fgy%<&cUH%aulYCke`o@jE_Spkb)8CIK0PB zqurVz-Gt^qQUMe28OkEf6_DE&TpX%FFSC3MvMqOsYlo@&CkdHGEf8+Nea7V2GFB(% z7uMIryKi~*SgQX-V`D><+Cc@%?Gy8Gg0op@K`4thrTtYw}Wv~YHVaA6%1l@ zAfrGhl&1$53IZL-sy)l8B_iOc29tOR<;60MR9nGnS$VnA96inZPaI!dKcHUG#u<9` zbQ5{LmiSVHMm7i`A(YvGT18F{w;R891S|8f-&r3^?x#|O*ogFhhg|`ZOTQ8dHrS(t zFg;4*IZRE&A9S>q85B8NF~Y zRe~1-k|Y<&PHjyo2D4yZWcu2{Ww>k|+`u3Vf@`>3@Tiid^hiAjyfJArEDe|!yHrmI;b?To6XmR9R{jHVFAlfzXacHYB3vc zx6oDgQiM*`JW^DYTgLc6$e0P?&38aXt=(G!#kkQhbwZ z?8y8oB=JL$8MX?iR>rVKaue(bb^Rjg3b7)&93fF#z4^U!aPRa7Tct9QL9@XU}U z;%5uFBn);iYpft6O@|sGa|yV#>r58XziH813;7x=vz#nT7}x-RYHr+Wa}6D(_!Ow_ z_w*QMO)Oc}>%dyF4kD-xQ~)%}t`?^A7~|+xc78QC4g4wlU2pMC;?7^1g`P;n2JH-) z^%U(`LOLZhKETE+O0*Eb6A+iKRA1iNlE(p6o=vqd0$v6WLV-_qe=s#RmL3{~J4PC~ zdngIO2QLhu@9{Bc@nJ-mqMEIigNl#lKkhC#xw+oJa&fbC0ce3Nd51)i_%k7h>A*n> zS3>CJ3WF5KE-kSa4vevoAqHqH7KZB&0JJKL2t_?c2Pi_(X%{&G7T|wfeqjM@37PChKM0Fe@kMAQD@-MTSzr{@WFR%I z3}{QJ0q7wP$O1xaLKPa^`$mGKILPeWcmz1WN!J(V1?pgEqAseDDLdbZs?t&@2~aGk z;T{AAYpeuoD~mebn2FXb*_z~%AQgq>7BDUMs+%D-90nX_NtMb>&1=^gT07= zNhCht@I`u53P3~m1)!2KuAAA5Z()KU6EwjRpc0%aV&=G$RrtT3klcn*tRA5x2wgAK z3m~dt;eqKD#}0U<9_ajk+tWE9IOt2L%&lhRA=8G!yO5rPYq$78m_ZXGGa^HcqbKCO zuGEmI#2TfEkH%#P@6dk{TE+}|Kp@b?*a|A$*_otvY&KgjBRC&kCVs6tpQa}rE107L z@v=}^V8{c^7wziB;uNbryhl~8bmb0@WU5n)MOmP>NcI}c22C)$AiH+rBs{zQU}|M; zzDe%RP)fphGs=QHS&-yL%cd6c8@fTJxT`~hJVS!FX$7%{oaH+cTg)@w5r$_0&P5d{ z$L^ZV%|@{a-3;{733rBJC`R7TaO4385Fv)|3HM45fIFe~2{~xuQj^B}Tby!JBP2E? z5+^_%O(jL4%S`y>j#)?DxPvW1zNy)D8N#J$^EWcuF% z*G!Y0%4G&-V~VOUg>SdWSjcFan;}31wTGBC$lgmPaJgly3F09`noxY&b1c!8ze8X-<*MGd|(`S~S<`E3}r@wC!P3EW-|y%DHjE65<0fYwE;jD5W@KRG0n`AAkx0CIS7Y z58S7QKmL7IDGl%@S}ua;Bed88KnO($z*HtHveycUd85#yrL{t3A|8dM7D@5dLem}- zZ!ZJApr4>43yB-3t!Z)-X)4svCUSNHNFIbSINAXPi#OT$8cNSns2+OaWwHoEf>=*! z%Go(o6twe-DuyM2ebbg)U{Nd~pg*Q4Ff-?EG*)29CA*Ju*|?W(EXNF`fPavN5}AXP zuB$kQc@uoNK?pFWgG8PnQozo(@=`)(xGX8&YRzQVvKjF)!6gDiA%hO2(F)bt%R;a= z6NTWL$)lUqBBH}YW6LA}1P2!#hM73y2uf^M8YKl;2`PwySB&GEEBgp~xLOvQc)jyF z$)&KUB575$uEgqM4ki$a_b8dG(Huesa%tn}$~_A(T#4L7<^3i`n2wrF;EPnN6Dbv5 zbYuu96{KNxpN8o%zs@EsrA@mtrLPe~5maYzavmyHup|8>Pi^GOmNNKVpkvs%T!D6j z;B7IZGCUqjD^mo4bHCa$MaE4SxVYb)<$J`?fVIu*6i^7j-%9>r_6b+M@z20V$DJ9e zWRbCG&(^OBU*milL`z}(IEEq$mS`r?GL3j?Hp7tI$}X!No({VNr)IR>JOU7KtGnb! zxW0*LoyBkXin#R3RFJ97z*S8M_er>MXSmnpZSC1Yo8}OJlawj0_y7)r<3|Co3Q@6w zSi|l@3Z0pQuba4u(UKP5hYNQS<(=X^OlRRxpl$(@6-U`CqvCe_UhMT&hhXPpO{uWYe15}Lg&{zy6lOrDD7TAy{czY{%F~o8oAKJhRW8CS!tKDg7QW0OPEjx= zzFA<`4YV>zv>Qp*C<&QGOv6KPB!pO#oUqdRZPBj98%3Behl+yhe=0Q?XO_vfW9CEV znHIJZAl=xyIC9f4ip`66gOV^dbg0F4k3mM^Q;g@T=q^dzwJRR2X%527`tW4r(5UpV zSXP}^FoC4T}wFF1Q-ai6a!i-A|(-93wRiGtoY%v6)vs`a1+{*4sPk z62nfJe2tt7(YE_pn+Edo7;o$l6IfLv?H>42nB}!U9^s~V%zG=MSJ*9+))ME%)=)4X z)xe50VrneUC@6zL=zL3i4X!-J$s(tx1uqCVL;n%Ah7PibWTgcJ^JH|5?xb z51&-unC~u9V;J#5Tx;Ann?Mumj|72gQqdN;0fH2 zQQY1kb_-XKN=K_@#386Ft!0I$Ay$r-k88x%B1;Krxvi$2d|f0u4V50)jV7cI#z*h) z1!^^B!*)}Pu!wEG5=9MHNfX&~MvRX~=N8yY3QkUbApEuo*^HzfsRzWxB`BjTj18@I zMQ@~4;%SbsS;!(Fa#nK8@J6g{qQPt3dt2?C&f+M8#l^lUM58dqF|b5VBVrN?aW#c4 z7HcI4>i{1v7Mo~9-PSdl11U_M$5sV}T??|NT}($wBf5jA*@(25n~BU^V>yJmwUR{2 zz(t+_plJn&@hky39VB$E2F1b7EOUVAV7qZzW{W-#n&l^t?=x-h$Tq&I=*@xnBE@I zI#wtXZo{ErW82VZ=#9Eg5I7;MQdw27Brs%R+#rHLWMxFYgm(gha;nokF=u=DH`%ZJ zJP2HPAQN_Ln9^orF0~T5nd(Bup(#w=t>a6`N^xvE-vy=&9=F+IwSQ^x01$qoiSsN- z5-`taCj4zBmri`v@0|L^6wJeqF0T?5h+!>=_n7;#3lxdnFzej;&m@o-89qHqdty99)ocq%es}@wMcCYgoQ!$wszPM)9Jt0F4=t zD1fl?#Bjy#0$Fvj9DbK2pVj>_)WW6@QD#Qrix6I@7>i6J$0%V0o#1Wvt}Vkm6R_OU zS`eE=G2A4C+dF9ZkEa;JjUn7fb=BIx&2Gn-Z9r&xBU|c?Wdz?49$!P;J841(JG6IT>bU%Sy{Qc@{| z%8sx`4si1aCZq0}eZo9CUXvQcT#Aw4?P9Nhkr8YU+cH@=Hi2&NyQO~tCU7Ap&!9lG6`$!!V7avI)OIK=v znI@X1ah4E)ivZY=UN=-T5G+?J1mgeD866Hq#D>&8YGvUek8F-Uu@MNXlZZjcZxLeC z?kAhjfW)oznn9<47ziyV7Crtbg$Y>ajI=*_IKrTZ%B6IMEHhBI#k3@);q%sTQaH!iJeG zTn~WI+}$E>k~`uu4Nia&mmAJjc;H+qQ^C=7lm4(#M_XKOonX}VTFishk57?HNPnc@ z@#uueP=f%_XwdeOWFm5JC7F;HCz%KjaZr|S1#TNTVHJ{l#IKQn3=#T`#NJvDBTulR z1a+u~(;cq}PZXLkQGtyIEVYj=F0E{C9OuNvJz*sPo)xHC_E(^XocUsMWJ2kuB(4cq zEaslTiOfwJ)OsK`@f3()l*JD*DN)E^uY^-H7#tYQhT*RHiVpc+FqMOOI6TP>Oo1gQ z73dNMLX3$lx^hnd`7Vrk#T_T2NhSJ;b0~l>;5Ll;uj{ZC!m#fxc`~k{E}H~LgpL;* zIOSjg(PKLw-s%<;A)DnO!%qn}LwVwbt;b<@$m0S(l*?5h0X>{EF}z`U5zO&GSP_c~ zgAmVB)@d|io#fU`xOGO68P|mEphGrd!^?=O>l{#n%Q}TL6%dH)k*l8>=X-4h44-4D zE60W53q-nWPU658lQ=*zo`gBvVakwTFsgHR1?9t2FcwEB_&TCUiU~4SjzHK}|M@~$ zPdGN>y^vpsjyy%bB9M(3&eDv5l`XbxFfk*SgVkyfXGk#skt^CDhr$RZ>c4B5C%bv* z#(Pm0-UBJ)#7m}+b4v6qQ>~D)Q!aYsI1d{Oab#-Xjb*G*E?Z-Y**||^jlrdLEt^aj zw9Fsy*ADnN3Jwn{SrZWkh_Ne6$Iu?uC76pfp2eO})aXi!p=|8r(t^=~$WP(DHftN-v+@HEksB6NaDVuk>^%*u)0<0H&by8YJ$S0)gkhDXl`kqfJ!4w3g@oGX9E`yx!@9Uv*;UB)A-#3EcAlFW)zgaCRy zZ`e&sep)Gy!KQIOEli=eoCj*3%u4O-eIR`Zv1I5J6YU2OMQU#aJ{clLY*>5Nv1-3u z{esmli2pxnT~M}+pG*@kE)@ZO;FYSzaR3X<->QH+8{;d4bXjQaFw_Km?}cQ)Xt)Xb z7j6-9LeXokln)B2F^1eRz*#f}R_KH5aD6!EAI~62Nk?aXF8s*H-?1zaAR7wa!` ztsu^_yy7J!TUS>LCQ!T^78?sI`k`_rt2u;>q6Iw^w_l|UE@ld7vM3LOrt9ZpvZ?QB z;Ka|6(n0$Oz!V~3sC9}sPZR=0D_N8k1o^s^uUL-1CDy;OT9)rJ_bQx3Bv5Az3)7A~ zhY1ggI6s>j1*$$ccrfV?oM>*YHf}%GSZzQ)gyj7C!tvW7S{s1R$-uEee_&~TB0&4XJp()<7=}}8>jMxo@gQqku&^?}aoiU3NW+1p zg(W9V;2o+G5P6!REqMSnW)CKh2w3T!dTx>!q3MpG%@GKwywd>5)^Oeq{A?*g(}>oz zd731;z`MA>kEH)a$^GU-(0r4?Rr7$c$}* zT~KaPSgf%mr;lG8%7^3t_d>Q%FCq}4A^`QO3Bzwt;zh_U7M2}AH;NaN;nm`*I3+;3Wu?{ zB^Dl;+ZL3LQNedQUl`gR0Um=AFM=RY4F!k

X3_TW$+C9A-$S>W-PHVV@U+it5VK zqeSYem;-!Rg(=;7W4-Z1{U_$%cHqP^!gqleYsblawbFOEee~-u9megchB$$k`TbMw!-I_q>mOOTkVZCM3=xM3~Z4jOT zM@Go6yFk_Li$?+J`g5Zuym$jghWrEcaSzZGE?-Ow?TJp*Z@L*VvEtz&wZi!ROBKB5I7dM`Z?jnOBB`h>dj#P;x%eG^Q047r+=9Hx5VbAS8;pVf?s_`-h>%0iv z%uToZ?~=zHtdp)SEC(HQyxruiW4}F1SY@M34S28{5IPPhQFDAb1t+xlw#SH?$#$jU9p=14 zG2c}xPi1k01LeiF8Z1#^2@8QcgSRTi)+iG=xFcj#jq394JUIg&fRha0oYwgJ!4mLo zNH+`a1!*kAjP9o8)#awx^fjQgiqL`Jd-Mdmj=|L+TeGBp_9DzheVea@^xfqC+^Cr-rk?<7h_=3*GamY}jmb&_gv>&D|AYL9!FZY!0p?DLBg9f+3L{ zfB-nY1@wgN=L6zgqBZ)7LD|nGWkohu84C=uh@)$Z_w@%$P&tEN<`qy^k9$Ixb!b6mx}7a(3Jfs zY+;rwp{AG=vL6QCr7YTmw1e&oE;Al7;oxIV( zO&$)e0Dck}04}-XNs7bjA`jz7Te-*gP8_0E`%{R4 zj|rB8Vy(AF7^=oHMJibcSCUmEQmKWtgtc6OY%El7+XVYV(i8MX4ys2W0z!V#21*Yw zNB#{UJq8BT#oP^C04?WD!CgZq7{XTQQ*n0gAV9g|JW#YYO1ohz-JolsN>T)0k!K<; z7&*VQHTZ@>HP17@fD>t%fzY)nL=qVr96@Ai@g9QNIKIxjPUP270B4I_NyNe^K{Qvm z;*-hlxRLlRzhkfTxxk1ShhXddBU({_S&kX}e~mdcm?I!Cd9^*n8svj7m{ z3-}lfn0=V3(EzuF)8`;)JSn3b@!N9XAGdyQ%rrYxmRV0WI}fh=ouzLH%H$>JE$q@v z`A5QwN3DA z3Ajw$9b!=!{5j0C!KzT8IL!n;r8Le46o?yV$AM=ECS6gX36yDLjD^K* z7}ZIHA=Kez%N14R+k{ym;4h=I3}=yPIU^gx!3`gA4}`w)=n>#9kY~e5P`l=fhFXY= zOr4V*5f`<54zQi599{)bzwlT$kq99~c`*$+Ka4}rgGkFezusJ4T3%SjN#>nQuH0f0 zyE=-}atMGhcjB7CN#uBjcttob%!|Ne2Z|V6 z?x1pry0V8NZWFCxZb@m%;yAoTY$HL{TNM(Kz(iNhDS;_on*$L5x$!BApg7*!X6Wq$ zZpS)dbb`}b7?{ezJ4?o*3fKqm zniJQN@D57{N??0Tc@`L}Jdr61*BvYQURO3x(=%J&kx8}M##n%0*YU(fqXtT_H#BQ$ z2O;>BCsiA=D9*8PW;ndaMpY0SWqQ?+rB_m`-2W_mA%4Y>{cbLL9 ztPKS|7c$Jd==93n5zFx;Fkru^C=vfkq!s{iB!cahLEjfvmT>|R{fj`3m;;H2VQ!); zt0g`#wb8D*2AK0XRMp50Tm^b=0D$!nV;(@fzq;wD(u7~DVMsuF5sgZa zXk$7yH&va%q{^99)C7V`HbC1kC?G_3+&3;(0ev9>FPinv*2=;JTeiG|=xwG9YeJlv z3*v;MuHzlg^C(?~uu6cBEE#KEX%py%1G!X$%X8J-Opz_h;cA>xD4D8&ELc94{D|f7 zyE;&S;SoG!FHuKSkS5A!zquZOD@*5qVD?;hoNKOuL7jMDq8*YEq=_R{MJ5rSqfTBl z0zkt_>QsZnV;$0+lXr#CHA3{rBQrtpksw777(KOrrA=L2z=Jk8x~c!Qeayoybr62o%p)0TE(|dkMGWg-+$N zbd+TaWf)3CfLX;l>|BIC379g1$n;5wkiw{Yp!VRY4F1DOmQ!L+he_EpU^f&xa0A%{k+$`P1M-zq)+o$VjS@5uJe7wZ0xpjyd6EW|4|CES zcB78q)Dp}JpBCN`7&$Zy&XMO^OOuiKkFz8q2oQZKy8Q_8SDl>k?TxgHDpeK1>*zXZ zZ)JI-*;qw8i+Xl$WGcnoHXZG@A&8&o0%!P7a3KetGu1G=zTcw>t!P=y=_<3ospNfCzLIG+iTYC`I^xq`3 z5JCDfQ7xG&AhYq%DImihiVMg%y{+nW878N_NYTy`425bgT^WpHb`B8~;H4T|!dep5 zqtJ6E@SKZVIu2_L`*f zd=exg6i8WLN)o^Z|6{uvFEgVYVgUwOIgl4mvQWn2#$qLQla)I;J2P`PHb5v#fSB;K zfxmLtZ-yYyiT1AXf&^Mhpz-c$QYyPQizI>Er>wKZHX(K$4!-3&(N7 z8X{=77TnzFUANrAbED-MVll#62=j3#_$;pCf6-?-i|mDZ6R61Cxk(bjJ4Bqc(q@Dj zg|G@5YWW_6H;pZn9m2L;G$|4w`Ke?I)&6|pK(V~vFP0DZ`9c^+l};T%U3JD7BPrQY zY9U9p%nMy)$oBLI)g}_9Cyc|Tqu(lJ)J7`t5s^iTuTs3<`ZvYp|F>O>Sgrl%7F%H5|5ERPA3H9%Fz;v9O^mV;g*0$q-KnTPQ7BuhJl7$Ve_2{od4 z2}iNApFT_*{8`($9}pA~1+V|!AIDfJ1SKk0i*z`;;taL@6keEPrO4sQ0aF6~aQL_! zHyz|~%pC;r2aZa|C{0@3fOiHd*|+<8n2oW-TVB)R$J;!cY}-h!o5GOr&q1ES<_p8yaSidI(j($w6msA}p!a4o6xcCa|!M z02h=X2E#!GhQS4jYKN{Oo>cHE9&n0l^p?wWu0|t8?rMNEF=*)s*RV*ftWB6h0(OxW zYgi9~x3EiqvI8c)&=^CwA^0kmWjRDwP6(P9at|_VctvI|Jxt3}AR{_Vp+`Id4OYS$ z^M8wc@96s4{Nlp=1`mi5Y>UW1xmJ4D+7cNy9nP#mV8?eQ;Ay!8aem13;bhhLhKVBf z2!1WjA}9o+t^1fq&WXrz=ya}AN-EKJ6NHZ-D*+7Zxe`xrfbA`yqzNsd@^^`L5k~k9 zi6t~2#b>s;c2-3AaTL#Ev+=mqegbev>;TXwUeTW6`-N$ayZ^vc zB|K&^ip(Q`6n2Xz<~QyEh)K;BDGe1P$Q%902vYfCE;6I~3@KAeVw(2`a)7F{3dt53 z`<^Wjpn6|ALSsyu8thrts!gIF*F|=)iRMZa6F&Kg^)X~2)NEMgpXOXBIK>HCgt1cy zA-Ktq77&49rt7DVVdhnqIK1b;xmb!TOkoN_En{RH)ZQJ+UKq$2M;77{px)QX=1}oIS zk%YpR)!$^LQ1bRD>CQ!bJnRZ{0u3X|FzQdh8Mwr+W@sEXUaMq|DD^IPsA401Ax8PS zA0CrD-3Q9V~ z&QtBTXQ!g`9g0(aKctQRsrmI)9KPz?%4iF_pS!x<_CZz5G4|Sxv5QAtgo6|7xq`(1 zOqJSLI>uiIN>6f)x=fvfOvS8nIB>?6d5)5Jfy!K5^PALo8mbrQU7#cyOTm+;{jV`F zIwhtp+_4~u9cwM<8!THwoH7f;UDdB;qhodS78NH2ZH3lIk;#i0Un?pgX$J{FMCLY5 zpM)G5&{hgm3XL@|;3XE+!boLwFknrIw)K48;YM>y3sV&m)g# zRWnN{HeyQp*0!@=E>3W?DiY-n(*eq+0Cv6J7S2d=;{lC;)`e=v6!I#YCJMtRV`GEz zwaT{W?(}_@ZKaHCE4C-%c;9Xy=6d3RHZ+ggQV*8 zj4~wV9?%H~D+4|>FkTed3(Y!y za9sX!<0Cv`9s3U0shX>hG=z;-JnaHgAd$$()%qxyJiG&&koE!{HlcpCV_`?vcJcbO zpP~CjClZ#(3^fX`?oNigPN~rB!Yf)!SrfLvT2eExtudqvK_uQRPW4uuVq}bjhz=BS zqI_fBfg~o@=E5_#T#cexL>8}lEU%48-=Zazb~}v=0TAec2|XXfAMuP!mLKvZ4zVv9 zVOR$P`eX&0hxpjV9~O!N+e=h*nNNYCHirNmU%?Z1AOMK;R4oCu<56|n3T54hvxmGv z?l6R8pe&LCDF-aelZ(_%fnr``Wv*vkx9rcz0^Jtl0W4fDsuv0bVRvbCjZQ*iCxCik z>mY_uW(x}08!bNx&jtf8wJh;H_s7fRwmKtkIt*Vuacue9{ zn3%_;I~}e>vYnESDWFXMTBkEoH@hF81JHt3-4@!E)m)7AQ z6>E^(jLhCr7xjn(5kj;mu7kv`Rwbqicab$iUvZd_QCLxMq4u?WojhKj^;1KlgJS^H z0xVakg){d8Uh80h(qq{6*fCtSc%!UjbC0$o-JlZ^jt9vG5}L<%YpBVbQx6$o{2syc z0(wI&|92G|Qa}~W;zE@OWHJQPdAJ9MFxw2B6n!RUh8TLLLaz*Q<%Jbcp*#hJ z3n68zU@V>$MrAOOHDw(+QC0`Bim-hLheqJBii6_EhR4TJSW82xvB9A+93?-3V6u%{ zXeue|`|t=&4K>ucswqSCX?0SLPdN{(fNr<|4h7LKYd*flNusBY#s-?6&DDEW*G{d< zS#JN|(G10U$+Mowgo`*-7$Rj1JL;8m$fygj#wWv&9a-@2;w6wp4oxW7p<^+Ij4uVc z6G>obwF2Ko(z>+oO^=b()v$?$5`qBuu@qV$Xr^;Ri`Y>JBayc7lYpV(o*A|+-f3jvH+Gqg4vt9JfnRlo3K*48NE%%65_vXJS1(Lb7vp1?^Nix+KZUch519z_2Z5 z002X5Wy2HWNvxAN6%kISYZDeD8#~qD{^vN6SEd4GNOj(NEHQDH+*txjBKcPgJS0;r z$g*R+hI9%VYX*i!sG3ozDjT;j;&+kn>txIdLKntvIL4UB%&b6xuE2;xI2~u1W}}A2 zbWjMwipd$e@(30VmFnnpc+hv*7)7`l_G3&GU95I+>hSMNCdZQFa!e>rY$gkV3%d(x zj0}+&TsR)Lp@J)v?o)w+ZsLqNNDkY;mYPv=>GKoC1p=+7k}$GVZKF!jw&OMr=kd&yQ1HnW6w2`6WHI~@Hn~j|kCG1g3mjPPTZPpf#o3B;T zmnzdhZMNo+%ZY8oR$v4fSc&10sC_#)9M;#+tnXGU@k5e)QujP^#hF?6Rjev*a4 zuAt0C`0W(BMg9(w7bQEUtsSkK5@D@{)Rx_Xa3iui9h@B^=ulf>!clDC77+xY3V*geJ;Q;Xq`n)A{k=12i<4H3y*GswyhEpY9sw9ZdDu#`k% zb4pAe;97i4C@zt+96;>D_F_`DMaL3;7B@cwf8m`}VyWS@hAA{>$*4XG;V|S_G}OTo ztUw_y=NHQj+F>AO9;r*53g-jC*kI*3r;)aNj)6S!+>3u8;X*6KP=>5 z*g(D$1i8bPu>rNrdyOh^ShWDr-wi4lYMM`!ohj@meSDnA~Y}&}%HEphXU1 zg>l#f4$;aNXl_9UJ_qrw>KO4NcxS34zs+|SRY}Z+F_A|{IqwWL!8tABWEl%pLg3bl z?c=1KQ))&+qeZkUAu;9O6V(p2m8;mmAUa%WCots1#9^0!4H#2%d|0xPb7*4SnlU z1E$7MxTC<{4$u>LWC%H@*47ufK5)xCbGv{iS)V2s1L`z_6y=x9l`A4I%dLFTGK{eo zkdzrfYpexhc^p07w0HE9V-36{yg{T#WbyOx$>xh;-@QD~uhyH@#s(WZdSA1#acce~ zZe?f&ERBPV$hQ^=XNWhT7e>y>=JEB${GxOXNlguGfZlB&LNu35OQit@mqy-vbM3_P zLU0PN0$aPe+H9;N*Sz2aqMDqJlIy4VwQL9mnWshdD9uJG92k#cuG5o^b&e|^#xu)n ztY}&d6~xHGR4)u1N6#CKSB+RA$OGfQwlKe{B+hdI;s))%bdv1~oYwIl3C56q-HcrhiHznwvxmU$F60o;1)T zp4a1b^>~-{9@y=9+j@F-C9e4RYms@?<-K*}^t`ucU(Xd+^#0)$&Ed z-e1FQ&&#@d|AS;DUh#{)NMGCCJ9|0nU*Fq%3^zTmuoR&%0ik=-#-4uX~{DRf+EY z8gJj-bzP$SicQ}BNSB}Je$RVwoA_s4(!WQ#Y=3^T>-xkM&yTb0f9v|QJX(9A>xRU> z?gZ|xes%AiSK#{U*Yy4XuG@N7-0rpu2l*iy5K_It|I(cAut33EWz!IZjAwIPOCvP}=vFXL>_k`H-%15n>Cne5#P zGCK^^A804OwfL z`s(WJjSt<)PnVkZ#jI=CuPTAZYMEMi8k_sF2&fxb%sjnnp>n>=rc017O{Htw|KT?r#^wNetNiSpACzRw>GpGF#5_+LJ_TOo+w=IQS3C$i3HS|qV*K~2azy|$Im)7*M zpdXkhPz zgrQHcH#GB(*#%qSMrPhJaqP=J#S8i4nH!@Edv>$nDjnJPW8K7yuA2Qg)G*z;WkJ?G z(B82kn=9AEK8p$aH=tfU$e!IBI;5$Y_lu556nMWIYr>A6j`8wgqnZ6DCJH#FX8)5{ z&8+Z?Mhz2P)u70d|}!Kg^@=$lkE?X*YlH4dXwI& z{W@5D^tFr(QGF#gVfr_057V}10qKj)fsyPX8($(_){&>qlQXdqFe>Z<)AkY@#cwXZ(+``Hk5-b|%8)g?lUa(A{bI?vh#+|5GqQ09()%EJ3`e7B`(Djxz)Yr> zG$SWttC==qCuzre!oy?8Uh~PU%IB%d8!5_5<dC&@FV$gJJSIoC<)LWZmL%Cwm27I=yrwS~FdEANf-G^N5OV z$wkZWI66#Q(n4}{DjC&-+)|pX6h-cDKuS4slbXf1{!HVuFz|2X=fUNfPAWl~203R5 zd0fStagOPG2ztc)8S>z1a^D3qEIYZV9hsnd|3%sVNcWH09ZfuV^>{V%n4K(En>?ac zWXV9L@2n;p7bLT&c805!8j+2bK-J@J<^Qt_XnC5M9Ixs&yv%g}Yh=LzWIg5i(nXkl ze36V+zKXBObkbb%S`fKbMV<3mrjM$<^HzE3c}ZHjXk<&}Jr@-lXH`4|4W<2!ngwon zM0%f!fz)+O>uQx3seR-*k(NJP$s@`;pKC93YdhD=wP zOuo)T-i#v$FC)jOkz7*|yXGh@e#+;6HDbDc1M>M!vZIQPA5{F8$wy09)%(aoOgHr* zrye8&$CH`Mlf9Hrx)o=-go>89eoW__LOzWpXQ>!SuEcc5Y2>$RRDsHS9eUETQLWbs zWzVfvaPeT;*DNC6eMZ6n4peg=rXp&J>MNI;@56e$T2IY!qgsW2YK}?mXg{O8=b@q{ zoAQRsYTDbVc>6Vx>FjF73#ka7-h!5*s_tQRQgy#X%iqVzIwQzMWyoC08zHlpzOKeI zMvZyE7Fv?r$?w!m|8ZeDZX7vZ`SxuZ(@#>!Dvil6n~_IT$-I@xaS7y@0?OWo9I8$m zQ`O2hkd~rRWLxFE5Vc00zOF?EP(0Q+oCYzb(6l0>yWsa|G`w5_TSw?`*Tt17`@wjZ28;Ou`8nq3+aT@J}$aPAT z+c>72#>hR)!D+1IKp;4clfLNPX}tLCge1uec)}@Jw!%416XZv%y3<7Q>i|iS6TCJ_ zI$-inlf^d%GDYqNK&DDqKgcxM90*C36^I|F>GJ(1$P7t^hn!|g-Yk$=l4B!ew%mi` zo#x1#Mv%F3^DJbZEI=$c&6mt*%=}DBa=q6{DY}1;wSBKamM_Ag|;g zqxLVkzXCEwo9qpls8zZN`Ai$e*)G*;bCWL9E*wE_x%TZeRYo{C-O}hf^R{Z!=?jhiH1DK$^tCn}k?M3$8^taDjTW)au>wZ$ z8W^(W4hC~H!<5weP1d^^NTuq}+4m;h?FwX<-jOX{(4V6Xr!VyVT+2K9onw%%_32TN zdwKxpb6+pM%+Zodwq%=4D}@hnZBA|#;bXHxcJ9VXX?%vO@ilisK)`UYUV}vQz36?15&1F2VO%=!mtQ8H7UDoO;}P6DQrN-$ff|uSgEubGENH6|Knw1 zA|y%t=0lQY*5{B3@^vFfiWF<;@JNBFWnn03V`rsYShUPNEVfxTVHoJ%h6_~AXB6mh zc?MX1Vji%96L*N$**ak5YH?tdcL|_x$%|msqV#9AD>!+~>ic;>))=@J^z-M&sQHwU zS*!L1uy$6)bDcGf!MZKaf&SB*g8>(#!Fp@qF0+39bzp-;hG)aP@T1vi@;tC{kz-)s zpKQO0D;FyW-?m^gn;xL&Th;6cw!NDdY(KXX*vV}N*wt?j*z10FYyP>|cQG#<11dt? z5AH&uay(eaE;BPUb>%+;klbd%_in@>>qZ9uJ=Hu#W0_;k;dtD6)||sc1zvu-FES zOkFFm3v)1wl?VYnrxXNhK5XZ>R(3UgaKjuW%W{wt2Q3NG|U-ZhMCQSxmv=(ZB2)5kxT9yeU4Ir5&VSU0CC zzq0qLMgg!|{V8DeO1r@Z*~7smYZ-~bk69)pfMaNvgR9*>$6>I;D#Vd$`+#_cB6UnQ z!5ii&sm{~toV1$veS{3nD=8 zw}U~SVD5`bw>N>6U46kS{}cv&Js5>mfA9gT^=9MMzvW)2;lrKf*T)5{xwkS{%a`rf zUd-{;3FJ!Doy$@Bw_zLv%%`X7d9ttiU*`rJ45*eWl*-#T>w*k)BFu@l<_cW&61EYtHh6AaIiAB?!i z-5oivB-rb(9$?g&vS9Bs@nD}fxxl{mBVcq5dM3udFWB$&B`|jMF|hys65xO@yui3` zCV=>V^I&}2f#4upJ#cVKxZ51!Rt8My%5@xim%D3N$PI9KEskV_A0v3AAICFl4qG0* zn)XDwM^}!K$F(72$F7b(JlI*4P zCd=R4iBn`l7-Xu<;kr$erF7J68Ok}&ks>TPR|<0H&Xd+W5a)}z2(m!RWrZx1OFVxU zNw=Jk#gfep@|kR5a4eC(LLp1Vj~i^6JQ2upDL4nRLbkSrtQ7k=$STRjHdjjp9+zw6 zK8viCkg1S$vWM%nUcNaG*&wY?K{iTj_P0eU`P-oQQ($Tbu%v%Juyo-yp!-i(9oG)Y zFt&79&Xj{(lK#$+E0Tp1za|f^L%xtc2OwX{PEPzQacKj&Cx^Iv_hlQs_?i#=)Pa11>OEi_VD!hU53tvycXZ-kT(>UD{gEG-!;9m}`44^O{2D!)xx#p=<~|w?=DAD{xm=kB z<~=Y3%y*76$ltRsSRmO6EZDw3Sm;6kSa>5xUeskKSS;;0SiIR*(6v1GREehSx1=xT zVV0T7l4U!vefQFrK#zJHcLiSts#k|Zu;P98PgK(KRFB5 zjOGTaeTIIi>&@-sKkytF@EwDv!Jq7_(QbMqupoC_P)UYEv$<8k7SX%F;3&?ebsu`8 z&8Ev>$PV_~uI^s2!*E7zr&&e7F4KpB-R>~-daPUsh83F!hF2&6Muwz;QF~T{y%U;& zedGIpF^xRIe#J+Fu~}Tf0jo=ZajV_Hfx9`2LC>augKKb&5{wPtur%(%;gMy)k=aUu zqi@hx<7Iy^BuO4H=#u48cgRHfDGY*xLxaqc(~*$bQq2W2M>^zpM1tqg>@ax!!`{6| z#DRX{(O}Ii@I(6Z)~hQ>R9rCw^mf|>`uLs(EA8j_Di`JM_x;TuReuL(*q||e(Xdtvu+cjX zrg06fdSGM+u*sYtFz65?rrFx1VDpz;-QbGc=&cTMRa%d&0k$c_zS@302n_j-&vxzJ zRR`N+LRd@hQ((sz+@PHjyur=~mw{bw>R?x=DquI&S7=50Gc0jG82<7k7%?sdj2uM= z_bONwjPe=|_HIEBM(a($n5O|?zv2hM*r#K_fv<0XgMJ7FhbUhqC|?a#z8a={HC*{> zg!0u$<*QN3SEH4$5=A*{jHq#q73G8^=~D+SPLST4Ars}y4oHf0tPEK%qX$4X$m?d1 zjdF;wxk>KyhHREo^ye1&nM<`*zHJWKCc-7&Av@^JUE&rG*)3^>AbX^J9>`wlNpJ0w z?p&t*qSb^Pkeu8~X;Ni8OngdCDkH1_&23KWAc{V4uss6b&T0B#Em8IN{e=ouOtTte^0ja9Qjr{ zvZDubj63C#KbQHjY~iW(TteB{3$fAoi@aV7`Bm=B zg#0e~MnL|M7j*J#IlvzN6n{?TFX_Q`_*<^EhP;*Rb0F`;YzY~wMKh?zX{)(EleD^6 zVzpt*H_MGg1&>Bx#lfRMpMb((<@F(;Z_BY@wS~0Q*q#%tIetD^dsrG+cj7)Up!F`W z{(>D~!+tE&ICm+qNl|W!rj<$-%IRK_-L8=9vSlyihLm9L zrX);;+>!%PklPYyhkP%EJRuL|DtF%_N$m@HDqCtpo=Lx+uUw>EDk_%sh7(?*D#{lmCeq@+BJ-0)1aj1M5G;7|lj~0>GfZ zxN%x6N(5UEZV0v;Gac+yFcb{`kzvtm7eh6w5_ei}TSYK>5aXnOW(M0p8)l&V;xeQb z68VcKfQ61Sc3e9b21_MlVazfW+Jfb3^#nb8_=6QYa6448bp(Cu@oJ5*++eND`@y(R$P5?W+VGCW39R+)Q%Tuf8Yld6DtJlE(8{)vYb(g?F?SsLDg7nl-X#);B))^eRhS8lU3r|4Ci3bBG zS?*qhq{#3KkSX$ZHY8P!1VUy?9meGxX~7EfWobBMk%Y6SC6Y*IE|)6|xK+}4HDs*> zr$RP}jlw+`Vbin>+2GES~~7B%_8vj>^*{ z`U!uk-z96*&I9_LU{AFRbIIy7@dxX+)!_#rf9p_#R9DcPrrp)0#|pDR+hai*6!qh z9Mo<*Lk?+udGsFEF879<(Uup0oYiKog`Cq$;F_9B;R}q3qMLab6n}gkEaAa*Dm5=B zSh_P`bCj*fm?$@tZYzI@@mrxKBeLST#h}mqVqj&He)s)tCRojV23TX;P_X8glfl~O z=)t-hdGrUo=>^t5(Hsogt%1!-?FCzW#&qzmm0)XMmTX(^GqBwoUhQx<2J94c80_NQ z3GCK%$>)C6pUvzQnsg7RvWJWUnREv}sNS$W8CI4^BRKrYI3ZiCBGmeaf{$(JCX%am4-8`6dIyCpAs zLcWyRT>h^_xNi3(2lvN)>ADp1oh)QfJdm7>lShKDOyP@_dUYT_%PTtniA?f+5X(g^hlC-#K zkcnEbJ7kjPqCuu;ZO1{TX}?#2OxLC{*k)=WjOjVrh!v1|+7NE#1=@>^kj2{KD9946 z9e3X{&DIdIQkxzJS*?|y1zD>Nm*kG1+cAy2h3^!#&eCR=%_gCMLtPSpc5 zK~nX4RUtFp>Rjo%TUK)5miUFVz$1g5`P^f5=Kb zl-qZ;ettbX&gu6UgBSE5dg7A)Vi4qtzO)DA zbA5dm$PN9gQjlAEu7Z#+^rU#mmwHGE$X9xO=I-ei4@2(j%hMp=>1%kfKG1J)`5);o zn?ruo-)+aJrpXlEYfIQP9>BwL7ag3fx9%dM6tUlXV%n+Vue9oh5iBYaQ zWVz9lBU@n{<8iUt@bH7IHIgPkHW+KUA2u56T0piKx4S{M8v8sTJB$%0AiIpI^vfP2 zXbfbZ@fcBS9x&X`LJk@}^u%G~8*ZSZ#wd>Zgb~Oi@078#7UYZ(%2hdMOgIm@V9fap za>?j<19HWrEWU9Gl zJ|xxL#q)E9naCBJWj+js%rRH&gUmBKaHB6Uo%%u+na&ZA&&-)Fkfr8D?)T+pCDvPM z21Y^Fn7bHD>&)jvY*75UktvGde>2k(&f`|5%~K(_GnK|5)%Bw4b#<}8&BzwFUcWeA zUE|-UkA}jYq_xTdN!IRiY!kFw9Uv36Vw_=$)_50Wl6H9=WU_XiGDTZZ2QpQQX1q?* zw$fdx+PLbF>DmV7W@xwB*i5ZR7+$z9)#|i?+|ZJjKtB1RzF<|ZP@x4Sz+yQ#wBn5z z0ItVofF;gy!fuy&w3fNC5-huOhhv&WIs_tL{KWyV89e1_Ks zecjo5_0MyGHQEa3_tj9aroFYJEze&VvlX6mH+U_hFDj1Uf#Y3jCg}47t~DzMjdYZD zxzCk!ZQ2xcKW>2DL#~2VNAgq)Xq*Bz{|d8L%Te-SAtXw*n-99-mT7*(&ECtD=SHqF zy&mYhjE=9mrXg5u`EIcKPR_Z;wuNBbS=`8tqIkr2bsh!wo;(;FFs=$X@)+BkCs)|* zN+~l1vQe_I;$FFeoEk-7T_#$4uLs*#qKCV@J`8pp%!44br-!3lp3d;Encw;sXs4o0 zIkHkkk2A*@m;M_P))Dd}P(kV4vU(VC-FbssBdq+PGe0 z!GS|2frI`;Ni|mA>-22bi)X=ZowtJBE9C`yHaQ4JjUEKXsMpy2)JyDG^$I&7FwyGs z`voXba6}%kP+AYLa14*hV%{wfif;bNNS7XNm7XQ;<6)RBW4RJ@BzX-A?UH$nuHEtu z!TFnRZ^u;m{I=i>{hn7<^4K=Hrq{LjH4R}DDi zzw9Mocm1Hgl{}*CcuC-IS<+ znXX}=Qm=pZ^Iv-jV;O9}dCJ@n@XxdDvY)9-_+KfjyU2(3Z*n!1&VU(4pONhhf}MTVx#WF6k1nNIIaz}zk1faZ2*6Z$`%*V zbFhE0)3xD|UBZK9c@ex`z*p#jlw53&%iFw`c#M@9W~b=kVPxD2lshyAK)|5&prC z0Hohn{JtnBmHq>UADOU%;pif4;6O+3>bq*fdS{r0TF3MojBTMkdq(vCc>K6cw)aQP z4(yNnQsW~(vPC5H{ zRUE%38)fqfAKDLHq-%U!`W5^b6@Q!LqfB>Pi;IX3Wd%p7e{{Ufiw?DUA?ejC){)>h z|9jz%Vq{gkdBw%581#yWa_p%ne6IUGm)=JD=1Q+&rO{O=?pns+7{XpyTbmc}(#2+l zEh21CFO&@J*9%90Bip-QWUQ4A4GW8l7;NSEqrFxd9<-7)BVgX=)fc1x*QxY>w()5f zPYrktl>R8-c)ez65r^Fpmi_Qi3K={8TJ@_t>RamlVPT{*Wyn`W{=@oFj{26mWhiew zUs`6q-utk=^?K7%SF4~yGuCep`|t1G#aiRv=IGy2cSk+P)8GFXe<-eJ#b2xb7moUt zx;rj#jP#u~{{l$!(HnnR#j0Cc?tNr)S-;U?;3@$^JYS?cWQ->P7}Jg{_ahWg%k zkIjdrR=ITRzb`K=`!-zouz!C?eM{9vt1{H8XX*Zo^&Kx(tk-!>_(tr5hgHuq9YNy5 z{;k*HmS(pKIyB?{IpwHt#gom|QP82A99c`O^|SJqkYN8-ee3;=rOm8@4$avA-3;|# zyQUYkl<#*wd}QqZAui^?U&pq6|9;QELVB%?<*mG>FHwwd+pYT6`^&)pWqs~%#;#T0 zdfyl9sE_|Jp&pKH^*;Wsb;O4}%70dU>wTbq#q@ed)8##_aa-zy_SuD1-{$Wq>Yc7u zKMw2r{;hmARAyUNed~3&v!lM%k5%3=9V=_g<>=p0{Jq_(U;e!%Jz>?iw2-5IhGI7U zI{+UU+qLSYU$xoFeWHF}N5wvt;~f<;*7yBH{hQU&D~J`?pQvB|6ZLP^NUsoYIrbCv z`F@*Y$~e!U+UXUXZaFGusLwilboxa7;5_LiR%O_5Ry|AmIO?aj_Ag)MPcNZW`q##k zRnM|ApTR}y((5MaC7sRml5P+lZB{&4&!0TrGPp=p$VA8Bkv+r3jQ#Vt%}_+u%iB7= M`a_4<;ZWC@S`OxqBgpm%DiP4g)2c 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 diff --git a/mini_serv.c b/mini_serv.c index 7c5b10b..f16e67c 100644 --- a/mini_serv.c +++ b/mini_serv.c @@ -33,6 +33,11 @@ #define BUFSIZE 42000 +typedef struct s_clients { + int id; + char msg[BUFSIZE - 20]; +} t_clients; + void error(char *str) { write(2, str, strlen(str)); exit(1); @@ -75,10 +80,10 @@ int main(int ac, char **av) { int port; int max_fd; int ret; - int clients[FD_SETSIZE]; + t_clients clients[FD_SETSIZE]; + t_clients client; char buf[BUFSIZE]; - char tmpbuf[BUFSIZE]; char msg[BUFSIZE]; struct sockaddr_in addr; @@ -99,8 +104,6 @@ int main(int ac, char **av) { max_fd = server_fd; client_id = 0; -/* -*/ while (1) { rdset = fdset; @@ -110,7 +113,7 @@ int main(int ac, char **av) { if (FD_ISSET(server_fd, &rdset)) { client_fd = accept(server_fd, (struct sockaddr *)&addr, &addr_len); FD_SET(client_fd, &fdset); - clients[client_fd] = client_id; + clients[client_fd].id = client_id; if (client_fd > max_fd) max_fd = client_fd; sprintf(msg, "server: client %d just arrived\n", client_id); @@ -126,19 +129,20 @@ int main(int ac, char **av) { bzero(buf, BUFSIZE); ret = recv(client_fd, buf, BUFSIZE, 0); if (ret == 0) { - sprintf(msg, "server: client %d just left\n", clients[client_fd]); + sprintf(msg, "server: client %d just left\n", clients[client_fd].id); broadcast(msg, &fdset, max_fd, server_fd, client_fd); FD_CLR(client_fd, &fdset); } else if (ret > 0) { - for(int i = 0, j = 0; buf[i] != '\n'; ++i, ++j) { - tmpbuf[j] = buf[i]; + client = clients[client_fd]; + for(int i = 0, j = strlen(client.msg); i < ret; ++i, ++j) { + client.msg[j] = buf[i]; if (buf[i] == '\n') { - tmpbuf[j] = '\0'; - sprintf(msg, "client %d: %s\n", clients[client_fd], tmpbuf); + client.msg[j] = '\0'; + sprintf(msg, "client %d: %s\n", client.id, client.msg); broadcast(msg, &fdset, max_fd, server_fd, client_fd); - bzero(tmpbuf, strlen(tmpbuf)); + bzero(client.msg, strlen(client.msg)); j = -1; } }