From cd589876b02918418d1253f35b68349522f82294 Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Thu, 13 Dec 2018 00:40:55 +0100 Subject: [PATCH] Some bug fix --- build/modules/configRead.o | Bin 40328 -> 40384 bytes build/modules/connection.o | Bin 51464 -> 51440 bytes build/modules/ftpCommandElaborate.o | Bin 70936 -> 71064 bytes build/modules/ftpData.o | Bin 44728 -> 44376 bytes build/modules/ftpServer.o | Bin 62456 -> 62592 bytes build/uFTP | Bin 195584 -> 195664 bytes ftpCommandElaborate.c | 27 +++++++++++++++----------- ftpData.c | 29 +++++++++++----------------- ftpData.h | 1 + ftpServer.c | 2 +- library/connection.c | 16 +++++++-------- 11 files changed, 37 insertions(+), 38 deletions(-) diff --git a/build/modules/configRead.o b/build/modules/configRead.o index 441ccb46ba7da63c84f0b88f9aea83918a7ba0d8..6ff3bd8b9a992a0141ee51f3e37725bdf2dfcd1d 100644 GIT binary patch delta 5014 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 delta 4887 zcmZ8kdr*|u6+d@*?HU9Y#ml7{!6X%obs-f&ON5Qlb)D7-YSfN()pSOkYUE{E5M7=k z@?4I}LlTP>HIEtzI+Yp)#*m6hTj@+jQIm1om`Y+IO!~6MN#}CU*TUUD;QW5SbMJZG z`+d7T7fkyvnCfFqR~kEJ-8Hdc4D-9shC3hot$31EbS|HDST@R`&5ie}FJ$w@W@! z*(YRj)U#8PU#j>wr2S)MzbWk%%6?ngtCam4*?_gG;&(>tUrT-JkY4Kvyer){5;$8f z0X6NM1epYWD?t%~^Agk(=#t=91b!#M83Gq$LI8RQcrKNM0wl+%gnDEOYcs}x^#ppm zf&ey-1(^gc%QZy=-j^LNBk+M#4ifmiRGJ7}nJZ@~fd@eJ%ZZ*R>8f0GgTO~}0Cx!d zL4tc35ZngJuwRv} z1U3fj9}CQ;v5JYJ-^#Wc(PPCYuZ9~D??{uP`=m{$>@%5_JXx~-ySd>2lhwAL%giJF z75H0uI6!oe0{31F0f;3qv|8Rg0$<2WaDFBPn)jGNwMQZcl3X*nGvy~|13MqAjGHRVp>lJ87t}wP001EX@H0%vvY zMV78fI%yQeF!$Q!=c?SmVwT~Jl2Z6g)VjoWA<>? ziu3o_qTZua^UdRT8V<&iJ#*L>*s;gOmY{X7jeUsry?JaEcI~yXi#W8`Vfsf1KIb{X z@^H{&V{vFHa*ipnq6crjOyFX@j`RFThu}{%nY-1BKtN0}AMp5DtT@#hx zZOuOsy(KPIha)8}xqqp{^!G4qDP6+Wqpy^+llZXI#w-|D=3t0fWiB=q2gTYJ&Xk1pt4=jw)_{ps9=KOg_?hV_reD zx6#`s9I4_MU2PWAHDxCCbvD|oxtOo1#!QxARy7wZHFcPxZ^X80?%biN_vxWhpz#N& zXB8U%7WMuhvKsDe)70to1U{|tA%rhz{6A>|S8!7e7awbC4|Vr1=&j+-2b%hvYCU|b z@k4|yl&R6(RyyxfaHNKdr!=*cV#Q-jEq6Yzsf+1OEYtYUY0s@1|0eZ32a9XDvq)2u zXt!#OUre}3<5MWN%abB{w)SJ51eT#P79bTT(-{>SNQ zQLXWZ2{&qd8GR8srg&_uw>rBtA0t-3#y?BB8Sj20x0`exhH#{wJ0EJR&e4grP}hxB z@&|?d2#x<2RTPKmUM}Wq>MJx^Cl-6TSgxtLRNV&b@N(y?n!142?$!8PbZ%=kK9Zgi zucNhri_@A4ROd%%Z{W`Bq{;;3L64*+^X^Zba%=$KAk3l8vh3M?U>?m3tB~o=Cgt7>On7Z@h43+s{Ryv zk&CZLHG1Wy=b;Hlkc&wXs&+%YI{JeT;OS9y9;rrWE>mtPn0}Cpm6~eYqFgLK$ejh+ z&gbd0c(ql=`9G@p-y{Ds=sU zGlF=dCv%h=%+~ykJ}=Pt%k+#|s(8G9$SPjZd@|@3Z$oyNv%*es*kfW>u(|0w`M24@ zs?gV*WJ%kpVxPyDmLzrq*R`awXRx^?)%5Q}c(Y|8TaDsKDl5lzM^afVHXli~tWQ%* z7NPG*5<7~bHPv)=C0bWc!OYfJb`6_bQ&}1gwx*hfS7Fp^3t2p_do9%hjcVOx^fgWY EFW8F8CjbBd diff --git a/build/modules/connection.o b/build/modules/connection.o index 9131847db45be4e4876dd8a3489ade7063e63aaf..ea5eccf95064c9d3543501b61ec9a6d3998c366c 100644 GIT binary patch delta 9941 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

74E>$r}+%tObscIW;8f2OzSf%_cg;qwUMJfD2l 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 BzfS-F diff --git a/build/modules/ftpCommandElaborate.o b/build/modules/ftpCommandElaborate.o index e6d2fb209bfcce2cfa77a88c338e0742be8aed0a..0dafa0d41ab4af4d2c4a870ab04034fee9ca93fd 100644 GIT binary patch delta 20117 zcmcgzd3aRCvhSYB1|g71LOLe_l8^)mTNnWY$QHI_6eS=kpjQZjfR`<-3imn*qJp4g zEMx!?$OC0jln`W7Az@#IurCS(kR2qTFyO-b`gHY4r@eW9-S5q(lT*K1`d8J}eU>@Q zS>ZS53%|Vjw%(zh1}&)%@|q-g-fc{Mo;9n51n<)p)CWa0n)(V))3y}hHui{MUr$0Z z=)sH+@@BwG_9G6IcjlbyNeCr`fX6=>hWd4)zQUD$?YQd=|B2KGg9FA>ADjtjOnp!- zusij^%Yp5v4?Z!!PX*SczQR8PbGXA>RcdiXl~&XTN2@fWKB!W)O;tHkhahmoFdnfg zSA9}7j{4xcs!vcKeBb(c2(2;C(>)v+8`YkqK6t*`JJbiKtNloQus$T2`rv%XIAKvZ zsrp=MB{e;#Kg5PM3B#eL=VZha^0tqTYXmejyn;ccMOM?5K?+?8^9HeSg>#UJJ4vqc9Wyuo2Y+tzGoaw7g7khb5x(K1)yfdbES)VaIFD{Uf>0Q=j%*hy9gho8sctRj0yiQZg&r0O~_JgGG`XT7F zGp831Q{04Aw-BBgg-mB;vK;J#%nT87>ffozbO%6i zv?N1um2g>5Oeka8PS5^ih^rn#heCGK2C&f92;!o~bB*(;3AGl)T`FB*qa_2nAuT!U7%z;O>>r)?;#l#`FE5knrUWtn@ zpM{(rd=?yaBFo*hDC=RA!57GvMk@8eAJL7J{I2}RoHL`Jv3PHe=Dh!i)_MOk=KqU# zUXuhkU_?+K1k~mkh;LL)CcWb)r9j&QPc;&C%uf(N7WP28&Y54`g)!DnIO9XgNXW^ zN_K-tc)C6h%dsi-o8r+v)H3i(7IqBUSVv>6qc5$ai`G%C2GXNf1AfNIZopIL@xL?W zlMOPd4;nP&gkNrG(5W!K;Yzc{8Po@>oONMlqiNI!M&m^4gLaK$sju*r#!hj%6eh`q zwv<1pto_cMa}eZwMTRI`^|!tziFAaS+eyTHZBNxp&W0J|7~+vQ!@9R4OmR@2PjG4}NL+Sh>G1 z4ho`bn{&ly_MfeI@joz+H<-t#Tk+_Bwc`GMP7`TN+q6q|3&jx@Qvz z@iR}FLHt^SR1;^=^3T-5&d+96_pk4adE;}K`*IKW+rtSValzao=AB|2A@#-ayBu#S zj^E?Q&BgIle%w+VPvggJ#PRzBLI~+l%ZxLF;~heU@BvqJMqwt`bdD36ya6G^O)^mO za8*WAp@OIFgk+*HJHSpzZxp;e?S$l@Fz0XxA*)cB8&!>vgDA}Vyapk0P7)MUCx8&U zN$Zp0)d`8=hrXUMpXNFUi5}w~GmOM63g$V8JQi~rLE?A`KdvT@KdWgYBvc%K&haR5 zyp)r}`Ykt85cmpy+)W&R!H+Y=@k)N&OB{bSAjC~bZ;|pUuIP<*TFr%*Q7GgU?2p1X zi@AU`Tg!z}D6Ho~4hkE%kcYxXE-XUfTQ00ZVUxRkbwY|z+Wch=LR!WPKE<3u|DK94 z5QQyW{RkPN3U8pWjr&YRVLPwz3>0>9&3qJgam^xAaFdwbJvkv%?cp<8gu-6#bPk36 zd;+eZ@B`E0 zUO(o{5o`2Peu$%==f~KhKXX>tmX}V25fUK=yv&J5`3d35^)N!>0)=pOKy^auqj1eV zCWMfdC|&0(X#Ha(C}?*e5w+!>wRvqH*-20kue4Z8H=Yk8qzwtJS1j2}v99W$WavumWF8H@5hl;iyQJlj3z zP>z@K1Yw_q_6Jd459K2$*GD=hMv|bQV7}hOJl=<&1~7MQO-cK{AD=awr?+4&#Y`#k zQrSG+#Gnt*cnAht=Erw%`N^=F;=C1pnIAv4dzMWQ0hgHp-FD9s3*aH_o;jAx_jJ1_ z5A$4s`dui0f%1AyE<*WB)E`87CCVpI{>txE7;*E$P9Q-+WmbQGWD=8~G;4xeM#@Tk zWTs+ON;ud&y+mndVWoy)X|gKB8*IhL9d{Q9Io2MIzfil?1EAi$>|vMe~q;Qi_I~Ujnys3FdBBt z2^3|w?1fdYu~ru>@4Xeh_g3`YuX%4ay_*@b5}PY}Z?5QFta-l=nS+`8kmdcpR>${E z`|>)@Kv~Y^2Pn%reu(k0jx$ljI_6cZqeri!+svhIw9Lg_F&8&R!#d`oDC^h>+7Dqv z4_n@yv|Kuw_T{;BL4V}h71c7ebd+Uk85PO9VDpgJu;(yF2f4)>aC-=Qy;qD(!9Wu0 zaf>rB>KfdVVo=^Ufu9&^p|lOPQkENFZM!%z9Grlwp%}7Lwhby*;bubmzL9vam z7Q1H(uC=W;-nw?rstU4APLNRBJegt{Y(wukXuTcf`6%zO@pWN`z}KVQx5Tk$kz1Bx ziD@lA)vRr4yv25j$<|sY!ok{=J~#bsa@SjG4q&s+KT|4%cek_RAGP97sTf~)Sn=Pj z82>#j{-6r+>ssfx=Cx(92PxqnCj>pL_=79PAEL!?0zLl8++am(qC_KvHbHM}_Oyz@ zI%>g!E09ev?+p1B8m%MA23HI(9BghGKOEx^t1BmLH6A4JzckXe#gxT`#C2+J!uTn) zO7F3TyG|=^$ikz1@!d2d*i$`gu$OL8vB%<8@eAem3|1%Jrksv-j<^SlhSg!r8uzv} z?rwS>jt=V?(jitRzKNcP=EFOM?-X**LYC9>aAbI=kfw3cYXLnEi6c6N z%(M^>Jr83?^b9#`A(QBNI6R_LNV|CH^%6Y~2_t)kd}txD^gK)+*(v0Vh18_y;n2uV zAx-K^ud4Js)E$*X6Cq<%E%(&Agd~|Y|B08-=IM=+xEkwK&(xh2(vS+$Fp_90-%@9% zYk-(0IzKT%Mt)07&K$Q0ZQ9#Cv)uIvX+Q|g;r@J+5YcnZRqk1j;$(imW%G2X2O-(9 zVZvmA@L1y}BoW$W*K*IW#(Jhg7S9OYm_>IX^%p@<8YrYp(GNq&V`ffHZYn>1R)dQK zoE64!4krvn-C%b_+L9t{jUs~j21VGC!fnkW;O2y+b~OcRBH^|~^S?e3 zLxTFeL2Q1sPr${12{&xXrWOAVA3UCay}`dG^l=t;d*g+Oh_ORP56T*tku|2{pg|)# zjUJRWcF@4WRWq*8kj#!xckcRlW?Ij*XZj5-oc-ZLe@Y5JoOOwIH9%H17GBH$ z+(A2or;r)Xg$fT|S${&va6EJT1BwfoF;LUKhuRUQb}MRm*;4rQJrbY&5Wj}elPp z;0;U%wFHBeK(&>>I%d3sT5hZs z^cWPZW5&5kw6~yi9W#8DXpt#7E&K(rcW8w^8sNRn*G5y@7SR1B5h!00qMxgi#IZ3s2;E3x|%$~G_~)qL75eiBgY@)^W$WX66)+gi!z5%k!| zjHk`Vg~C^@f){c(GWTXh+g9-n=Bq~8J&G`&Pz6`JEe&yQrZW6g!PS{QEO21oI$VC{ z<)&b$@_$0X)p?z);A%!cK=!xHbx+Z%8M*L;BWGwkX7sFrs~NeW0&g~Ukt!ic^cvdBNp1@(}cMjuYwBdD7^F0A& z-!a+(;=gC~9sX@N%$tJpGl&~6GYrW6o*A<%(JtUxddRd1Ft1cal{zWil@6ufGdkA% zUIva$%o%B3;t5N2g)dcbe!7!u_%x(#VlF@PB2svDRsoQ1fI*%fnqO~KXvnFOUp%=lV~rmmO$;3#Is6~&i_lk;*1(u$eufu@x_1MrNh zS8twzyAJLj4m^gZ#ZIH)x3tH*KO10Pj2IE$uFao z75Xo<>4-RI$Tvv23YI|Dc4jPBywo|`1fK28eMj+C=P3AbF&2-h?oPE7yoWMYGsI=q zOORV@4VQhDE^t`4!{O|!*<3{5EDe{wBcNahqaQ==4ra`+#AZ3SF;1aYpSvbo~R_wQvwhBTiT<*vx^z4v~amN z%r{WHi@7c-LDj{R+M>L@)V3S0;A#;+f%x6b*k6hEcdm6;f1=`a&OjzLHC!fK7jeCC zEj0Um7^jVf%Q!B9_x)R-mo*0&=v57ufkq*&6WRx9dzh<4@lw0e#&3jhmsLyroPw(* zE`a_c&tA)4Vzb ziRk&J%~z(^R?};bi5%yMGl|nh4!so)&s2hshaUSF-NwI-KKvpaefucBdm(opb3a6_ z%tEe0KYm%F?5zEeXRwCLvw9Tb`b=%o?Ej5%b_g8Ueuw*x;`_3~Fp^(XBlCYKcoPMG zMZtS2cs~U{py2%#{3(8M&Yzxg(pidPn^61>zXT=wnX6$t)6LWlP`tV;xH|ke1y@gt zv%&cTqaz^e2gaM@2j*JezC5yec|0Jk99J)=Kdb~_3dKJ#R~7z(2$qjmSe^vyR)RlS z3H~L-A7FHo`F)9h8@2iRP?{qLCp85M4lrZ5rhON+Zd1DgwY=u)ezplp4>0!)MXO!} z26qu7a<5mFTZOfcTRsbRYCMIg_@9(vvB43^-0Pqc)PBjF+Htuw{^TDxDUVmoF`x%4rac^@@L7Bo*a9rp| z+d}q*esn67Tu3({9-y?17#Oy z((91>GoxR@+@I5FIF$aJLdSvQ5;Kx8W(K~lDr+?j(k`XY63D*9Xm^-)sh_b7b1Bj+ zdjY-7jBeQJCpGN?a9&QQL*dQKDYO)pUrwiMq3m)B?Evvt(&-`?dL`Wm#9js%UtLOfgK;e-el3o;uzE$W=J=@o3+Qo;xz}mhKwJb{HT+$y z;Qyc(tgI~w+R|@g3toaM*%QXDoSouUqyUq-! zrcK9PuN`DxXU5Z-_8Q+z`P;3Kf1SAoY1+Hkb)z-B7)Nw#_#Dh+2GASKn5$`P!|lEqN=3p0Muv{BfECn5eeb6?W5voMQ08ZLh``b)#Z z9 z-8d4`%9v}Crk#eT+xIlQEk*+kua8T55#*OK_exFM6SLc>;k{7aso`Nbk9Rb@Gv@fG zh9}`l3=)0O*Zc>fe8yJd^>!>aj4Y)c12xs~`IugshDYKxLMC|bFe6LT^4H|~XEYSw zVaD5L6E*Gg*qZNa_;QrzX?PE8uN4{| zjM)}z_}jSr_6eN7{UB1BgtuxJcuMX&nww0C;vOnfor9@{YPb#k<1~CRUcNR&T#nuh z?}IxEJj@!P7axfb(i5_NW5xh2TvHroG8hJZUVoemrU#qKJ*BN(tFH^##JG`wxOI1j{A(Zf`WU@=!}?* zFdZNDyktgry^;uTnh~Z#$$dt>kanLrmui+napkSn;>%Y?cAN1}XkL=xWi$Rg9^dfC zNtaoS!(OWi)W?iC)Jp#M@v&3QP%kSWc}7C+17;*?+JA8~ z{twom-~n@X*0lFf+Z}Pq^C12R@ET-4WX3qnOY)oo`41VL1!)hNu~3U3-y2$MM%Z3S zgd;qH^P;AW#@ha(#gy+T1whvC%vlp(F_3kTtP(X`?(5CL`8zY(qgG}*9)CD`fyZ>c zruoX4<278)$h#UY$C?erzcbfon)aNS3bIDS7vPCjFOwhFVaCd5gxQyw*9}l}g$)C)4Uh|UG7-YsAt7&CTrf9hA&smW6 zCvz>5f$N{Y$&>wf^gr6SAWhu2?G8h!~!Oh8=5kuMvz*6d}fE`gU* zm${06(^>u$M0UhrD1F4-6SQ!5aqpb04ZjEFxthHkewl{L(bs9X9DRqtKb}Ax?qizG zL_FV?A}&iH-^TQ5_L4)Ocp=9svE&e`;gUm=z`cQ#I@~QZqk(v8>wvfSB%QL~pM zUej<%Vw{Fc5>o{3^>PxkG^4NZ%)JnCNkYEPx>mE7B(`g~BymK;<&Jql;N=(npW(*v ztLCs4?-FeIhLY^&zmRAM;*zL*3pdf5Yop9)uDMBGoxKG%%3QrP^+SAE^Qwk7!6qH8 z;a8D$uGe9w%=k!CAH}8hsW;6|8C@edZPlzKr$c5CT53`=$~3DT*rR`VOL(ksZN|r^&a(X>}l+iS=lUsE|D_Nv)JRiI&f{d;tNUj;g@M!9Wc)p(RE#_ksiXdAw zE6JopFe&xM`%`Az(3rf9*THsgNdRR=7{2SJrxWkZ<=#$BJsO*%jkmy`GWwhdGC;GE zOtQ@&&Kyns5w5#D4VQ0df8tFGpp32-!HYF38T_CboSyUM^E|Gjl`J^mjhM}w6-b%k zz_W;+W}KIDb&95LiA8Gfb#nDnsFuN>#^6~Z_$bX=GIWdJGd1-$*z)td#etO30uiK0 zvywp$m_g`SZ+sACu4@{TJf0ALCW!x3M&>7XiBJufQDeQiK|F6wJ(Fk1-y!rC1X1S9 z)YLNSD;h4N4l|=VCu-^fJn>J{a9k4vylGV^bFR?Ta z&zr{8@^qS`srPuZLnw303yva9Ew8!c&u22Ky!!LQol)ZQsy0!>i4aa)|Z(w!m zFyu|g6wPR=*IAu1m%LNjrm5wf-bD?Ucck)lb;)tO*HfJ`L*8(A#`%}(JKkchmX9i? zXzEGcGOm`7hPG+ymFwbbP)6xgZ>vz6T4fRb_?hW_GnA&%UEYFF+Me$6mWe-32W?+v z^0Q*%FL>W{(9|lo4+`;|cY}kbRvk22h*fOfhYtFLZNymb<6*QNJ?PC2qwT9K7%SA7 z-VI?i)kdm$?}X8IRd4-Ez`;@8*5ULC`oNnVPTSiOKZfkNk=|Y5w7#wW$KE^Pw4E)g fn)mSt+Rhd<&pVp`%~|YS9YNdCW!|y~`q=*h>{@Fw delta 20041 zcmcgzd3;pGvhJQFWPv~?3!RgIWCDS(8Ag^6_5hNMpb$i5yM!PLkwu~)TwEp**$fC{ z;T=#E0-`KeB?crxwg^IyMS>7^B!cYXL=@SS_v_Qulb*ge|GoF-r^BhQs=ltOuI{tU z$>MeXi`V)uOtc)Y=W5ZBdfTzxOQb_PNZBIS0gT_!#(J9)MBHYC_$ECf%$zhFrIpf{tC?H4sQfE;ELcB>Vc!dZK(%>L%M{>k$MEdfH=k( zL%8aLkT~jrEg>DKr|4#gMaF8>=}bNFRGpdB1E=borXDB`ZB9M#Q|J_tP0_1$mr!py z`MHCkQP{&i^6O#gKJp)7DRpHKxdUv3P#9^g?~N;W5Dd4*P!CMCHblR&^!deuVVQLv z7O;Q##5#hZjQ%!vVL#X#-ULnWq|Yyz47bC3_zXEV!sa8FL?l*^Hvq0h#8iuepk5>& zzD1-yd;^#m*$1xHYY~Cr=jW!|2$^x4)|@j8PfgaHf;BrhX^+31wai}j#pFd|gB*i{r>RV9{EQoDHJ@7@WjekeCtmc`M0XeY^ z<&>lcOoN=bMCyTe9*RS-jDvX%Y|>^=?lkx{E=H#ala&uxpJC1iGNlvyZ7LM+<(&N&d7z+Ek85Mm(D$s z;^B{0bEyZMt((|z1?4Yn$9J^+M~l<*=fnjPlK<$2^u_7fJ3K|ZTHD3hBAt4Qx+f)A zWS{KGJq{D?BNXE1Mcp51E>A7}!vo+CdmQx?ec86D1VuMl+w=7$Iy$pG@91;Myk_T; zqv5CahIwQ_R0rPu9P8OZo^pkM>*Q+xSChGaadI;smZlv!OOK9x*0Va^tnSbt8{d1V z2VPI%9;;GXQV*1;*u0x+e(vo!Sf9cj8+GE-o!W_SC!;%YWM-!%NtM6Q6Nj7cQPYmM zMZL}u)B}w>e@8uVqw{gB}JAmKX(B1?8@6{Lf1#D!9lQvgGHCR zRtDDMClEr4${yVu6kpMp5Pwq+;ujF4j(Mzn;)_0hVnE%1ID720_uK6ZY7Rq^W!$+cn&{qCywWi3MHgt1JgI3;~m3@LnxHLI$AluYrDqOhdu_LntAuQCJ*ZhmbN9mb_n& zkZ3yz3VNs(A%139?@y>pNGw0}42)em#Y#xb%P)^7vCC@n6l(MFN$d(9VUWmaB|oks zjz5mF5E3SiS8+UA9Dl-t!=M!)ag#%o;Jdgx@M+li|C8SnQLP$NF=!5I(VY|o09xAo+x#d%P zm=BA`KPc0Agbx!<{P_Hn*rN-r*d;-JvB$cFOOF%W3cbx^f5CdP8TB@dc|1pyOyE=z z=BPrDMb%h%w97+drLj|$uJ=Y!#dL<-uAJn(3LAzb<~ zoRGLcAzU6+mykphuDr}wEeg)7d<7LZBSArX1Bs|D_iV^(`@oL`1@TIYwRFu9PRK*N zB6LK6SsDDCGWCSerN2ZF(g-bf5kmZ3tCu-_f#ub}_&UT%EG`mfdOT-x`nxtPa|+;j z1j-~Z7J*_3WC!qN;_o^nffppO9XZCCfS>D7rr;cp6#LP`=|#3kjvO@Ep#!^?IWhf6 z(?ovU{8HUa|MN(hex#YcpR4#qk-e1Hdu49x=W?!o(Uwi9VG{be%3c&<#-O|(<=6l| z&wj3RC^wMuRAC>7_J>e!L-`2GjWL|#FOr}jzTCt#{^sxGvm`$s-~nA45hWA(&7WIX zT!Td(QXC*f-Uk*}KM}_7Xgn7ASNiikU4GKNZBpT-cdqp3f}d;kRKd8?Wb|`=?3Fo% zpKGyK=DWO~YawR73iV|ue}ZzcChtJ`Q`8?4a&x*Gf#Ybf#ve;Pl>`O-?CtpZkTaU4 zw5l)bGT)5bTbKD*h(V$d3s4-7g%}Q{quDd>d%cJIdJp&Y9)aRWL6(W)Xd#Z&ikt#T z&#`BMn2apNmpjFmyR$EM7hmqK8h1E+_#AUC_Hu{I*}_E~Zo2!qKE~x1iE=T@Q7CUg zxxQI!iz{8E!f?1ALX7t3=P8S809Ng+pSjCG+vly$KU1BQdG~#9F*mZ%*7#bM&3pdXC$A`2+tpFJU(=Vc}Apa1W%!gi=khI{%(1%lv!! z_FQk7V7yGK6@_lub(~KiZ4bGBN1A~Aj1pJ=gf2~wm8nN!q{X;>3J*Wm2HfrHV<`Kl z^3xDQX%}jxEH>9jLZkh}=6Gl-F3~M;CYw2HH<06Pv53Vv2N&lS3tz&1uD5Ul*k*SpDGT7h)o=h-24sr>xF0SpEV_f598u zGBY;sI$CCudE1}>Mcidqm~bGN&(Do-f&(8ret~F^;7tHk4Hx z=}R`!mu!?T*|Qp1bJ#kLIcIyxn){M9_a*D%OV(8*3ozC4li^+Lx4rZMNS`jw*TTW# zl)WB`{KLJ?yA|2Ql!jTpF|Qa#%2~Qd)l122@3qvNhh%jwQr`_p%X9+i#G7gZ zw#5}H_Hf)lu2O!x;ccpG^h+}W+)k<>c)~;MfH%`i-f{QR3g|XrU}$n98Ob(U0Uu82 z6*}9CY@ikJ%YIM%*27A6<*|3S^-^N z>=oMHCcTEy3Yhoez|fgqq!F!vYcKW+J?cfGXa#hh)GIV0UV4Sl3do<7KpR8hqz2ub z@q{$t<)>$O2`#R{D2c1KK?$brM%k;aq8P&=nV|JcTo;teqii=Bew4Y9BnIfYxU z5Z9xaXD&=vF^X^UJ2H!_M*_T((+IJTgvSOaA&t#A9_N7kEcH&v3~vOF`y^qSTVxXb zxwFMJQbdE&Xdw*{?J$-!G&Cr}(l!FJrzLb^mR6CL zwh@*l=6^#X#|90VMlAkxNUaOCre3&iY0fOoBQ0$rEeR20Ug2NU_}A1SLBopnPkTDD z?tq?sd-r){K9_nHIHPa66zV@x2SQzuCp9b;D*^dWF{VE2DJ+g9yI^ zypP2+SC>~m+9LH0aMhXX-K+0cG|b)5pGLtyKlqfU71@?1S%T#{xd~NE8BF?UK=34f zgG~s@hP@wkH%>$dN$wnzEQEv;N?L$z8MCbK2A!6DLVH5xGDb(kon=WeE6h6)Lh4`$ z4nN`Wc^vdy-iJD1?(!tdx|Xncc^{*!wIG-0_%mo521Y@WaWctQTgzWC#Y0vBi+Q1q z(8?>e7O1_{2Hq`rn7W{}Ac=-SRRN<35WFIZ&V!T{X_f<>ir!rDiPdNnCfxZc_F-Pp z2jcTEq;6oeBb0Aov^(T%VANqA{}T!}Fk=RK@!SIV4|;e9G@siT4`Jn6@TY4EXG@?P znb8Ba(zgJ89|QYF=6C_MJf4P%Z;9r$6}`48cs<3QfNLW&LivLRe!ETxX{%`SpmZa1 zE>yJb6zvWLS8H-p!TFrXTFu7Z(DPk{I3L}v*sl?|^FK;Zq&V0VhaVJNEy|;j)#<5$ zPEl|*&>4t}(!;i|LY!~=K!ji?61PIZN0+&7)aeY+~!8IV`PoO4jib63|}iQ=V3enGM4wS5Egy`k8v zt!~8l*7iNLZ!B=QRAM#kn$5q_rZZSKH?ndeMTxr{3QL&L-F#Lqb^^YPWzJ)uU^8

E?avCXR?2QZeiUq76#F4Szh;hAsFnS(1LIq(;A-toDQs%(k|FDB=9s{{8prCP zjP;R%t8;uv!PQ(EKlPR9+DdQLa6$hInJY2M*b~Eep$iQ$PM#aS=2#|d>Fyb=K$^3v2a$3WW zU}es0xCis{2t3?OOg(wDf{g8qj^y9Q0`r=+y4*LBbP42bXU1|(E2%#N+jizCMJ;zx zr~GgY`1u;}AgJ8Vs9}D$;NM2CW+G+Ite#C~LCy|lJlwKc+eazf04UhOjG?HNenl<#1UiHfgUlMfYK9r2#V)(6=L*h`ra)v7uYwE_;vDrLqPMa!=#rO`VAnzNNwGnN2oa!P!sNm{G zd|tu(Db@a48|w=kD+mg9GNT?|)yqoCS~Y<3oy=&fY2{Mv3Un7UdTUzgn_>D+)3o<- zTqk7hVssw2aco5!eJ+kDxLWg@8fPm0I)B&X41}s(%;=1FA~K^V(55HYzGbvOx1lp2 z<6B1GHW4>R9EUZp*U;-U;ygmWyUHH!#;>H68C-_;y`b`2W(-EHp4U9E?q<$aidNnD zzEbcEWvm0*SRdn9M>Je^TBX9HuAScn-ojg&3rKXY2BIJ+-_4AqM|@L_3>0z)$l1+k zFK$C8gMANkt^ZD`OIYS=Kc*cx^GgcGlo^s0ObK;M&8C5Prjl zIjR+V46J*Z(I2%u3$;GEP+7)|a>ZAzPax#%Wk&n<)y!&>jp177do^fRBQEPU59{`Y zhRd34QFzo!ey`c@N1h6S5A_ZpiO$zRbgKrUzcgI(gaG}H8P9hR$;&kUz~RS1>37Vr z6t(*5{6)dlg7)QiT{ubVj{8rr?PJdG746eXBVI&Y#&92F_(j8Ich^iT_d!co-Dy zXLJPrw%_Ds!paO$e4pdj*@&wbqKkkYV2+PaD=U+U8LiTAc|Q44VN)wJ7_ts9V4OpURM-cwXX+x2bs~PTQwVhx+Kp$K~Q**QJeWa5GoHc<34Z7|5EKluzt_7Qd6t7 z>K3z7!Fke>e@hMc(HihRQ1CsYgU#<;{%zmHukw|S&BgiMi#YEz^+8u4&_m2H_%4N6 zsM_9OKg5i|idNmuW@Z*Tf4xEP({-oHeXZuJvacC3m1Fmvr zJdO`RaC%4x5&u69rRB`nix21c6&U|WZ3Cz(XEY9i52w*=$T*xtqap8b5{-ny!;F4h zwD)i$YV2adX$s!KNaxRh9!aABjw4g)K`1r9Q;w$5NsxDx89nj&&=j7HGUN|Xc$68v zG2Ho@mO|yxBsvbP6-l%Oq*gFv9*%xZvy6kB3TAxBR~{iG2A{Oa*jhk=;@d{k#zA?- zcDfH-#}?2PU^|{k>lEc352UmZ=AKBRo1o;x0-6YplS#%1nLJ)6$^nAFb&^qlH7C>P zQm8t)oqi65rx@)AdrxK3ccA&{BzgdboSw?BDNkq831B}nmCl4UXEG^3@Yyu_JY<~Z zmnhk1lju5FayFAz!JV^7v_CZeaVm|3f*+IU8&LjZ8vP24bDz>=C_R@%CqUJ?G`b5? zDl?5tEb;JQQ3M&=DJZODbSmtv%%r2B`A$ z(IZfGjTzlF?Nz>c^4DO&cAYtfXxg*br_XEn*Er(K8on6g&V{_|%$TofgRpA~pzt~~ z{;g>j;5z*lDz7tVxu)HL-FQaB6Y%-@6%FUVOYzSi8XklZQtVFIxlNEiRNyVViiH@o zp*gHV;shx8g&B5DE2pX}l>fqv$26^+l4pS4V2;t6_Fp(*IU2qVTm20UPsWDJhpZdS zu~^gEvF%oA_z|4iFEzX~F2(IodV?AJHSKAP;RICOV8%sF`#mm|n_&Bu8Rk`n(x$)Q zh@p`2D|5tP3&{z%iWAvP!+WFLPQzQ{SgBC>D>I(ZwDPCvVNm%ibBxur^H83p;qPE} zE)9Pb^ZXD}JT9l1h{@@&WW1#DQwL*G<*@t?`U`iw%11*ehVj7{>&?5 zn}N%3hp^{wK8Tc}Fr{NWCFezrPNwvShR?uM{c-imVfbtI{1d6+EAe?*BgEzC2k-{9 zgTTYRM1wdZA*2sf{=tl=HM&>~=XtQ+Vvbid?KJF{SsE^b`D^2?w zZfm=t;1*&4~8QGebjB^^;?lC$CO7AiQG=_N0bgjuyQUgO7XRsgF zv@uxQ^BSjotLZN1v0S9PV4)|qG`{GsUWL0TwYdg(s21J)gCCg&y2&Um66Lgz^?GfjoX^9j64wN zU(C+%^#@t2Tex4vBQ81D;V+0OknuM&9GaKp9Aa{g)wHrE(==T6=Nu^gi#gny_AKtJ zpCB$H8H&FtZqn>!4a>mxH#2_Fyd3yj>{T=VyPB_zKLqmrW=0~us3B`2PdFW+@NedH zXxguF?gk+) zr$kRc!2{;Jf|fGGo#y+Ugxu8_TIqV^~Y0NJH%xWEwCf{YW6aSp&BlO z$kuQf#594snT1-Nb2OvR@yrc~%OK>-t!p)V8AOSO%OJ`$T<)011YUg`ATM<J!EZLX%?flF(VyVQ>|x=zHjS+kNc?KMg0aWgbSzECA2-;F(b)1Bc@84Yn)`cr1e z*Q=zJX8`V0=G?T=bqp4fs`5N4*e2le%q(rll zk(7x@j=Kv2C^OD$k<7p=u$E@7LC2|uDg_zuMya(d8h3!%(7qgkcmt->{T z23OxjwVaP9u%flyd0gE9-^r6z*oqN0br*(EM!ULmYEx$P)vRPBL)-K#cK)<}JtAD#qBisiZbNM(HHCE0i+t-!t^U8+-l_|G$O1 zl&j^rF;`QMc2|W`=9E_tJ2bVtfI6q)@>0$pw>hrn|I16%CK@g;hkI){Uf{cD*QHkP z-$lHo8O6H`>r&>Bw>`TwwY+V+pyBfNQoe{TV+?a!>rrONyXW3G|582AoyyhnNyJ;4 zI?A2H)$+;DE=`@bsh}QZl*YSD!f0}E&}uQMx$Zk*G?|X#e{$2Ej&kSlf5y5Ct+ab^ z{1d|Fr2CGQCI`oOTGl{j!kTfc53BbD@83S>xF)aXkHh+XzrXkT zt-bfzw0v&3eAQ4n*but+@X(qbJ-br@tn5swJsB_bSl?R{Py7FA($6Jpl5w`z0@mGp z-fN;C>&6`+{aH6I59v=v7hCN)nAIn&mu7Ua)xI(jQxt`DV_F|KrG-MtWwYdd8+(ed z@g*PDR(r7uxb&^}o2Lm;%fl5oKSnswWveki3ZwWS-G|k<5+nIw7i~`zv@>RTWoHTo zL`FLm$}79EnGbi$#>y1z=-baFx7;t6+S71MXkRBUA5T z#*acnSS}`p1i6y+{#9GnjRCH%T8)+XjuPiGYH=4!?Ez>Ad(15#Z;TC#^3$7KYL86? zWYK*{rPFFp3lKV5?k-=+{|-&nA(!n;H(M9lo~k-jyWv7JQvrm! zXod@&<|Y3DULMi6-dL6ja8xvbBDrQj-ydt?$u#T= zQK!L)88ZVgigVGKzPhjS%9D`*rIXrA{%kGz%$czppZO3z=OMiPA$;XS_}Yi?O%LHu zrvCr+UHmoPd4gK)oo?gcueYsroI0{%2q!r)`)yLSmQLyvXYWD7QXX#753aSuqtaUV zerWUf=z7-N+5Z4zEx2i5q~Y7>=06Se>unqy6P`Z@&;B;WR`?VEMEZ!~3NMN`0u0vH z>jXYRTdx=Ek=nXgtYfuxiCB--)*B-I0LF!@e#!(sEC?3c*Z_)R@XhKd^z7 zB!{4^BQy%9cmO1mu({9(kVZoF86$w5ge?v~fF=@ZB76ZZlCX7-KR{#*7`^8k01Rqc z+aBu;&{r(GQ^R*8m;k~S+ZHc`@LE$Z0MP2#CDQQL*1N^pS6kOtc>)Az>pcPw)z%Fn zIqKg&wFC`s6zeJ4dcRmFYwLqzJylyDiuAJqq-iBL2_lX9^hY7gB%xV!Fq4G0vxGoB z`%fX{kkBFoI|)aGP)Wj3A=Hxaju4tiIBvV^2XK<46EFD##71fPoDwNyrn(7pNI3n7 z7r+8{A)kczg-tODABYZ@kjyt8~yQ8e*pD{6B*uCYSOp%zeHHt=1*xmZDQ^(i8!HT{FfOf zni6l1@XOwTy2VwYMAqusQ`^M9?)GpFjJht?TBhO5O(=F3ybUU2BO3!n|J!C~^ugiR zs+`d~#FCZW6Z;qEyrO?sGn!sq+WGw%dbs@9(MJJsd4I&7UqeIb{*f!*ReS z0(?LLCPu6N|4gYRYhtUOsV1H!WveEhGdv~Y8yr)hziPc&ZHD+1^icl*+kVrT*lL4V zJIh{8&Zul%Odg&7|%R8 zB;Zv&l$Li6vN8Q1t#<19sjdwUs?y&eD1&1G7`<2G(_{Me8y2Fw+|9(+c{nC7JHm-U2_?L`^0U=mpi3l1| zXBZe{7!quFw2xsRH<*Lpsl!W_S*)meq}9hic*%lAbF=1Hvlfq^JNK0di{@r6nLDR> z?DRW5nn%A-#73(dk=Q$6oneAsk4c3d9$`Ivy}SV;0ic$tTc}NkyG~w@=6_^NGqM4g zH20qALYSMHcoM*lxg2xmc}4^RgJ;x}0Al#n&q5CXf!9Z4cFCgbSLUk*%?U3#d|3jvE#u15isnQNt`Pv<*F^X|vOKP&6YB{8 zaR6}Vp7vRXF?n2ZNVcAo&}P-P_5rq&(UHfMnN*_iEN&{g=k<6hkF%rd_eku@<7@_| zMSMfofoPgJ5*5;L4-w zg-C0eJNt}a{W9HIob=jc_6KylmKWAvObP&u*Zx3H01ywJ#$b$I`2zbK3s!QLk2NbT zY$0~6G_xEutunI@F>w`FlKW^@mn7pT%w5&M8cI!xmudFsJo}_=AI->`h zg;BN)b{z|BC)f;3v~$*u>Gllfz$11udjfCR^H@Q1R>6FxnhkC zyrF(CU!TF|;Fa}x>?WoZS3K=YIh^;pKL>AdAOPT^g!|Athrdd=(S$=wUSQ=|QetLb z;*pX(mW?qR%#+9kmy4mWZi>t}M z!^ASq7Gio?1-pSa${N^T&{3Yju3=X>XBPB%J%hc4*{^3X1<$^2VHeRSq2{7$fHj6*1TlXU)@_J<+l{uHgcsvVv}jU z%8_m2N{z(Mr`YuvvxzH*CAOVBAH%FoJn5{&Ceew!B;o(0y1ta~>-1FiJ)YXcZFeO0 zW14Uuvev7Mr(+f(;Rk7V`%Cy?nz0cQK8SWRPQ!8fW|Qq{NoOVHG+n|^lFyeVd=s6H zWfGoFu_`3|IL-Yw4aaXbo0JAgCxK?B8BNt(IU%v)7qs}C$HZ!`d?vBa&{Y37=2mm% zdx^b8w!dIqHCMbSN4?J{sGq^uR?U?tiPd-Kab#P#GDc#*rx~+i%od(BO=4fBF3pzk z5|Uq)@CNGkN_1@DNxGJvXAWJ&H%nH2)VEy{9w!U|pb5LSaOIf9UZkF!!>Agb^qIsa zX{PX%gnvM>x+MG*b^KpgP{Wm8)D=DR)f6if57%(pK#5JI)A1V#H&G1z9P8drklyo> zzCYzKU&7Cm|HT@PmaQhmCh2UZA1`H?yOk@|5<87Lxf|=Ya-~UPhtjUSi)~xEazvxbMOxezrCW$>udA@@M+qvzG#Eziq zK9%qUvTB#`Pbu?T5`K&3r(42%(e>6-vm5Gc>jfGD{W(W(cLI%XI417k%3unovrEWo zBk-V_$(1t_yN;^(8XY@%(rwA7{)^9xV(PUIrQ0Nz@cDE*8H8OsxiV2=pQ8)z zvl#UTS7u9WER~&$DQ|FFfyDluY>NrktJZ(9z9H#r?`#1MNw|Y5JSO3P6r};chZ;V^ z8Q>=UUi@4#I84*jCE;I_+)aP=ME8;GkGZv6iJ(o<8>*)@9P4ViGFD<2(k4yDwpy+{ zFR|6s^x4SjxUyVgSJ74#t8sTq?0Bl89<%DW@~*^I5&I!J>bP=KVhd@Ae-@sTdWL8X z)axy$)Aw7#^-2?H1D=%hC)4()VAPvj$&#!-r#tFGOnH+lg%aCD9jFqvwnGy86nQ=( z;rfWZN4TE(V2X8B($}xDHzZu&yKW74T~~%u3%t128odQ26kr4Y`F=jVUy6$F6_Yd{+ zy=1jXgQ2JTFJafu3iaQS;>9sKc5~Yxi8WIdzmstNS~Wq!RP!W!9{JDF za2!-`Qr1g4tyI=#OsVHey~I|Nhqthxo+}q6R)6921s<;F%6Ag`6WzW&v7??VJ?V9n zzJu4PV^L_@!xb~J`fTVOh{MD^T$v)VAJOEbV(uQElr6D(&Uq5vK{v#868<7RoR?wS z9?sqn`Irt$IvvfX1{-4+(6N_?>9>Phq87UCXt$o`(|bdhc&T}H->9Bx*&5vxfMJcJ z*khQ|n81diqcMSvz_!K&pTE(Y=66xqKibE81*v2D{?R^L;x(xXYxa+3L$Pgtf}y1z z0}sUe%t+LziI{$1w4t*es}98b?6hd$n|S5GXv4T!7s5~Sd zBSj34fN(_96GZpZ%1r9qgYU3wN3+i_wa2l0>JvKMj;0>&H`g3%@5Man<&W+B{eEN2 zG3FR^&b9XT(q+q$E0*#Y%i8@d!>fIIb}bzT!OYMI)`>x((X10|L!*03r;hgAm5De*(>$gb!qfv7^@J+~^f<3g z70v-PnX^4NS0_B~P71s`Oau-x2hNHWzQ$ZmYnC1D{2{~DXI_1wx#8r*vdz_v9&N2o5KfqaC1*wk~;$@hWB^t0%wK~G%ah! zOpz<=#K!O#)`{oB!`LgB7}n2|E&Qg3pOG%Q!UhByz*?9JfY?W z#;{Jj88K{djI$``QqiglMYB5=IZM2U#sGk`Xxfd~>Q;?EeryU^w z7F#t>tl5-H8onJqFxrz#njOGdI{T`#=r7Kq_8R~If6H{XPrKTqJtfjF^f&!5oqHOQ ze>_THf43#Jgh#SYyx4!ND4kKH_JjZtzytky!f*lUm~^x!q;z+8cbiwzo|_ib;}9gw z=sCeG0gZLH=g!xyJ@}HoJKOUgrdDI$t< z=Yv{bTAU$liatIjI^it(R6i!38AMY5-wav5F@w8v)`FP;?*{?EF#vJISZC#+LHJ>K z5bMOzgY05tIUaGw;8K6RKvqL9X`brn5aE zNbD)rS!oZ!y%FIf^|qEq+KhAKEb=OMmQ1^`$oZ%|pDV5Ud2;6eDW4Zzvz49<|hFlMvk|L@klw|D#oMbxKND8 z%5hOtAi%gt-M2*WAWg3LZGHV|RHqhUHJ`vc!YqTpyO{z|(f(6_ECPoG$R%(@fN}!w2~bPm zeF2&Ye0VPq;5Y%-v4wpB#@S^;$3+ThGfiMVfwn=u02yYGMc@SyG3^O~nhonlORc8M|N`I8va@%g*RpN@~~X90%Dvi`3a z)BW>{7}Ndp58+Jr&n+(5$D}z?^&p!qO z4AlG2Zdyb%9c!P9C69{4BYI-BAi#nL6-<{h5}3-tj~XzQkx;+IU`dEJIL56 z;dz275Uo4Aa`fJczc^q0A7C{;p~kXvEMjb_aLT-LjL1Dflt}|&FcDa>+XAe9dxL>88|_YPsE>4DHLKl;jkfrN;?LtB4tj}FnkB=%jH4z* zvsO%<5HYP)Pkkv^{ls3C>usR&1C)CkvpU0!s#bCuoc1i9nxe z`CeZAeFA*_0HOe(mMW}oC$r5c-_{Z7v#o3><}K>(buL1dKh7767Z1jax%8FAnTyhwzr5@v9JXv!Yud8%04+h2 zGmHLC1c1BZExxAoqnBC&7B zntT^v+iK1Vv1>JFABfM)srm~E=ou!OELWQN$4&e`6K}S^XyVQG_t3tEy9Vobzl<{8 zG~4e?ytzK|r9@u#R`DW3ja*=|H?Mk$iJxqm|Gx(6^~b|&Y)nJjTF$2HpBwbgL*i5W zQa@iZmUze+J@Uu8wVcK2pNsWR)IZzw&zs^ic7T4ZO5eUF-|6?^uOnN>UB8klc7-UL z5iy!Jo9LQYbr!Aq5ryAoRD*aikJt{zJTIH+tzbSXFt5WexY`vpFAw<P8mCd6*&&=W{5ODM&&c+cj6a0 z>Fhj?f9)e}TBx*HN;ke?a~f@~bhZ(*T@E$`>s)KtidHRm31jmxFORd6Se=)|KEZ2w z>1;D5ZsKek&fTFgP-*s_Lwj{aNAp85wxKTQv9!|U&TWUd_w|FbwL0Pv;4 zcLw40tqa*&Oe}P;vzT4DhRwq73mt4HYDGzwJ3;td(I40v^e=X>ARJ$u#A-3GI7z!o zah}!RtUR@ug4c?<7DdH>QBj{oTS*zafORGNSQ{p9OV>_PUK7LuO!JJvwr%Nb586x9 znK$N@CTSl~<4!4-R=if~U>Rt8J&7ga+}D%XV_5fk8G8|9%Q)khT$aQNu%gVtys)i| zYul-EPY3jj_#AeXIoKw&mvilF>PeMi(}=0%N$hc~E_bl!@ML)s+l00X2m1ySE0S0_ z7F8rMe>`8o*$Vu=B8eTv*h}Y%{~evwud(6{ z?&?(3PifEJQ}}q}$kD9Est<_^2LQOj*H9ORD10!T%UH?dL)&exc*SNT#h$M4Z_%9T z3csDs#d3w8O0n`4{uu4-GRfoN?KbUA#b!9|*nN0yJJ(tjReZr0e;=W32iHz3>Ui2A z7cp@M*S=QNAISG6X7AwI9Yy_!>gk7dJGd4~D=?~UbZ0Q0-@!G9qF$ywHVIi3Pfk|U z|DY<(QTUaFpI7)ws&*D;R`KKhJs59-%LIFR^bm)O@G4Fom}fy)Ym9h0OsxFE{*avDm;@;$1sJzOLISR){BiqH3Zz}3=>i9i{Uqx>Ke$)-4l4*1bLNRj}*X)Y=Z*-rG z!irs78?UGrXcg12Z5L0Tsi>2vhUp4##8{#5n`j5DL;IUtYf#j8DbKet^-bG zbte>lIC))A_>U;_s|tUSa`-{vd((Y;OY+0rttm3Z+?5?z{4FS5T^ z>_<{r4`J+Xt{qj>EwqX+FmpFg{zjS8_=N(muFQKiGCvR3%BWG0j zGt`TEg@2yj@|!TbQT%w<(!gye6`M1yEsZY5&SC669$`FJexT)x=a+njwLZ5mj9KcV zaedQcy%LtoB?j5>{ies*b?j=I!meZN{weGRX78Wk{|5bvdj^&S3vRqj(Gb(oW;2h$GjEqztJhlQe5{|oWK7< ziAG>vdOtk#))33sg=lXI!}4@*3^+K%GHxM`IT&xr*oUtijQ3B-kmhUgy@PT7M_!Pq U5N{uh^FPrfQL{ePwx)pp1DY|~^Z)<= diff --git a/build/modules/ftpServer.o b/build/modules/ftpServer.o index 673c4083e2316a25d4ccfc7e68d8af4b4f241571..90fe04a8eb56542068c16dbeb59fb2b83e115053 100644 GIT binary patch delta 10991 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 delta 10999 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 diff --git a/build/uFTP b/build/uFTP index a74834ad0512feccbb9c8ddc980fcc9eb9c613d1..b35758e6d74a219797680ddae67e5b2953b496c8 100755 GIT binary patch delta 53681 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[socketId].workerData.threadIsAlive == 1) // { - - returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); + if (data->clients[socketId].workerData.threadIsAlive == 1) + { + returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); + } printf("\npasv pthread_cancel = %d", returnCode); //} printf("\npasv join "); - returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); + + if (data->clients[socketId].workerData.threadHasBeenCreated == 1) + returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); + printf("\npasv join ok"); data->clients[socketId].workerData.passiveModeOn = 1; data->clients[socketId].workerData.activeModeOn = 0; @@ -495,11 +500,12 @@ int parseCommandPort(ftpDataType * data, int socketId) returnCode = snprintf(data->clients[socketId].workerData.activeIpAddress, CLIENT_BUFFER_STRING_SIZE, "%d.%d.%d.%d", ipAddressBytes[0],ipAddressBytes[1],ipAddressBytes[2],ipAddressBytes[3]); void *pReturn; - //if (data->clients[socketId].workerData.threadIsAlive == 1) - //{ + if (data->clients[socketId].workerData.threadIsAlive == 1) + { returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); - //} - returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); + } + if (data->clients[socketId].workerData.threadHasBeenCreated == 1) + returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); data->clients[socketId].workerData.passiveModeOn = 0; data->clients[socketId].workerData.activeModeOn = 1; returnCode = pthread_create(&data->clients[socketId].workerData.workerThread, NULL, connectionWorkerHandle, (void *) &data->clients[socketId].clientProgressiveNumber); @@ -526,11 +532,10 @@ int parseCommandAbor(ftpDataType * data, int socketId) if (data->clients[socketId].workerData.threadIsAlive == 1) { void *pReturn; - //if (data->clients[socketId].workerData.threadIsAlive == 1) - //{ + if (data->clients[socketId].workerData.threadIsAlive == 1) + { pthread_cancel(data->clients[socketId].workerData.workerThread); - //} - pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); + } returnCode = socketPrintf(data, socketId, "s", "426 ABORT\r\n"); if (returnCode <= 0) diff --git a/ftpData.c b/ftpData.c index a72402b..09c50c6 100644 --- a/ftpData.c +++ b/ftpData.c @@ -602,7 +602,8 @@ void resetWorkerData(ftpDataType *data, int clientId, int isInitialization) { DYNV_VectorGeneric_Init(&data->clients[clientId].workerData.directoryInfo); data->clients[clientId].workerData.theStorFile = NULL; - data->clients[clientId].workerData.workerThread = 0; + data->clients[clientId].workerData.threadHasBeenCreated = 0; + } if (pthread_mutex_init(&data->clients[clientId].workerData.conditionMutex, NULL) != 0) @@ -639,25 +640,16 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) if (isInitialization != 1) { - if (data->clients[clientId].workerData.threadIsAlive == 1) - { - void *pReturn; - pthread_cancel(data->clients[clientId].workerData.workerThread); - pthread_join(data->clients[clientId].workerData.workerThread, &pReturn); - } - else - { - void *pReturn = NULL; - pthread_cancel(data->clients[clientId].workerData.workerThread); - pthread_join(data->clients[clientId].workerData.workerThread, &pReturn); - } + void *pReturn; + if (data->clients[clientId].workerData.threadIsAlive == 1) + pthread_cancel(data->clients[clientId].workerData.workerThread); - pthread_mutex_destroy(&data->clients[clientId].writeMutex); + pthread_mutex_destroy(&data->clients[clientId].writeMutex); - #ifdef OPENSSL_ENABLED - SSL_free(data->clients[clientId].ssl); - //SSL_free(data->clients[clientId].workerData.ssl); - #endif + #ifdef OPENSSL_ENABLED + SSL_free(data->clients[clientId].ssl); + //SSL_free(data->clients[clientId].workerData.ssl); + #endif } if (pthread_mutex_init(&data->clients[clientId].writeMutex, NULL) != 0) @@ -665,6 +657,7 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) printf("\nclientData->writeMutex init failed\n"); exit(0); } + data->clients[clientId].tlsIsNegotiating = 0; data->clients[clientId].tlsIsEnabled = 0; data->clients[clientId].dataChannelIsTls = 0; diff --git a/ftpData.h b/ftpData.h index d637850..035b6fc 100644 --- a/ftpData.h +++ b/ftpData.h @@ -125,6 +125,7 @@ struct workerData #endif int threadIsAlive; + int threadHasBeenCreated; int connectionPort; int passiveModeOn; int activeModeOn; diff --git a/ftpServer.c b/ftpServer.c index 5376d4d..06bead8 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -570,7 +570,7 @@ void runFtpServer(void) //Debug print errors if (ftpData.clients[processingSock].bufferIndex < 0) { - //ftpData.clients[processingSock].closeTheClient = 1; + ftpData.clients[processingSock].closeTheClient = 1; printf("\n1 Errno = %d", errno); perror("1 Error: "); continue; diff --git a/library/connection.c b/library/connection.c index dbc3984..6275443 100644 --- a/library/connection.c +++ b/library/connection.c @@ -460,13 +460,13 @@ void closeClient(ftpDataType * ftpData, int processingSocket) { printf("\nQUIT FLAG SET!\n"); - // if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1) - // { - void *pReturn; - pthread_cancel(ftpData->clients[processingSocket].workerData.workerThread); - pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn); - printf("\nQuit command received the Pasv Thread has been cancelled."); - // } + if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1) + { + void *pReturn; + pthread_cancel(ftpData->clients[processingSocket].workerData.workerThread); + //pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn); + printf("\nQuit command received the Pasv Thread has been cancelled."); + } FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.rsetAll); FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.wsetAll); @@ -630,7 +630,7 @@ int evaluateClientSocketConnection(ftpDataType * ftpData) //Errors while accepting, socket will be closed ftpData->clients[availableSocketIndex].closeTheClient = 1; printf("\n2 Errno = %d", errno); - return 1; + return 0; } } else