From 6337b626d6a42f86d6b3755c7dc3568fb8eacbf3 Mon Sep 17 00:00:00 2001 From: jerry Date: Sat, 2 Jan 2021 13:15:50 +0800 Subject: [PATCH] update to 2.1.0 version add @OnCloseEvent, @OnOpenEvent, @OnMessageEvent, @OnRequestEvent update EventDispatcher.php and change it to status-based schema fix @CQBefore bugs --- composer.json | 12 ++- docs/assets/img/Untitled Diagram.png | Bin 0 -> 21157 bytes docs/assets/img/diagram3.dbb4e32e.png | Bin 0 -> 42475 bytes docs/assets/img/diagram4.16ce39ca.png | Bin 0 -> 100112 bytes src/Custom/global_function.php | 2 +- src/Module/Example/Hello.php | 36 ++----- src/Module/Middleware/TimerMiddleware.php | 6 +- src/ZM/Annotation/AnnotationParser.php | 6 +- src/ZM/Annotation/Swoole/OnCloseEvent.php | 22 ++++ src/ZM/Annotation/Swoole/OnMessageEvent.php | 21 ++++ src/ZM/Annotation/Swoole/OnOpenEvent.php | 21 ++++ src/ZM/Annotation/Swoole/OnRequestEvent.php | 17 +++ src/ZM/Annotation/Swoole/OnStart.php | 2 +- src/ZM/Annotation/Swoole/OnSwooleEvent.php | 44 +------- .../Annotation/Swoole/OnSwooleEventBase.php | 49 +++++++++ src/ZM/Event/EventDispatcher.php | 60 ++++++++--- src/ZM/Event/EventManager.php | 1 + src/ZM/Event/ServerEventHandler.php | 102 ++++++++++++++---- src/ZM/Framework.php | 14 ++- src/ZM/Module/QQBot.php | 34 ++++-- src/ZM/global_defines.php | 2 +- src/ZM/global_functions.php | 3 +- 22 files changed, 318 insertions(+), 136 deletions(-) create mode 100644 docs/assets/img/Untitled Diagram.png create mode 100644 docs/assets/img/diagram3.dbb4e32e.png create mode 100644 docs/assets/img/diagram4.16ce39ca.png create mode 100644 src/ZM/Annotation/Swoole/OnCloseEvent.php create mode 100644 src/ZM/Annotation/Swoole/OnMessageEvent.php create mode 100644 src/ZM/Annotation/Swoole/OnOpenEvent.php create mode 100644 src/ZM/Annotation/Swoole/OnRequestEvent.php create mode 100644 src/ZM/Annotation/Swoole/OnSwooleEventBase.php diff --git a/composer.json b/composer.json index a0451b95..33da5296 100644 --- a/composer.json +++ b/composer.json @@ -3,8 +3,12 @@ "description": "High performance QQ robot and web server development framework", "minimum-stability": "stable", "license": "Apache-2.0", - "version": "2.0.3", - "extra": [], + "version": "2.1.0", + "extra": { + "exclude_annotate": [ + "src/ZM" + ] + }, "authors": [ { "name": "whale", @@ -41,7 +45,9 @@ }, "autoload": { "psr-4": { - "ZM\\": "src/ZM" + "ZM\\": "src/ZM", + "Module\\": "src/Module", + "Custom\\": "src/Custom" }, "files": [ "src/ZM/global_functions.php" diff --git a/docs/assets/img/Untitled Diagram.png b/docs/assets/img/Untitled Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..841f2dd4e2e3fdf015c93dbb73ce04e7c8794725 GIT binary patch literal 21157 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 P@skXmu6{1-oD!M<))mpC*?iFAmRG}4Wf(%mIp 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 literal 0 HcmV?d00001 diff --git a/docs/assets/img/diagram4.16ce39ca.png b/docs/assets/img/diagram4.16ce39ca.png new file mode 100644 index 0000000000000000000000000000000000000000..ea88b5278d00fe312b9b0c66c33f6f237608271d GIT binary patch literal 100112 zcmeFZ1yfv2*98ibL4#{>8!T9Yy99R&Zo%CxI0SchcXx*%!Civ8yCpzyxrgVy-;cOe zw`!(FIn(F#?!DJuYc-(?a^lE{_=r$YP{@)JB1%wD@6e#2KoEFX;GHPr@k`(V+EGdT z3sltv;Sumc#8_R@L{=8+Bk&v^3Od*v3jFpJ;EoU6fj`fIhI$7)LchJ21Ny&D-=XEa z`@iQP$lDhO+c4Llpah{LMTEY7hd#}OQ^!`r3=(%o$3jC#druw~0#lp(Et1c|AdK>J zM@k>oOyq!*@@vYvto-aE+rXj$Q%D|pm^xZvNM6YGwt(X<2A0AI%=y~$#1(zJ>*x~8 zg@%jkjSSfrXlOL3|Nr*?sVgvr@5il)34iGe1@G&t3LinlGk^JKt5?qXc-Fqf=_rn3 zlrr8wF)`6lS2xSQu&^+{qRYMg)OF4s?*04sjdD>;72?Nnak`wwc6>)LFff-|430z= zHj9joOM^B10s;b=D{;T96$i04*6WN%8{Dq;_pZ3H{ud>Y=)R!bT9iOeQYg^AP>ygg z%D;Q#)$l|pTW_-4?csE-^ZxjU@s-_XIC)jxRKwvNG3r|FV)dl&y8QjhyiDaA6`mQ} z)_*;2PPuHOdUD5s!;t2ff)q%vS07`Dz=Ao;@L*Wj`NrmE+X21n^ebscM{f1`fyvTzSXMB(l88aU9iuv~pNGTQCG{QAR7 z5DE<3ETW*WLedN)S^S{j&0+)>s&q2z>+4r8CB6`NL!%g>ul$j&p&y0+l6tFd2?yuk zfMM%K@lNZk$x609M%9p-k%n>S&lqs5dA|v;DrkIwGE0y_sT&@AU=wHGAEy)rXkTL(NMJ@v;B|I?GDXe}uIi$Ev z_o(~0OW$lt(ym4;Ntm>>*X*PT2plf2A=I|E4wskY2R*G%Nyb_SCn$p2I)zj|rg|-c zxN@0!tf|{OOiWkW&vFtuPZ=4%cNsVNL-cR9ety>8KMh9jwB6`*EIf;Fewz^}&;TVA zOiv51A^{L#V(=jdagmXcG>BwRb<3#-%=ed0{a(sgFt~bp4%X9O#*H|lI~@DvZ^2DKBG|qi*w7uz!c82(pG^S&#<3AGOXUF zFZme5iP2V(2V}qflpPTe<5lnA(}keGW7&eY=W9Ckb#?Bw5U=mY<4n;8X-L6&eDR}76h(5W-4vh@&Cx^x4gEO~}4iYt+ir~+pmu4GT z_|Audk;{z~;;N(y4f3R!*dcu#9<=t8#8P1)q@TUwro#JQcE5TYglXK^h7g&08W zLB#Cu3kx5jfg!$xH-^}&fMfbe-UhbTC_u;)_b0b2m2H+$0rb8EEO&}txNi#I@K9fA zCJ${E_20r4i-2uI4zYd*5-%?*Amj)7UIpsq;~eqzY|qixvA z&(Tsk)tyStnh$Q}@g)kYQL zunSM5Sr>p(tuB;GD|&y_cdtp#ck1aSx~i`8&i@avI!%Ot+0$^s#76)vlTNid zn(DcH>WJ3MpsE$gB2VNL4##YuL1s=ytDqsxVFO_xsyhkJAV_8(4ZEPAE6+M1jquLp(A%4Ve<#*A0weB|XrD+$F8 z@b|CVyHP|~T&|4$Hj9GEh<$aEiFT?Glj5SH7h+7zcx&}guD9GX3kxKlMj@gDFmxo^ zHx^3QsDf)WI+W-diAWLp_J@Cow!)i>wO^ZKH4D+r$zb7U>HWe(L$SDQvn~^dxP8{` zE=5!!{B$%lcR$9{-=chvoPCd1@7Qf5NnUdr}S2*H7dC{QNt+4ArE`<2GxJlmY}T`;M8WJ<%Vkb|W$nB63?0xOsi zu9+vYRC4W%AwwyY0B#^$Ta&I-8na@a%%mUyz)xL0oij-VE6DH5RZ)k)vxxml6FS|+ z6O%f1wx#Y61xEdM5%Mv3Qz7iP39-`w!MAwph%7>b1%0uD34Z?k*}0vZs3DUd8Q9nu z2=P3*UACOH=>a>~tbX7}5o?pdaJ?upM&%P(Kjp}4QO(g+Jz$H6EK?U6~_-q&>0@9yq5X0s)V+6D#&R&0$>b3fkjEO|~{*AJMtxlRxR z1`PdVz?|9qFX;?OKUm#NC3&o~|NhXNp;eTNf|w1^FE{-g_Bw9AWR41x71YsyH{rgJG(z(#AKd{;t)tR81Zc+A2NZ(mro%YNc!ysdJ>6YqOHGd)*s&O(RI9JaMsL*|^toBHF$v4>&W&VH89w5F1& zHj(BsT41QiMkkR$n|&}iaJn^LoGugU699?nw;qLV2 zYc$@Q{ZY!wm}h9sfpr&b;P-%Ukifq-?V0@CMX2kMegPK@B=&DlE!28NB@YzpH< zPwS)*sWWxA7-Os*jKxW&@568?+V#Kv!*LQ@*Ty%x0zhP3?~vpc{&{+u^^7Eng$6Yq z1d}YP-NxbjF|$gDk*ZG@B+B!bs$%a-b+QnbZpKC|MiR``ZOJ#&DoZSn?z1(dbj5`$ z?ar4aGJD0Hj?xTJlI90yF8-7edw*MpK^B|tz^HpV`rMd`9ZGqBf6pW)A|ir+TTy}x z78JAvuKr==AQ=-p7DYEditdxa-;dR45XD5ukEoPxrxe!GL*s_Ub9Gj7=Y=v7sWKJ~3(yKpVKlG{wr!-|T==TryDxc8Qc$}7z?-g0JC zh@tVx$;)iC>`V46tlHK@ky+zs%kH%))OIdY{~>b#@{(Ri?0Yk#eN4=Y^SMVG<0wk z)l`Rv>tjYnM(LBoEunmrGd%vuyHdNvt5HvbMw=?#r<3dAPnDg0Yn<;?tX?%&_RM1f6@og8N zCM+#3{%m$WnIAjm7C43hpe_~k>Tu&ybqpeS1k#<4(rjdE+BL|-nwXh(eJpBVvb}wx zwf}kXTNXIuXUCCC)P$q+eVi9%l^Xlczd@HXG{jQu<`=qg=y6$-{8|OP+SSCpH)S71 zg4{n<6GGpAnlfExHBM_e%a0Cu)+M~(`Bm=8)RKIGpzOwK;Js%tp!gQGZ$&@410~g2 zk`w|dz)olI?CC*8gJLAS7t3pAJzrKy<|TDn0?Ubul}X60Ee#5J;_NnK*+1bZ7qJI! zX^&PxYsn<~deVI8LF|)cmtVPjdEDmRND!ykul4D(U^n$-rKhiOn)Fh}hCc()eF-)& zR~9fla)=-{@f@9Ym#9-xzR1Mj;=2m=Z6n&IX}{+6GG?3wZE3rrG^&{7Oj(4jEw!ws zDeA3}M75W=nlcA3iO%RorY`Mz@NVxf2ErS*I4|v<#fDJfE|g7= zK3(F-J71zoy^VHP+cr1pka+-i?xra1Vv+s z5F{F@GmMx&C2+V*jMMPKoO3MVQOQ-0fsL1VPPBDDAY$}E|C7E$Hk z-wwl(DxLNb6c|-Hh5<ZoM{UJT2++>GMr=2wQAX9v%=D zR9^sK8R`U1g9Z(dqT%CPBqk-X2a-InwDOBvdUzmi;qps@sPqUFWrBTO4<=XvTqMPM zh;^W@K0dMz2-CJtZer##Bk)_~7oS73PXRl1-PK1Es zQ@C_=(AM7Wm?8CpHO-GAUm~e7&c{O-HKaARY$kyMR zVFN`283Sl7{A=t#qLs*jo*HXr0^j5Ao-wLV%+Rxb6&)=-*;33b7F|muC3R!3u(BSW z=r8P>#yI~PHYUBoi15;vP@*09OoSx4KGOK=?1J%%H|*l&9Q&zC38E)rzEZtT(j}Yh zOOv_%xXoinYVCbMv`xQ@QF+AI*&MOsG4^h2YpY$R`JWjcFcjIhE=Re*o*1o!3KTcv zC;WLNq&J>dLvq!pRu2~j)X$1=cXOe46m)-msCaIuyt93Hq7*ls*bX`^(E?p=ZHYzw z?n4Ayr?G`Ec8T)KSQ%1o3u|eu;0+Pwu1LT8;qOZh1p~qb!KZwNzHx5xOAM~o2uQNB z5VW>w4Q#W+F$Ay`OA?|i2dv*b$C`+4VTvH$v1-(K5J`%^ARc&EH~=?&hOp0v}xp- zV&(jsvqsua1!bS0?Hd@Y>l^Prb&D7Egg86;dd9?%B6$l3(G0#`4MvZ`g*Woz|K*~? zoD>%m)15^|f=2{0G`za+I{+fNp~on~sS=a7%*CImYifq@b@Vv~Uw+elR$r-7;j0Qj zuMgo+Vx$qG82@|)*)VCYoxjJ+UvbLg#7VYY&{f9(9LSuf$=7O85DuZLGe_|EN<)32 zZMA9dZ4rhrgwzNb!JfY^#w?P0QB93e!d(vQ7#ls)Axjl9KjAmvDc*@YlYYwsAE%hL zPtgN_+W-vd!FYWNErxR2vh+E~{Fu&aaDwY!5G(qbT8hgvMO&*0qGfvEAWbQ`Q^9Fv zD;h;Bzo(G_VHBVa2HIx8rx7Xt>7J{`e>yF@WQ(fpwBQ?j86QXq1N2Aq1zB^isC>Wh*9QA28bO z??)nlmKO?CBtpu>65r%~M@FPx;~R1nZMQU3B#Y^Cw(Q)KupHX-1|@@i3+>B<7=UjN zK)U5Zo9(6p&2@$%LgY9fB9inv)z*>MnDboI1 zAQp*FBq<}q`z;|p2Lt$8Jee;#eEbn2D;OMtNK`0bgoBER3SbP{1lc6Q)m2}(xAt-D zhv2|ceM6RP+IEu-Tf?oiON}=M$~-J#iofqYrY}hU#S0#R^~+oFQV|mRrHxaZ8JLLe z>~^haA)pV+P-6Sth4v2YBf(8cfW5mHdg!q<{4!rtQzP8A4W%z6m=FHe zQ!pJBsJ<`iE1P6n$s(wr1tPWB3I7CLr>6H@9gYc3AnI(28-62uQxLxXY!?I z5OB}!E)Z*V+>aTjTx-LtyAe`coMue|&uZFkp5#QgVFKlIXg8c-YR z&-q!`GZ6li_$LDtIj7VHJ(cuYkxVYJynt*{Q`0^@&N9l|T&khPcxZ(yd<15uH}3mqYt;)$Ek1a40Q*~cJ zK)@di9z&pU@*M_ZRliQhKgc{%(9EnPF+4mxz|6~^dK5|yi6cgw*eWBVf$HP#8_Vp+ zjG)fL8S^@on~)m!#WXK(m(K{2&eGasv*!Nq@6O=+5neO`Abezkpkz{His+`$7%(># zgWaDB&s>x2YwmciQ@9gBgHdyJLot;&2sM#hdk6bULUK`Q<;E{M4N<)o`&aC=N$l)K z!wUt0V_bMC5O92}CZo36U{4-S;jhw08B&LJ-sQ`6k06C=x~1UGUHS-0(dh& zV73^p$&EglgHGw!5=g=@@)|1{qS=u=4~Q<$fA<%xL=2>&K)X#(O2`#CHQ^<VlE|f*G5^!>!afbjTkBf(0FLjh#qEi6rCWQkP?>hklrl0zZ)>`2v(4Ccpvr z^l^j7r%|9)iD7G5uQdGZFiekrk$4Ka{5!D}7nD#U1Le_V@HvGjMG@xyN7fs_c~_D% zJu^<&>}qagYM-zvINqP_sz(zNWeiPcQ3tnuRZAkum|GoKZprm^bf`Zv5W_FLa{9aj znq*RP-{0FXKPq)P@6nLr%9f!mHJ#P=KBy&ks5H1ZmSXJe6paUC*jdg=1wQlaFhdtW?@X%(wDBJra#lBl(vog9^e$-(ss5)G?68{@>6c))%-dLJqJ-;Z zlYy}+tGnI#YMGHm{pMS0!j&s2TG3On)__ibE$Hi;I(mK#r}{jICceMjA2c4C=6Z`!vSSy4()-GXt+f9m7Y;Ze|mYqMyVbQAW zd+aOG=SN3WBuI1)=^M%33dj>+3c+bA==+VOu}*{SZ{vl&uL4;Hl-m^6Qtts0k{99d zq|`XeD?l|J-EVVqbD_1BNitrT*gb@M&8G{mkyw@i71~}`Zn-@fV`=P5(e9AM$Y|T8 zW!oJttL19kQyQ#xRvK6V^8)8I+BbRK^7F*#WIkqbl)_jjO;~6LFOh(o`n@TZz{E(D zxV3t&SznPKvs;5@aYk$Sg}?C?b;ppPj7EAp7%E(y(+Z7(S(dX89F>* zdd}tF)K7({`uAz8;VhL+t$R3U62*p+ed1(fyxOvV+g)f$g0_n!es5%*^UsbnGu(67 zN>_fjSYOoRqCfeNJ}rW)7iLJEe>7G5j5R)!oBv2l#ue3`lVZqq>vyN{-T7D~>(?&} z43hU)SJZajUObok?i~uc+#Wmu6(+jws~XBhYFA1OP$L1+55E3{nRRg%zGgU%O}sR< zmnm+iuOe^5vRW}*Xj>rCAPRiR%#v7V7bh&8wcMFGQRk*)A1EXf`;^v{%kE7?(_PKi zcw;R-;k-qt7w_e@we1$hjUfaVeOmbLv&Z*_?e4@P`3i-W+SGX0g{s*UVXAN?ePdg_ zc-g+z2#L)hfmfO?_|LdTK!`;#vxmy2Rh<>u_Fd(F1aeT^8^2@pgN;>1l9f!d+`mL3z5alVBvPNsS(<*=!~*RQaW( z(x(Pr|5Jb(^A4lq4A&a zeb!4~%Cp?WQr}+=ruCPWmNxhI^?l&j3UwnBvJ}cu1(rdH$`fZR7v^Rx9Gog4P92he z1y|8C+QeT{CR&<(A;CNdkyf*us7Gu~Sr9pT^ix_x5sG!&TaF>Iqasb- zcPE2MKWkoV)9f(+r@aS(a$E!wy6Ne(+q3dK-qhf)W`#7jKK4~1+EESz#@KWi`EC&M zcSb;YvdDUqYfYnAEPMsOefy?EK#*Se1ob{q=4UVey$F}Hg&?bJI4K2k@asdk!S|0c z>V>j24OUOyU&ji8VWC3vuHp8H;4nh-pvCRh6;-xzyNa_o0wE> z&RoY?wfFMBW~^#9RqWU2J&a%sjSuDIm#fYE5)J=43lZk~m!VziF{p5izN(i>P4*?u zFQVxH<4AHWqbZ;|x3Yaf*<#rz^a+xue4>~?3lt zY-DRI-~@oxxbG-{T96Y2XeA|NQ=F0P@J?sTb6gx8w@gVz!T#w4$OmZt1}J_824GHu z@Dv_GKpcsxxg?F6RywsJO8AYo>`dbfe<*btVQzpd?r0GQ1t*Zhr?_JNe1k2OIyBO0 zg-n66z@Q###^$hVTrc7>BKDa9WZ=>gA#7}#!AFO@Vqk5}X9VzexH9F5X2|en$x!EE z%V$~=CPtt@3RJq*Wnz@`bJp!qCY2v_6xpzIDt^8{Wki^CqyVCTD)Bz`#DIlm56qV{ zC~-{09CCX0$G81N=NlUc6nO<=^bCFkU_@jwzrEOd2lXwK_y_v58HyEP7 z^Baz&AY#|Zd=`f|^g~1}{LB$agUAZ7Zp_+!$TDN$u^xCUc9W;G6o@0hbLw+{!m|Rj zBQal6XIn(CfGRE%!Y_NMe8T9Nr7n+P z(*=HjnOVLtlu(BO#U1<_9+u2wK*kC-S0vuNQh>=3<75rQY(IN_cEy&ZWulXwTkP)l zhrMZ&q(!L%nwSA9yM66ACCJNCLyD0`*sgc%p{%uSSEe?XJ(1KII$Cx}VTDMDAzQS_ zQ#`biJ1qn>#wpb`*K}IH$*5O(8oeuiQJg~J#L7I=Ya{DArH$R!*5$rNDTE;z< z&Y}w!Nl=V2H|OW*eg6&LjVW}ZA;OEiPD#0NpVBkB1qQD?5(#h4Pmt_Qn8p&!aRT80 zLgrH_iQo=Iauq(RX?MLy_Q=D)x)FV7aya*JZ`Ax^QeftOXK>E#)atC1>5)C+(3Rl+ zJ2^i_poU8adsgLqRprz$>;RU=H~#eu_g{q+ydLz3+zB9GOmq zED_SVcAc+xc#t=5cG3S}TOrIq2DAR39;^~52*?S=o=+48d7l#E`^b8oRLoSL774xY zNKyo{0V+J4Ook%V{C7=f^Y2Z5!;-3ZrxSE?*y3Mt{lf8Z&Gv#|8a&rl$*-tF7a9n7u@bly(vu8K$Qv^u-FZXAp9sx=E+xI*sgB!r~RpvvKjpmhS$r!;0~&CKuan$ z>kmq4wj5J)dw&$mjLIxYhz_8^v}>t4C%&tG;beEyzMob8_>mx5kC%HYL|Ep+ci&k;oMKaXeUO9EbX<;&EvPkEfDd(%PBUC(0752Tbpt&Ajc zKn-j-D}5r8X*@H-h1Zr9d?N3;u`P1*@e)`3jBZgM@ui_-2gQQJn-?pz+)riZA|;W| z{H(!zL_YB1D1M1#yWWBuy9@?;?M-NFXAJH(M&FDLPQNE(Np9A<_T0z&H&;{PRlCj! zc3@#PBcVg~@OdaT>&w+CM{Bdbdp;#4GRTO}!9gn#1$m$bPLqswngpMGnnT2kHRG@+ zhpA=OKl3dJnp~`4C^W2O2 zp*_lVLsnjFAUZSoUP$(2Xh&PSMNGeiWtT3kxY+R!?{=4|aO z!|@S%L=7&-Sp;-!cyS~PK8pk?B{k{s-~HyUH6$zN7hTD*GNF&WG2-OxM_=sV5kPZ* zQ$mETM|2MGVFA9Gmn2nHt?wBt<34wG$B!d)7! z>1d@v_O&qud{#X0N3n0We%9AJJ@PbE>{3KDis@|v_Yk%t%8gG7Wr0xX36(pK?$>q3 z4z>d6*~tqO4gQ9&t%K+O+^Cu-0(MXmk8#`R9#B+bzn?VJ+; zVM-2WOTSi|D?4KJTP=Ug&!Qvt$&j<&V6^7%$wy!N4*618#ZEvrrGWN{3?O!7N?4{6 z(kMwaiZU}Z)vh!=fL2+E!|Rr4X|__UK62{U5`fldpH^&D7=xcywH<0)zfMeZAb${_ zR}G1;_LqhtPZA>KU<$^meo^7lGBqlSFKlcaAw&1P=r96M*?^+Dj>ek@a$V?c86zH631`A*ts}8K-VhW31&$*juD%Q=b8j;;`lF z-$(98J|x4XF7)0<@9It|1CIy;LJ-XT{YUiGPQ5miI!|K53^jM!6d>>aT$qDg<0&{e({)*zWpM?E+b6cJX)XGG-2uQVwV ziZfXbNd*9uJa!c(TmoeC_(1%AX(^$_G+NyN>FVZ2_X7!uPt$Ie`a7WA!3Qc+q2e!Y zS&YM_`eJ1pn<`FO4ji6E0$p#sX`hIx83S0fn||B|?*Sw!0k5>xV~zsqi!8|n&fH!!Q4CHcXEMb;>6LvV4c#U*6%Sv5ITv;?oTJ zx`Wufx)GN8^P)dPm0y4A_I4`0_LaUX?W`wgv_N4Ie1~f|W{j1GDo$g$zL<^DcbdyW zZK!gNb?;+2oBK{fefzJD%EWpmkFvv8timi#{XvqXhsTG9mk+qO$;xx?_Pjvi^GzfU z2#6r<1|J)ln1szZ33gD)mb{)+_Y!u)C-)x>NoY>~otq@$D@&;TpbE zl&)iL&Y2c;)ZYs}KgBJZ8S}l@g3IG4ACBFYJ?swH2)56cLpnVGvg7fTry<-xo+y{V zBU*7qRR8XWF--f>Yh0N>G|9r9R9aN` z7SW$=^2gg%XVfZ08c+}O#D1I;vZd}8c2(4QKJ#*;SAWq=Y8$O{_MtJh6O4|vcm&!l ztYo`{W3JYuw%32EVPBXZ2U8PLJb{Mwbi+3>#KXqz$CV#a+xk}98YANUE&@{-dT6wd zXCj8WzMkjp+U!eJJI$^i+|ZBSt~|gd!25nTwI)Wx!Kf&GPvh4;*?P6MH7DX*jzA3X ze$Z@=tJ@Hs{PE*QGq@XhrYLsTQ?QiRFCpcF=IFkjX@34(@(yqYYN-WhR_M(y?q3(I zwd4R6M{13M|0qDSi}sX+8{f5L*6a8xyglHFUYGwtp9<#QRVg1uUdBBz%l%3&EMz&? zyZI9NW2a^4UgjfvVyR#TSF*^;ZACHq^TjukkWnf*<}`g{V_AlDm8a3$`L&b7N~SDI z+i0rmS-xu8ellK%a3%Nk`v;g2rlI1gDq*Pxbh;M`QpAVTqpot9`O*1tm3;KLr4FDK zk6paZe>-W+-KCoS!eq$D8Lg+WMI0QQrdEf>EgG~bIOqWTIdOp#)e%OWwwArUy)zRi zem}!OrRsz11%~jC?{Z(bhg&hBhOdEr#>|{ zx$JT4h-2oc9sz5yF8?7jIa`{!Y^p_(1w*-Hd+%JUi008tBRMfs(t*A!W7@QOf;!kh zZt3^>pvk&iDemNSHAw~KdlCGPQMF@x9lZG0(-~@CeIyc!7^C^6&ITe44P|-fM+00k zk<-_`)5#CU<2$x1Dk`|o7i)J;ol$<7piMDA)2&IN{Q4)DgF=VusIHI=3wT6ti?e?F zkIj)AzNr8<4^G&~VsfPHH>j&GNS;I=g?Kn?csefcPBFxTNEXGaJ+D7>Fz*>6+RRk; z-7E-rq{U5AC8_)TL$q&+42^7acb>N8>Z+D6&)XE!f%J zIkGGPU0DKVh36eSpBNhV?c2J4{-`uIqd3Q-xuvmKSNNM%wUSxrl8-mj0R88Mm`!BR ze!CIq8EIGxltVEf)Ysj$#V_j^PIjL99a|dnDUdgrq%RXu3b(<#g+@f;>Hq>Gv!Bo8 z{Y!Z~XD--J*MlA=NEF4Zmo`&FHd_fOn!384JmlPFysu+ zpy!K6wOKRhVkz3Po#sNlSZO{E_uKo6@Gt#EMVa{s@~Ammr#@swR>s(hyalXG!uIG? zN}N(@X*=@w@Iw+&BD^Prv*G;D_p*hXlU>g)$2^Wymn#XVTi71MEMKy)eWFO@TaS)< z_wagN&`5OtCkxO3S;>yfEDp*v&1Q1Me}r-QF%Y*TD>|BLuR<=jkIVhQG+VJRTHrV3 zOAoyXo&3h5JA!iJvDLfdDne*fx#iovllRhuyxV>!Jgq(tR|F&S`QK@l{Kap7+Ypnv z{fROSPYA|H)H4)~-t>mNd|*gxV608vjawvYjI5}%DhcIyikE`=I2fi&_6~dFwkuN% z1LdxoR=I>v9Ow9Hhywmr6UDpVHP$qcmu0?AK7d#FPNOc1MMWHI18x+k)*?ga0p)^@ z;5OF_n@K%6ALCzE&%vn0Ny3{c8q;zUoQ^?BeAj4asVw5in;Yz>{O(sr)j7Ohu?kYp zNWAEkxY#y&U*1=8rKaWxy=! z)^~Ba;h}dTFtxQk{d%vx~cTs(Dc+j66ZyT?g z@%>Nk$N7-nerT^ASybhfq+i#>(PEH*;F;`Gb-r)&^p~gKm;MqZjEDZA0T|q0^rySr8HJ4`)bMpKG(5dkHaTAfr=ESDax*@^ zzr3W$5%q9C|JAI*?}zx+Pp4XVbL<}SV0yKU;UU?>PTPKCtB5kFcA-EFXVLq4yXFZ* z4LC7s8*B4}&uL1XOpQ$yOibGFX=!v#HO0yv+-_EnFjkEGX^8rtX^;k`Y{F1G(N!bEoBA%xV<>;khw8&Vh3Hws zSBze3qk~^S4^;{~q;~jdF=aHOFkJ`|}~0xmohV!X?&cJokgv3#n80 z1s0AZb+s&PgXQbraK_PSPxrT|keRu?N%`g^1*Erj%eBi*lCq^eS$J}t^_yp@)WDqc zmTNzJ%bcx*t=w~1XX+zA!$Agm`i7hMp3TvCZbj_(Do^@7Jo3pn9X%fg-It9^mLj4r z?Mcx@H^2X1!evcjNdK1KSifWS-88 z;V_V9PAEs`Wa9et`D67K_MCLdjD{Yc{3PEWcGGLdR4rkdu!+JXCi;%TK+4v6OFPkL zm3y*@Ndr9}=hhT^zx5~2vas&i4#Tc;j;nu8dldWGvf+oAF2AcTPQ~i8?vtL<)p*Ht zLgT-Qrh@y5MZ^-G(!ephPcf+A(%RaOS9Lni55~m7$gk)zro#w;j6{fcq;eNQ%d@)Z z6ReK_W|iL@X>Z@}5A@Zf?Cu?9X7@=itYrAN!+D5f)f3?01vYNMqZY81(9=+InZeeJyMyo@EeYB=wkPjQ4gy8zG(OH!LjI-U++Ie$l)HfFp} z)TNrDXz?jjbV57@+$NZEgVTrNQdIeLt}tTjiVo7Ae^2NgYO1A~WM6!>zk@-ACI}(& zGmlJ964hRpU?KrL;czP1yk8{V5|P|aB}+jmTT8pC3N+IE)4_5M5I&meBUGUk-lBS_V-#uh)h z+%v>x%Qj>@gCEKSrnAX?QGFqyK5@F z(k7E7GZ9IUZond2CfnZin&sj-(z#FQ|GH0bk=H)J8wAfuH77i`k)kYF+dyIP&e*6> zd9hRWD|UU^Wz)@c=!^sv)(k1>#2kQRMN{J>uPcyke+ps9ah&3Hg zx?PXQnbJO) zs6+4^!NE4hBfwKzkT%_S_jimbN^(%(WKNyy01n#JC+Jq&9ADoh^vx|p1hcN+zn9Z& zUd}ii%-2^>jY>*k^*++%$Y$(pb!Yp;1>9oAQ`WMHzY+9uPEWh~7V|BXbIx{*t~(I( zjLb@}z&BG3AlxRTrwdp8do$H|3-N2r*7`EL%Ssh>*pDX_juc2f)QyjGC^Jo9Lpx5@ zJ)W-C8eSg|xhn7?{-(Z zE@Q1(k;4M%h9--BOeYHb!*Syi6B|ba?1XV8=OYa)z*d|;ErmIlRMYU#%B9#A+&N+QCu+eoPa|j4-glA7>Z&GOYJRx1ji}E zP~T(rw-zTSFDxJ+APj`3YY({9;)7*E0fJ8X7`dTP8_dhcr*}XUJX#|Bx}aCg&9({F ztO`n9l!I||Yj9a+4by0iv$C=}qKxX;X!Ih%w4_V}diQULU{Bt3>IN)6%Eg9%9`TuW6_)#Og<`5(UQfFw3$(q*Aq784WG^t5M+ z;&W3=czxc!dwN!>p;1nrLW7D?^p8eh6OdiZ9t=qo2YstlN-+ijAC_5$FD^AW!4qAp zXFnaF^o{^#jw(dm2ph{TYP-?x35Xj3>q=3YLQAD8MK z5$40O`7H13A(JVUMZ{yFIzNI)HJvmsn=L1YN?&0NZz+>w72CV1-j6 zMlMGZQm`6GLOTQVPucRV|GMg%u7+-DA1QPU~Ww zc&}sdPXO)~A2?E~3jAZ+Rk+408P{?^oFSU&@19tPtNP#efj#)|Z5%~K>)s8<3;0qI zA*6tCaEUYkZ)%?wg-q}}P`UWf%BkU}+I=mEY?1*BZHgY4p|mqiYxn_utzZYI@FQR| z2x|&av2oNTiC;`W@Es`FoP zhWP?mGh;ycDM%D zG#x6NJ``#Fdct9;IC#@ zuU<y-D0W6hOc-=%^r{0(rhmLnNC$-djDCY}sZeQVXU8-n7 zd>%JWBcr2_@sn!JxZ*kvwrgzw%Dz01G-QEjN&ese0^nIOMir0&_JPb6kA6$zeGwHY zWWLuGekUZz1Ln3H-$7r|U)`{d-& zSX*0L4!f)`m-Jg4m|mt%#Vp|*0U+}D$A!Cz4Gd3QcOu&k^r1+ldi9ix6ilQLsofEa zs24Aw$*hr`-gXX_Ab=buV?Cl*{daXCw~$tjTx}}SNqRSzVHTMz<4q7q69V`W8E(o_ zM`r`Si`%N{jS3#i=;4U`f!{x@&; z2okf+RYYIRSF-*&J?z?ZJN_ZPM<$kWrvIa(ghdbZYhk*b+P*<8?d?A42?+_h-ffGR zV3};Fml@fvXs3lQ($b^J>W6IxS|{U}BgUW={-+o@n-wuKONks?XizRX={GRwgWo5R$X9({kQEDeq-DJ|;B}N_ zeUFv5TSBwktyog9+PkIM?}z@sJ%NF~{|#F7T*YDX%huh_6H>e>9_~tyDM5{|ugP1_ zD5I9vMViUudSgsW75Z#8B#fHcB`6j{O2?M?;&!7k0?47AYeCaPFRmYQRlfq3#<#8C zq_(M=Nb+dU-aSNy_2wE+fu&XMZ5zb2pAeXzaYY4Asq7b`+pK-m$)=6vf_J3pS1S5S~Y&^ z?k|OfL^d)kEicAJHWDrUSxxd8eY$klrS7ViE6Ll%OIf}*dJ;D= zpe*EPAHU)7mG#o@Di5}bc(%I`y|uiR{_1NBirjMxcc5U;5vTihBtk;0TWlNu%?IZc zR>|9M6GVJcS2i6gJ#G6A-ubE?x95CC9yCzjZor>F`Zqcy$k6I;-=ipNZ-_Y2M&9{L zEH_8Hc)zqBuMS>#;*I#TGhQJ|#wKP8iSOhc4Tbt2m!F5;e1mkwB|qr1eS*3UB>p_iqlRG(bF2t}uI9sRJ^P4(_pa6vC56g4fr}y_3UIs%x2{ z%%mLo+so!)^4+^BJiGkx!7fE(qRJ`E!1g!3D1Ho)>A?q;yKBiD31!`0<_}{nC-R<+ zp13u<7DaF*4X4K~&%$2rPrL3@JWqCFI_q6OyphrI!oDX~7s_k=Y$@sdJ@OnX%!z%@ zn#r*t+G!f&hrQk9pKn=Ejx@V=1E6nwR75^L^bbT_54OOlR6-W_v@DjUNmE_LW>Yp9OV_d!XRS5lI$Ez z)c!u&wZvS#*DY#88z5+GFcvG28;wIhTKu8i1l>z5=9qx1mFk_QyZNUyuFPAzYf*nT z!ZZaTx>CDTZ)wqlBk3DL2!a`dZVJh8@E{vAlJ zb%g{~p4Vdg^)DaMf=a9(+R?@z|B;)#9QmyP*x!Swt;T5Wgks;>(ClFL8+evVMdMq4 z4wZpFQEemhr9GeViwhf1T)`tzp$MOt1Yu!Fv*{lQ&WLKKtf$vTwe3h=NEb4#RQf^c z1BETF_;UXD15vl7$@~xdPANam4U3O&YQkX5a(aCNByXQNsYyw*E}NachvkX{h!BC= zfb&Fw`t|N!Pfri3_7TFLB!cI8jaJCSoaCag<~l~*JOBgAw8LeRU*sFpdm5{RUup1X zwOy^t>GjZGbMKj%3G&h5%1+=>dnlqPr$F}UY=99?`G*1lLgA$JG9E9FbPE~l5-k}* zj{sD+^TebMbV9<9@8dr)%t1kS|LNy_O3MEH{POnp_LQ+hKTXX?v1X8@-!bA@1nIuZ zSUXCkP?EITRKfVCM&SCFPw`A%-U_CaI7Tm7)67cMsD(sd*U4ywu<>OH;oKic+lsYGqejSZNq_#1{d_s6JJLPTY7ila<{82N<-Hj<$6rt8$!@86 zBUDKvO#IPjxzg&#X{$HbNn-Qh@@uQMB?*AiVb6JzAs_IE%Uumo0~xgMRZZtm}1-WLnD^2UrG?jpWnZ zfI8%8xXrx0rfLx#8c!}LfQ#QA_BCAHPE!af{(`|Oi3{%$ZzJ{v;k1O50>ifZTPTcV zUunZ=)AWkj>XE69@$_|-@9OkF36I8*kbIDN=I5eVY=00baiJ5DpI~q$0e&(~lBoHN zb)Wz*2sTABS zi3{UDJw4|N@FgczlflCMST@JNbzOi3|3Svco8^bYlUzHIOBFXX$4O6b(~-ItO#eb`xIrRt zH!YEwoR|_mD9VK6Sr&2g`)R|QW_Ju{L{eV81+{(Yxpi>v7dfTS^k|w2kVbmmMu-q2 zp|m}}rWrOp9_G?~-)%Q{0f1mOhsZB)EgEb7Plth5;Z727)dHje2&rUSsQ16KJa$5|C5MW`69K?lCU7faVWsI z!gRLKIaiC&>9zPhooM=K$gvFiED7-=Ps`zOI9dzTNyE@k6CZes zCWZjoeH55e77b`RQ-N8cb?Xo!3QTcTV zjT%ZkJRL97-e{(lGQ^>jGFCv7q;9J#>iqc5^p2Dlj+RfZ3guQoYz@r4EvK`6ud zCRm&9MC&b9DY)WD_`Ioa;Yf@;7hn<+s7cf&Y3-HtD{m9Lk2s+v9Z3ea~i^c zT?xiiSa!wHU})~laozRF(RaTM7rd_Ihm+07@g>7^E#abu+BVY*LbmcWr|+Bf-?84W z$DMcxoufLRY*Sf8+MMr9Pi8%lyM7y8b*S@{T@^V^CV6kh!wD)qe!JFTou~GkAC}4q zyrDO})kgBLP@Y&U9%w6t{$IJ|M00{SAg#Tkl<@VUQ@5~|9nb;UkY{q$v> z+1XX2f1L*R{PLw(9R{DLHNK>iKXT*sfTEaB5_{or!!JPK!tLfzDPWJZZI(!L?iP`((jU|2A-kDoHluY`w2N24B&|%t$I1GrD)<&Z}dUn zo*=j0N*kgNO$URDBJxHAmn+CmK#YrU1-2mrQQ6) z@7ak)j3~Ou{QJ5bxK~UO0LY8q|BMkFv4E}3^1|!u(Ypv_^u5Y!rD`+|-|>>mO!umb z-4O7^lm>}^J3GVM!x<*gL&A9{FGK!P9tbk9Uja&6PM-}z73ZDSB#XhC-}!T}XNe+v zJRKj;sd4i(#s>X2xGQD6cA0ODmFR!0;7l)1yyh`?-`=c8(Eph&-ETuPPp&4H$}xyK0Kt+kKpzT!8){N8CBr+zZk=EP> zfyQ_V0C-|)#bzmY;NKUPr!~@|NK~=x50cBQJU^FNRo!=W%;Hp8N;62zt^xzGk7#USvqrb@2uvM zlP6zg@e-c2O>CRmp>-`D9WUzeD8x?cxMKm<-#;)L*MUd9vxS&=wtyX5#x+|`IK9Fd zQP;v)R5uuxAhFumiXX}pLS&xmS6y9Qmz0!rTQPz$7%b!pq{T|>Axd4OQ_YUMN;dKi z?(g5n%kca|7j=FdDOPZ8XPXjsnDo8RaSuHyNswo#gLHjacR!t7R3!{~AMV?A+3OQt zr$+XC_GI(le;k1n07RnYhdZK42G|OZ{OqZHE-+#SUrt(_AWyf~hi6x_5go!#ldh@e z%97Lh8g@QOCJ-wbi5sZT_mODQEG~PplkqW%zgcK#Tx4sb-)5GkB3Vf+wWsDH#r;Gh zC1qx2KFNeKB!f-|0f0@)DHtz{ptQ8KbjD|yi%@ZVc{O`6vylUmlQ6p+w);-bNFr2m z5n{yr8o#$M=kbW8g^uAC>x~$5-3=%$ZC+F6UG2rBa8+wpRKi6_|uTa^5aOxbqH6av7>`x@WYsj-~ z{{8CbPG!yWoV_L|p{qx-c9S(|9Y&#E=z+!$YPj)tU)8=6XLFU~p?uAIRJ=xeG>G~m zq5JHL!ItH=>LyuxB%cF z1x`Rhq`H?=N8y7&LBu5l`g2HybpQAl7pI-#$96ndx6Lu3^1{7U#W9z63A#&OeC_$-e0TIX~~ZRk_Aj zOB{J@szv&9jm?m6-G5azg--_6;{Jp!!A;bLTIomnBmSOJjEUp)-qDumEYWMkDy}GM zvBhomyh~}6>TdZP?FIHV$a}|im#H@eE$a^qb5C@$mGJl}_uEg2MEq)^tO}o(L3r3> z98*#TQC8VlA<4Aq>AS$1M@9O{U&Y}&tKxVR`s$q%IvO1`Lh)^UW!cR(UupQH=`?uyNeXv}t_ z5GZd%ABhwn$GTVTX4j#pJjJEIU-X(Ecpq$5BnXZEV**;- z<%AmJ2zaCZiX>Fkv9h1f4t~*At&@WWNM8)hMwQhZ^tlnPjHXetzz|wrvj-D4$2n84 zw~1qEN3AAXZU#LSmg!&QOSn_c>w+P%T&LMPP zpU*@bq6mJQ74^=+9%3uO&gS}m=H2kr!&!+wgzZ zSs68YHhA5GX?-4OoBKq=udJxK-6N!V9MOB_Oj_fmFwV`1;v?JF%JAL(mcYmBez`%A zPxVYv;fWFeljM1yw%m}~Mf)pXbMxcf)qFNHH9-jQa4S!HSbgH2-d<4DHXJ z!suOqJ@#rX|4U92Xw=YdaLiv(pBzr%X*?bfKyfV#jD~uyoxKNW=BLnhA=^*qeSGa9 zKZp`_(|RKSBXBM%=H|2d#un$y)Bf?Cq(~@RRXA40U*IvqPQI9^tKwuk%uWgLK=&vK z-olD4h>hF z^?fg45Z~8s%1$Ds04#4zZOL9X^;@KA9aORX8$; zf&=W%HETcGSs?iN@ngY8 zYh;^&;rJq})ZuIN$#9AisAIGnzaMQ_-LgPY?@ZM2O#LH~(sI#0#TSS#<==#=^N9(E zVYedmjIthQBUJ{M7%gI>l*6dy)JSw5{-C0ha(qB%8_vo|o&9S1VLhz$&yP@vIJ1_l z!E~Wbm4m?sG;oD1fXe3l&*EE#C-ehkCrowC>9+7LSIDm%WAD=b!P(0~iP_>euosV) z%elEWv8p?Fc{{{-(V{du;nXMgE0u~N-CrKT{hS3~vlygIaaCxIPnb?C4z&j05r>!4 zQ^JS$w)ekF%Zcg$W(+hR^c^2}r7rX@8DX-uG?*J|o<8 zD;bg_AfRWgGG?%hwPUQDm~I?ai!<9rInQkY4~>o*0E6~5^n~0YOLfC|DoHVqemo2+t? zZTyY$fX_)`UWJ*DbsvXzQkj1kQENOL#D{pSv}UZl`0LlNzRw4bzsU!WU!HawRvuhg zzfa}&NB`2FEdhXQjdR=O`+1GzW^YbcTYvCae5UG^$AD4XHx)lQ$Fn4g{!(xE zSZQr#dI@)To_6CdX%n!905T4Qcl z7>(p^>*^{x7yzaZy$O#kAn|*GHg6hWdC*0?;t(-)0h4=d0C?eG7Y@`w((tV&sUQNvxF9v4!5&%JR@= z0$=uUldYAirCK=hMX{SM_Xuepm0LUug>UwQg`&^6te9pYj+CRlHyoOze7Sn zJ?>QK{@3#>*EP+` zem>KSsLMIH6_uI|x%}WZ>Na;>9A}tOC)Y2HHjXC`ag_j{l5mig%?Q?CVOI zIW?S(N6Cq}8?+TBusfxTab{?cEpH0ZAdicPST}5=2!6_t1&n=x;q*^&~2XmO&Ea zjDw6h$~VVPSciumVy9iC^=DRJtk(TYtwu%ssM^vr!mobO;6-x-pJGmfwb^T4p)VT# z^SclLVdA(Xa~l^^{MN%N=o=2^ z%uALQ&QU&Rs02Hz3(VJ_k1TM#MiEMuWb0wRNFyg$t5s`7zELjz)*Yo*BO}h}0{(Wt zLrs--?15uFpUA!zZU2=GdwgnPiWjk>x4nl~UWEt_w{ag6N}J`jTnz{EUQwxv={DT^ z{Gp)t)75-M`CFEWtIF7>e??84h{&LNOJ`;|F=Ng5I_ETv>VKkWUW2YYRM*%8#S9ZF zgs+$ROGtosZGdi_)46ml(5g`wCz>wWHr9gTWS{bbpk;A{UxTs#ik_WM=bn^vkIfg5 z4aj!IkClY#wYoU&GE%P7S5}reHraieU-E1fQnx-O$$vZQc--*53<_{T5iO>c)DRN> zVyTQSEF2X9#j6cuF)BspVTh@gjsiR5sKGgJpqBM1$%Tkm03UAO}Pk4+8gb+?2E(dM{ zPeW)#mBwUuq24(8KgO?Rmb+^;4nS__&rlhzUy=+HI3 z4Hwy(zm$ukZqZm@isWQ0Zw_29|NhN&Gn=LSR=#l5tz{=`#AqC zqd!&7P~wGw?U9G5OS^Ec`R$4Ie8H_4UTa4D5q91+6ja0rr0Y1)q%CT*`K<%b3XBK0 za<5^lW2?szlvssC2ZyV!BB8<2XvHdyXD~pS*ySTAhJ}x#sx$Ua)RraEb5*YSBZYUj z7VMYuf-p!3r4L;(YVQNS2fmeETg;klDMeE9C#bbF1O6M&j}w~AM#D-Ew=_T7GRa>) zggD_|WxW9v%mJGme!C!V2iL0_TU?Oc);-QW-n+79R;j;Om|;d&TH{RQ*7KRReEvnp zGgoX9f30N$B4tjok7xXNS5FAcoWqSN?P5cPVPhkhLw2#ykSwt)ZR89VFikp;{IDJ3 zD|W@^LbRUr_g}77_=wo@_c&`28YET z4A^T)gyP)@zP?DPO);xdCXRW0X?N;#?S3I^_7so9P|T>EEU^41IP>iqO6_e2Ze;N{358UKva`lmXJ@m2?gc)NC=4oj zk=4HFk;E8})2^OBLzZ!zZ$kXNd2ugVfIF+-0df!oxkAs`-2EvMA2a;DY$#}x2}qag zzoCLc2*5<=0zyXjO8?66YNr_lcUhZV_h2B@vV!{r8(cbY>UxxUWXhwI=sVPAGPhHL z{mWe|wws{`z35G)7EOK)qZzGUrgXivM1w?39&RwypjS-V(kG_ys#%meiQp#spNq+P z0^L@>u*P!(ykq8%cz!aUH2X}6aQO?&o*D1~mweI4ykJ^I>?=QDipOp81yu-x=RrWk z8G-O&wPW#Nw{v|3F{Lx57pZl~z{4u3Iw&*wx5x}K4pNKky5zAlFN_h^3ux|~99QY= zs7Bc=(=&4KKh3nd7UX7P;BplUYPjDV7Qm>x^ALFvL+*@>-?Dihn=2K$-1TjYt; zrTs-X3kKu~!r9r=#o^C2Zt2Xv@DVJm9GwZj5S7iM6(_VB`+;4*K z+?r1Ti?+HM<@2{cN3+yI%93Eg?Rr7{Uh_cvL;@&<@L8`m}{*H zE;L=9@hM-wyeG9~0*m0h*=x2D^~+^};nsb?btbi%(+>oeFpqxgyEXD00blLJ+#L8nke$bO+fk@* zcQidy%ywC#5&F*sH!MP9ZH|sihAGyOqjDgY@1pjU>?%z;$FoP!Vvwdx}q%}nO(628VjmiFSq7>0vUN{n7{1mCX|p-p5M=kE~s zIx}CT(@#E%Q892K6M4sMgje`veh%MuGuB3y;B_3SU@eG!~^|78cwQ z4gB1j4XYj$7qp7{Hxl?(&sIOkaMpR-Y;#pnWlHU0GpiCACl3&CMt7V?&(|8g$SkSU z+s{8j;$@3fPV z^0_16L}lnz1rG(KG67)&T>%MD7h;7y`x~&=pUAoDp5~}yXQ5N{A~3IaU9jvxfz>faisriCIr zKL^o*%YaK@Sz0};JSbIwKQf;$Rd_2?5(@-H+(DIko5f`Q z3`{3kvxCi}#@NTO7&C(w9_YUX+I{XMi&}5T6M8InUl{3Q>@GJMU+6R{%V%F)H6%3b z^pWF(z_!0G`I@rowYz017u^)9=d!shn#?<+L&C>`PQhA0*4KqwN($d$C-C9$;kK`= z3X?g9!aqDbmp>n){o4!pXmN z;^09tfOTmofrE8_;(`zY>{$D-=1C6z_FVxtA-<;kd25JQ#dh~Aq!3*mPB&i($y8!c z88b)@{02NBg8un=-j9}VklwF8^KW;N|I(-1jw3(S{gIT>fneD*E>EYM(VtqJyX=F4 zT->3j;~n1p_%c|``a5vcNHyF|e3eL@Qb{fQdgna#fp!}m(w3}61(25+<^8SuJtriv z;Q9feQ}7m0Y+tmMk@+FX?Ni%%UU*|x!C0_r(@6B1={YV;=Y|lXfd^wh%zL_R85tQB zGX>Q{cu2ffHSzIckI(9*^xmsCzbgOg9Z)3>Aa!qH?6LQrUdh<0YG3>yKtV6}6g#Qt z4d@kO!xkcDw}1lCR{n!LO&r50vqA6adgqSa3^A%p;_V5mjEU#LVRZ!A52Qr!FFSnv zHi#Rj#ig@=7!#$LG?cDf`!$zWLNZXBt!paFg>CmJ+!!&>E$MY;TgCfmgz3*ct6|Avc2b%V7;DJS-kem2@2;I9iQCcwgq z-k8#?e-G4bbgaf!-{okaQQ8TaMo`kzz*fZm9RxasXaP-ZIU>#KN(+<+<6F~`hp;*4 z=fq|;$^9Dw2JC|GM*mh&Zz^$|A7#*#8R>+Ou}|TLkC$-!B%YXu5ImdQE|Rh}nxMNB z?EyDeZ(@0hgfk^h`s%bgm#+uwbS^t@!uecms(+9gr-~-%;Fm%{r;yQMrqC^9fNxFU z)4l<$eeqt)#UEg`{yR-j{!Nn|o!hJQXe`FKa?_Sw3Q3_~P6u~a78`sUYS&2a@q`#i zG^t%ZT)SqK0b_S$x4b~iGLVh$cDmIhEH7W?KKrRA=%QyHh|NpaSO&Lv@ zL@pdMY|dbQP2(Z{d)^w|?OOmEg|upj1PY^B96mZ@zMrnDF3KnJ%^41aZacM)HQe6U z1J6BPF0eYV?XahC!)l8TvrQ}JUPuPD0}3dE6su|`Lk#f5R3V)_W{5^+5W-k4=qsBm zJA23>{UO6Jk8PIatkQ~u5|MvtP&lL5rN~bEo+2@|>qdJkZaJND^M;_~x2L&-Vf_SD zDi(EyVDqz9m;C`xVAcMivqR)YxF*CHl%urqjhouQh-As-{#7wp37d%&Qb;C`W(w0n zHqaJ6Kq6R!3=yn-byax8kS3|ax6{h+r56a(yL$n6W?YU^I0#a;i?vqV8amzdi%_`y zUQf}n=IR5ybwfj64p4r}uQ7X>$Zu!wMk;Os(HWYV;G+g(6eq6Ko9`v4Qr$7EO*^$4)G5A}KU@05T zY_wph%SnlRuYP#s3zEmr3JmCnu43EQ#i)#VTis!Yqs)c@XxhH_-@D%|So$?Rm7ud=sEQ9jw-hd5e5MU$& z7lfQ)ZGeK?X85md6WasExVV11!}5Q_9`;|@&z;`98SeH+Q%Ng?m&OBApjU#Jm8sal z7{cn)`B3!I(;0h`$0p8y>jg>D`bc`ot=rVMtpE8$2|_mzSSbT;|MMJB@^S7@nvLng zz2(Gk@4?E-$!{aZG+Dq2FytkH!qZAG{UK(hd9xd`rC{1YH4hvVsEZJA_FG9Ggg@FrT+arI7xI5DH+kND@ zZ_SF&T3B0dl*;Wx1G(Zsr?4#$*q~Na3<o<9vbM}v9h^K3xx6G_V^B` zPJk9szQwXd1au9-Sd(_9Ov5%K%y6NSunZ7v!MKLOt# zl{ zKDPDrs7#?%lO7QnLT5DkCY{P$7%p*pa9thY&qRl;72EV{_v>S^3Krt*ZJy9bCM%iQ zXz^Ow#v7^0gY7e468qr7ItfXBy<6nUc2j6>vlC%GWaj^#Dm3A+LE!LQdk?AagjtKt zl0l-<9P^Nv@yqgv;9t`7iZ?U;6cilneB-cjV-j|+&iDT2V)_>Ror-cn(;NS*ORYI3 zWSZvV;RNDZu@F9&o%Wb|nNn}|?CpqoPtE&Pj*83ci*MHL>Yob`2!U;nq;@Tv#-7kc z8!2eG277Z{=}6uHa6TIHCH_gLK_9+%cq!*ZNPd1oegT6UyW!D$E^+f1n1AoJUFCpt z9%H9Q1PeZGEF@UbZ4q9M>wyd24m}jfOg{Q^c~&Iy%15Kf0ioGRj1SxuJ?0BgfFWNa zbqe?;(|LoYA-+#ZCE>}1o=68qFces`R|317PpEfdRcC5lg-XVV7&Y9bfKISTn}SlV zTj4LYdHp-W&wHC&0$c5tL2VW71_wGE;6xw?CYR?mC8 zB5Rq0O03B!m!6%zj#VVfr9-q|a^o9wwN?rzE5;EX3!fji7v1V`Y+Ub(Ge3)jO9i{( zc#_+7Zk!m?6US*JGw99g$HPv7dIQjy6S^aPe^s{=fpas7b;-UsX?S{_rgrm{EAoPW z41(q>)aaqyIfm6^j-{Vv|g!Ch3?hXjLR$xwjDS^rL?I zfRrZ`P|#ppD~QW&D!Lz)jatpBAV&|fG{HiC+g3CM4 zYHZwGL0>xhdv&q;=ZD|XpbYJwLuuJS^!*_0vvrpAK>x;ROG;1vT z>43=rrPMQ=qv-r|Ag>awH~A~9&0|ld*W!=_`MLIYMDHY-9~)#m@Ifdzub&?0i*@6n zdRh|<3_?lT*k65SBsc^(vyYVIL>45OUOsxi_NTA@oj$;9+S=bb_NvVsW#&0mAxpZy z6>(VDQx$CemvFkgTDfpDDZL5*t>hCJ$_qz=!HgiMQHdh9GKW9nHa~}kLoAu2nL%~C z(E~*SznJc~Hh;RT*96(Z_Sbw{4eEc_t!kaqZXv-SjoLORFyH3#zX`W2Nb?gE2}Nn36h5=b`W4a ztBdvqsC;KPvCb}&pQ&30AE1vkTze_wFeI#~PgoyJ->+(XxT7OXvN-#%z&toTJi1l< z!4w_=H56aiY^_(8IOS=DP}2N#dD2D@usC^)X1V<3Yep?Ml=p(o3%e&do2Qe`W+bAx zah@>#9KJsV%hF=uv1f%^2uV6bn$A~gJDwU|zuTH7sIaH^dwbg3-6i`-q?D7+&(B9k zM;B$(Z$}P#e&{$25iEE=cs0tWR{D*fLZh8Ap)c@t;?V8S>&$f>RG;%4*wh=Y@jHdw zOR{R{>~?QQ*>bpRB;9C~z&2#P|DfZ^hpSFSN@tU!OiQOA=j2&RQ;S_sY z8)=LNu!N8TVF;*idaZsOy;aA{+S;kl8q3CNq4((OaONN$T%(6 zzSQud;lRL(hLgDJMF&=LUCHI@druT@j$b29&=L>UdD3D)Q#C_$lm7m`O1k1_nC&2y zI3%6J$Bpq-H$4iS=G*h_VX5pHW>}Z%FJ&z~@*M%_9q;xex3p7zU6Z=EwO$POX z2cpfdA5)0YJ%jXYf0ulTLED75@wUEG)O96SDh@5L4<3JH`Y47s)_wc!KB|;23xcCa z?UO`NykcYY8?vc-9qoetn6)_41qa8Q#Z+Fz0=(J%G~dCVR+YucDFA=^i@C%JUlbY( z_S?+zDckq%%OBdkW~UReP(LOr&>l>LW(X}%*p6WziLVm)C7PfK-ClN-ZnwHkYX6K< z17YZNFh=vFA&z*^KM>9?MEt%x7!UCYhScV;9kgX&KJgO;kJh@8k@8L0vrOrOz)G`D zt@3oKd&Ci733_Jh)N17g7Y3~AopCehP3xxzY6h%j|3TkEmsPSEEL9#7Uayg8RD2Yk za+~=kYX!ME6c(evYQ8*D&}Wca0wjoAqgr>T z#%X`#Ko@*pZlx|b%1UAMmSnD3+}>Wj&FBChmB&9tOs|?J)eOcB zr~ie&uz@#qYJ>rfdTUr@n&C+S_=Yc^<=PFj#d3Jh9pd*sS8a2@RH6l`34pVqFvfcr zCv*5^0Es%f|KUV-;XQ9!R9C_CsABZX`4W#(zmZ?$1O-wWAAk8Z&U5A^UIu_`EyF6VQtFlYT%RD)peBaPTLWB=s|CWUq##6|LYbP7=fmsH2XWTdaWWGaj2+Ud)Hh%Cuv zXhVg|U0kC`_`B?Kz5=UCt1hhbO!g!}IQnl5^@(*%)mlLk* zb0bdGu3rBq7nzjJ)?Km5&I4)jO@9fVYYhT?_f3FDgqbtvOcaDpnew@ENN6)dnPy!` zM4G06ze*8hL^g=(fdI&UIR;klAd={v@SxP_6O^SMPc4Mo^{Pe>S~p%dSvOstWPp1>xFIVTA4GdU z0Z1qWA6h#aA9_1_b>2S;cB|nbXm2~Qbk#d|dPSI0goBkFA#Gkf>zmEM=?``#8^|+; zM_Ra$zzuTi)yU#iI69Q9b<4;tkY-uZ?#0N3@C5V8Ba%0R=S%L_zE0E6C5^Z6NdV(T z9})PJ;!-Du8H6C;7kthjl|Ym>sHZksgbR_YNjy`IyKB&xe5|P z)>5~Ls8rBjUvyu~vYQA*9jeGn?`qKMA2Uk3KtC*YsPFu}G&`ieVkJg$7_(x4;$ifba~ zxVDTZtXb(wEbU6WfgXU;Cqh!lt+;FSsRKn?Aq;Ey%yUI)U#M|^loGIf{IXfDMZs%* zrq-%8oy!-2df5s_g2s%@U^Sn?*=RrFeK9dodM~qdm$$WDuTnr%yK(55&1kB7{-*CV za(J46?B#Mz%FpF0-KS+?hHbiB0aS!T)do__t}=9g6CK-iyc(N}b_LBTKCg^Cv3oHs zhOBaQ15_x>Zsqw}C}+5>)>!z8g_z4$VJA@687k(tW|9QrB$cFW$C1nBjiuxa2%k3*)PW| ztma^m9_Bci1^5TZd}sk*d}6C_rqYM$bcc=a)|NL0WMW}WY-6jhcgG@^?YD6vcHbUi z*$%3HqugE(ROSU%2c>HC#;QEA5Z!m#PgX(@pn2cPm zPp+v(i&|mp+#ZTU(PiJU##m_6F(RpcKJ}t1W|8s_2Adu(HUDI{Qaov&o^3TFy1{n- z%i3$^Dq5FsvuBo@ql@N=Lu*cj>8))<^9sZU#V3N`5-&^k;oAu*@k*L(5KThLftwjuy z)Rd%`DCiuy9&0EDD}#4$lT4iw*)$wpbV#(%1a&uJP&l94dcMH8T_@#_sZ`tG_hn>W zDVf!#(spjx=_g@l2F9#-BV{6%{8CL>GVhrP6tXf^nxw3VmLG^+Ai0I&z;Sn3vKL>8 zI8TKyIp6v&eq3-h=L~!>C;W!Sf01EqyHr6~4+d5B==9wc(81`X#-k(Bjt<&~M)pAv zBeo5jOJ->}M<4oKx!$(VsN8=rme&7Mf1$RkERJZ+x9<;nU_lu^Y#xmRA!L|8b0lJ| zS*gL{v}%X0ZyWE2`8fQG^)mW2A?SE8B*M)4L3qP3KEGEoBoZNgEqC#ijNImZ4!&7q zi9n$Ms-;QRWDW!U;=)V);aZ2u;L+Zu|7=5*&T-dbO+UjD*GLbhW+mRHyUQ(YQRahi8{Rs*A9*(ptB?$Y~D&ad~Kd^-x7yayB4)9vr zjlh$;kdTN3_zb+qb-KKryz_y_qU1l(2j+-|93IX4XZ;=ks6hT-gqz7On zn%$i03Q-6S?QMHvVfPN>(`I-%%#XAIR{}vns*uBn9jZ!dOtoK_9&ajrwHt%EMC;(WE3Um%OL1;$ z4Ur6WHbcy0cfQhK{8$Fbx^Jc-;jiCt*$@hgP5dN!pz~kN;-Wp#Jx^Ws_t!nt= zhFA;E@}>3*3q&nMb5LbZi4vOrnnWp|=Bb7^A`5aYGA725_>km~^pNb3{E*_1GDm~8 zecg-R$ak8GDvq0-qzipCPiETloJ?inGx3xU+}0#Rk5Xy!cX488RS?RKO!s;Y1Z<(n zi#3$CuZ0rvCH>J@(cQ*6Vqpa*vpLqsEzJZhZp8OQZga$j7q!3eE+oDEUTCxh)t+Op zkO(7ceyNB*Ty{AgvLIwFB?aksBFlbKT`VRA&Nz)RzlVT?oMK?2MlX(|Mn@gJwBl9^ z?S0)!uW@yGFF*Z<%>F;V-YGh-KJ5CvW81cE+iKV}wrw<4V>PyIG;XXWY3wvs)7VbF zmFIiklfC!YC-+&#$Xe^qYyRfE*aiZNrR1_yZ^4JafOi3N8Ullh)$7w2(g1={h6W_8 z7RX=YRF17(4&E`iyrYPt$fKyE=%bjU*rT|k_+LO~6tjL3n&KAyCSZ8*0E>p715Rn) zl)O-jTeR`)c9Qq)DeQrucc`WF1Fn~MuVGuA6*i^qKXOA98Q&)`+n-6k-BXoWgdf;O=2%hfZZCK z9H939G-UvZUiJ&aL6lXAfC!Z}QeU=>y*J1DxSNZ+?B?$;2)2Npz3zU;4GRf(F=J8V zUVB_oLgm7yvsk3#KuB+nU*0&`IdhyYe{Y8b41!OTbFN zOCXXpM9>D$0AJZb4s?OZh`eb}C`c$ts7RMBq|L19NF0@;3Na-)K92*V$MW*c zZ#-@3=^@)ieK3bV?c@%>a%ny-(0{j5%Y%mi3Qfgwaz&{SP)f>~*EzEMLF;bQU9F%G zz@!H!91M+N|7WTs@cH9^wc zx+wU~9!Y7ru5+2A3JsR;&4NuGO#!}@B{{fG5PcD{4TC2zHgK?d-!ic1KC7bPHQ?2< zU+V}9bnK#2$xr`jca=&-Ot1gqac0MrlY1gl8l#l*f`pQLdoIcExgSbv70Ov&>oV}& z^kR_4*GJVF+nvcjojVY?QATsdWO>#_xvscU{B8pWL@cnMMxwLD#j2-mqT~72)7(~s z&1d!>8g@*f>(;{73OXfAT9uL_7zi=oVTvc9V|^F`0V+e{EzmN=6XN4h z)?MCUwZ16^+6Bf0RtEyZ#^}?>*h~14(4O#9XL|IY90KbHkN2Y|PF-Xdq0fx6G9Bv7 z?x+fro-Au{5%pra>+8yVXJV6d{vnx2li+rjYg*&Gky@g|?6~QTHDuJ}2z<2isRs8=8~(2rhM{yD z-cIU-mXi(wL-wHr^ZyA-x~!zuYP03Ov{tyyh?&s#1bjy!+3Fg3ACt>z1o9jj1%?Gi z8OE`dkry5hqz%ddt$^^hYqi454~$RoO}>x<1C9;lLvV$|U#Vs}l|i1C$YTc1V^-2n z-qnB(dd-~8jc$pd2y9rYEQ2^htLTjtxS)UuBtw6>0zFC?sR-1Q63;-RbYAB|*`)h) zgh#vWdGFO5uXK#KS6}r;a?JQt`)rwe;tlLmfhKPOX3#7+g%Rq-NWb&VQ_s?Y_2zXC zRk!6BKA%KNdt!Juu5|LL4fkhI`XgJ$})fNwtS78U^ zVi65JgHAJ;f(LCq=*T>E8Rpe6XpJmr;i(+Xp|NH6Bm(@?KTZj8XReGnO$6We=VfFw zlR2X%#X9qiL00^N`>nip2k*UAiSSrm1cHQJgn~p}`WIe&-ooDy0~tkqMxlSwqqvMd zgjR=5gq?&Trn&~(eT%WUKuTMAs10P>I^jwbuY?0+lZ#oyU=BEHUS2IoVal6Zs)J#0 z)3u)GPi%N&* zbFtDC;%lch*43qwcz}}rr%hk(xU-Fz?3@Ew7WyymO(~Pt!C#(R9iN>wg|TNXf5Xgu z=R3Y-l}d}-KH9bXsMNWIUY0>^Sq^PxS>Npi{3xsO54e1xdgb;AvI^L}BC4_%biSGi zq2WBp60wrpq`P^#4amg}*3E^>97N`_!fb{Iod$mc=F(9c_{U-Z`cT|1+yeJ5ACNat z{%5=yK?ZU`0n`c3*_VVN@P}6fyx%Zt76it^XZS@NOOj{!O&fVdn6N*43bbOTv>~sr z_7w_5DTBfLoUC8JcC^@ME!RA5hm)A-qcUTw$IR3$+kfxwg=xcg-8x+>%=;1)w8Mdy z)x~q7Lk%7ojm1D+89V$}4EiUW19G1KQw8qpEK)$^R3Ht?2j*O&n3J7C_gY++BWT0? z`_Y}x@AcL4=2Ut8=qK{IN_*u{`PWyM8{;Kv&i%XsjeIKy{9bv<>F6(s8xir2YERa8 zJZNvF%*3BudEO*T7_bVoG2TmDX>NWL5nH1-2wq+ofKLB-MQ|*2HE>&Z3i`aT>kIlR z`Owea$Buid#FU^kqkZf1PLSI$xPFB`g5e`Mb`KE0bD$O%d z&V|8(OTf32vKJi;87KW-E=P7aYG1=S<15;%wtlRo{k<6~+It_=C=jrhejPkKUGs=B z^26o(!IM&{rPWm!()no?)5G*B$8(_J**7AdptVBk5&p0^10!wu72o)$)kiJ2#Y)rkR@lu5 z_;;nrHE~rb;wJn|=mU+KO~A0@lbW~is=Q0}268M) zqVdNJzyMMq1dB)u2#yRw;Fu*J?%A{D+61NrZNW$8m|1H++1)OE`mGg5l zhMu|fvNnFLXQ@am!`*FwU}={|v4jq=J*Z3ZHltiCN;CwFgFn1F04!ztpwMR;o`lf z)7HDwso>w7gInnJo$&kgnflFj0^WSBf56u|8H_krIbPT>?DM znlVL6H5)g(y&``vDUyazkf@NI9G)JeZhm!cszi?o!QL~bck_!AMpM|&+?Ust!iS*) zSFX3?G)D}74kCPirVZt1=vV87{u;F0u)Bybyt_wA8~t4bo6j{kx9@v0!D{W!j}AdB zk;=`tl(MUkHNh5O`P*%K{uM(afLz7v#plHj5}Vt)-FoarFbhlsW5)&LW4uPZ|2}Wx z;lWtLh=#D~X1D;3gM6 zPQ!cNIx%+hx8avzw`!5J37Gk@zoQ6{tgX&ABqY-k0j|U=o1#hL-_KL~r-TM9NTXAg zicMOJ;w`5$2s-XmelzAs+%Mb{Q{WJg8UN_tla$@fopBoT-q(h9CMjBZP$hIcxIu_mAQC*`?ctisXYlZbzHny0c!O z790&?fruY+OqQE8#&(niYrTxIFAU5bEUMl4yv#%nzZ0jbH>>FZ%SWIl%PO_9)Pvrn zGdfiCe(8&pixh8si0SjxYyvTcB%=JWGQliLPk!&?iT0<7-*@9X|E;yuuNU8= zR+4w@vG2aP$v;?D8NRQOk5TE!ZCllbE$V|Il*$>36DSBCZM2^& zKaW)_T8(^rKJL<$Gb^=OuTTxe1?qv0vlRn4ywD|0ci7kWKNMOJN?b3dghKm+5deam zhU5%mrS=nXhp37k<)3cnyi!I&dQ9wW1~qz;$C3-Im7EQ0RVBia;+ig*XE@JFI9Heq z^9vP#ZgNKO+Q`qkdtxkQbv9Uo33s!G46Yg-mF5r#7hZ)DNW=QSH`UBOd zI?Q+kiw*xXuvkg1Du2BVd24%Xf2qz8ryLX?K!h$1OcI(4e@D=$$><&s@~XDQbZs%p zS{r$p!85^<$>(LGg!#LEXV@Hg_lz+J7q(HiKx3M&e>_cY8pjr{R_Khr`J!7*Vj<9u z{MW&b%O%0!XimSHWrve1KUW<d8;o0Mu>YY)KN9DpA@mmhlLAgGToUlUD$0OuR||gzovP^Tn+-0S(5Z{!=uT>)d@;) zgmu84MN!GUK2Wwa6LtwT(z2EX_kFv6`oS7)3FmoxiA}gvt}4;i3Mu5$~%@b&7eff>!2KR7v}tB5DXg5Pa{(+-kN zVC^>NkS7}8MVHA%k?OHe8=i0U^FwnC#77}WJ4f%^h~228W8|>fh3&m!FFs@;uPrbO z6F-@4*0-bW8el_eG2(%#l~@@wq@?*=sUJ0aB_NkgnFzZ_EMWDucx|@0iP#jPYwU46 zi_n_k+<6aU7qVC090{BcSz4LY8UtJ7!gIP7T=OP9Z3-#g2NWO9K;hNR17_yZ7Yr5l z1NU0ZmV9KhmICPx4j6DgEWp^p=hJ@lkh&duh<4vixg zqL+@6qKd;x*K?3hWt7uxN%zoEYC+o!k!z)ro z3?YIJHOIuq7_36=1;H2=xA@ zhZ?C)t~1bkaesY+KuZvOzfaL9bx~Di8Q5`FCGO`!h{F7n8kIUJ^8sJ!5PFh(b~8Cj z`~C_wZW?TYi9NRPfRYf&Mre~ZidTr*ATn8dC&(i0^m~jLYx?dGqUx#0iEzW;tNDMm+HhuEre}h zx=`=<*%h*k2a6BgS#}&{x>G;^o>tC=2_oD++YVG0+E_B3X)d;}>Fdi48lxR?GE5I9 zvmLzTFzR z?9-EVpqo`|(1t~4VU97<(bcS$KE2VcKl4c;ODEHPs3~Ti#;cusLu~vwmNWkE@V}Zy zz7B7J=Z+j(a!ZlLgjYJK{)D>U?ICe-Mp_B*J&25)QJ9e@MJIn|yh?d$hQu=7D7qn- zg!df02eEVc#s)iI4C5X`OPwu>ollTMhS$9kEyc?e6IV#Ebc0^ zD%~~{6rxFlufjHoAEwbv(ev_oz8v?DA9&49zxVI<{vWxbAMbo&4p)c^n@PC2YeRk4 zdB~M4>vtBIoxLimE23m8b(HtihI`qUHdgN?hRX>%%08{}$w3Rl?am+#XW{J>W+4vw zC85s@M$Mg{?*uQW3nVlOCE@P8c?fJy+JCd!H?#4;VQ5?89V+W%9SJ4A!XOBEf~m!m zGyMgaWyzqrG_k%=t32lX4w`{}Dm@SnEH_MK2++K~E=YHKtVAlv9hf%g znU-14R3rGbWP|jbQfWeLenB!wU{F#L>Y)blp&>e=^Y806Et*wMOiJe%Ap+Y~tMGhO z^qRJKC-HAS@>`Yd!{_ob2iK>RrTkn`Buv|i$NjeI2QGG z*aZ_Q_*BZ5MGW@08<5WG{A@Mx@WBzAm3K$#lFwJYNnc?z4znAk$-$ewUl^7iL^RJ) zz+r+0&BT26Ea^s*n0QS+yVMT%p6#Y-O4!vJ^;YElh2n)8tr!#QWV45aYERCVT))K* z&$&Z8QT~%p9iseDyhi`!?#L0?mt^1P(^k0X*+adXQj6c2S1zGbx5rD-YDh3KKw&=7#bt0x)}r1JKAnlKl}E#N z5mGD3JWU`uwI@c+ZKUg+AW5{77N*Jra+_=(pM5f3lARDk%V7}B1c8IrqR~_;MWM|D z%XK%_BJ>vGC5g7H1uIPH`18kp8F@tGG*Ko#5%8;#=L;Hk^Jr?Wcq$6l)I=6mV6)iv_M_($|3a1f0xg zfxh8GwSnehB&dU-a2S8n4E+nLwUs)9ND~yYV4 zq|;#`+_!o&7k@_|3;ZSb`#L@i3&X$Ytqz+k8Hqllz?_;!pHjh_K_TIPxdUat-tqZm zTX-;8G^00frUpYR!pM_>mNugLv%=yIoHaiW;~Lf5j_U=xo_D@t^1g_t7LBiOl1g_! zU$cbEiYKJYE(^aXtE&OCAU2Vxap3KsLH*&QEE7RebIn~`--d^Z0io(aAcxOp5rzFJ zQJtMyEmGWIRZ9)rh?Z{YVA+m_(&rc@5#BmkIRp|cf6_SX3(s@-a%bOvqAPY>7z?p zS#B^5wr;UqVy2dG`X`hQ5sL0HavHWom=s7q^bn#OS5|{@7pMC}9XA12G)l)T2mf(j zqjIGle4iyd$y7Tx;t5|Ydt*U|o7uarQ-sPsSQATfFi-=(i|zTlN2!{$Dbo(4(^4kv zuGGRsyzrAOqTjFYR6DpZ2|@sC-2XLn7dY_EE5@EYrJ{1cv+4acYo%Fy(ezJ2G?e2u-75kNL zgU~=@?{xx^f^u>wCL3~ER%23cd66KDK`lv`xaQc}y1%s)P#3)o>yoH%SKe8FkCH5t zzwOFiHIN74;$-OXbol>q7Gk{l;T6+5Y%&BL?n0wGw!M5)a_CbMGpy5}u@%QP1Axaz zz>?cP#%ex>DNfz+xk@wAx>~zQden@TLnp8i%of6|8nP{DfT&%soktF5OD&t-Tz-X8 zIuF~HJfngAlP)=6PTMUDC24FH7kv)nQ)DMmI3>o092DVn+{mu~8!}t(ajIi%a=h6i z@(~cz&tBk%=~2elEeg4DFqxxE3o1{I9D?_1 zy?_((ZtD?~3uAu*{!|T!;Fp6|3WhVqfjLL22UPM*A)l6rvR`>3J%2|u{~#uZZwAEc z8EXr$LbmZ^BphG{(84Y`x><_nH?~56yN)QHAD+&+S^1YU7_)pLv_76Dwd0gtPxuHB zsnUx0mx2<^1G?cCX5&S9rNM$l5!$eici->yyv>AlL3NOJIvuvq1VG&|M98aJy>{{) z2{H^YD;lg|Hq&8PKDrtOE!{p>iADGRpAi+k{ERI|4b;KtLHW~*4W~=x_Y6?|V_6~O zDnD#KUt_(HqR}F>Qi1-2?~wx=fKNX>s0z$zcQ}?DRvW$X1rvwsoecJ9rbwn=EeOPN z15pAd022`s*biO>(;cExJ;e9&dcS$IpJq6l7w|@hT{zv51E*rtj31z9)SqseM6EP& zzC`RR-TJp>5ypfv;nPKq=SF0)V7?G|`z1k;H}*O1!Iy_`J9=5%_L4D3xChE2uY)T# z;uG4S@yYcZ9jqr zk`hrZZ`{K{Ng>xl6_j>QUwvGX% zf7d?71Wqt?^jBR6sl@}EcyKTtPRKt4=5Xh7@IJP$+u4Yrl18n6fF9O*?JlbE#6lNb zI=zJ?W6}UvAi0*xqziu#vrZJ#hi-J*Xnxs$P5>`CpvhGY4Y^h&N{U=4{d!e+p?e0t z!Wf<(hxLKvLrFo=y$(zQy5 zgP3}SU=f(Dg93*@{+?RBhZ7m<4^88DvTIMk^!z1ZEEQ-AiyaKQ2_iCPGCIUzLsX%@ zV6@r>+{@U^iY*?Y`=2;*O=I!7tp3ecd_ecEso?hSasI88nB64F+R9ZLe5++>s|r1; z#Z&Ikq$MnvXtYQw;3Wupc26xW7p)5<{zWR}TL+Y2iVN%lVO`h@WjAa;Mr76-Nk~5F z>i|Z+0!~a8by79qfbqM3S|6y2GotKja`QhglntNoKN&K51w0|Z>%b;&adkh;ghdFj z3pM%8;k+ZMDn!^2p+et$Ev86ceTkm1iluoE{M)m@SCE{b7vv{>uipl8Fw`!_yY2jR zY9kXiglid4dQ;R$IeTzV_9(PQ(2byaYnlAFK(xq4vs$R)LDS;Li#2cpKhYD$unt7< zrcEpO#ywPEr-yT;sP)uQO~K5e0)@A)z=t4La+(LJpIh(e@C!nhf>4Dc?(R&RJy2O^ zv0%G%*`R3MSWCpM1MwEveKZxHQ|{%YG>8X&$W>ifr9ia(EXW<|Jnv@6LWoW+GVQO; zQACJH&bR|bC4Jb4Y`C_JTK)}5CGz>4{SUYG4NNYJTo-??TBwoILYaL--^CRctYvoA zu1i}|#AE`+h~ZNHMo7|bdy)%nc8danoZHzLP9_+S7F8k~x#ZtMRTd0%du14K+=!OY z`enR7!jE*Ezfko>9Uvw{!3*rq|9aZml9vdk*Oz0${;q?om3e)-Edn-McqUDQ{$RqR z88dj+=8(Lu2|32KZH#E|Q*xA2NwcBp+@#ZOba3!60rX(~GUYsGmX(*#Z?6L=BCtsM zYcx0u7@Fvq-^EbX6mcV%#J9U&*+}s;99*5CyFtSYVTc|qgivOCHp}$|P66NDg$Pdv z8ih6r^xAX{l13tYRvJvhjaurNd-N|%L_zrL~-6C|!)0S4UxWeRO&$+)Vh6VOd>8r7iEOK&Sy&giT<1-nsS3e&&noMFR z&s(cIm6pR)tLT;F+IJVl`*0QwpD#83i*w(;`CMBm7@I4Mytm`6%_l2}u-@g8ruo+N z`Q_*Mz5CG;^=vguUZdKmI+NISEBh^+t+GLSO!M}3yxp`j9}*k?(5^ao|X=) zR+mowG9xO{uNrOXAGf~xhwxc&TbMsaM!y0rVm0buX~nk~!E1~Uny7G%PDM3yNdjI} zG0P-Sn}tw`3RwH1$U*F3W=Y;B2@~^)kla6}h`GUSH+b}@6@T$Kcnagr8U*ymIi1PdNX%@=g z@Xa3fd%B)%z$?VuNJVa#n0=*DJQb@)MmQD%em)qO$}QHUr9sDPEIK~Wdt9YavEyFe z$1hcS6-MYp-3A;WkkkelNTbm)v3u){2dvIFexgMU{o*tE8TugH#*0O#CfVHj!UB{L z#QOrlgLJUfxOG~Z1mhf(%vOYJi5Z~Cqj*qSNv#@yLw|%Oz~xce>I48Dp@~}MRT*P8 zTECgT2}+5OBjl(Mx3WGVr_cQ)9tB0FKyu4m4ki03M~z==lFEd&5Guk>EPQB7AihV{ zmcc;;)Cj)Ay7#0`rs1P+dch@*x@d|!T%Cc=7t%diR~VP5Egi^UYxeey z2I=T6N2b|q@~h2CxA5E#y3)P)ymvJDp{b^BviZpRQ0Vi8{Nn0~nCCm?)uCF|&nr@j z;K|u$f9|gyv;J18=IkB8=Dk0k2lPLIMUQgjMl->}AyXYGI94G|7U_$}xq1URS*l!3 zo%*;8rh$-pZA|pNXB6#TzX&usv zCU;kP1hKhelJ^<9f%1ePLE7NK^*L~~_!i^vWO*1lg+U(3s8QYvu(ooo4(ofST{{>V zeDw@a<0#m)D&1Y~X=5`u(7v+YVtqmky4;!(2AU0jGfShKLrq7}`3 zuyypEc;vI0vN8>FPMLZ*i%PtsaC4>L=<_yti`U)Pr|0|6XuwsU*cdN^!<)`;_E|{& zcglAr$1nGXT@uJ(pG?wFe88?KKy1t z-B%7(MQH0uqm>9GUU6E+2m`oQdV_LNv0(AN2o__z;iEVophY+{qj2{L`wh8ZG?Xt} z$>&ib)9GUlqo)x^Dj*mRh@evxJCQlB2@Lan{6{6Z#qMzuu(SSllc6?OZzzm|@a)q{ zqE<#7Qck7|0rGB(3-jP137P_FQ56Q;wX?%fNwg&1e~vj2o;Ct-Fe^9)G~)u}>g6uu z&4~DP5qqi{gXUP_vkgTL`!~I}dkeJdz_3=Tm#cL(+L*$J1fV{=C=k^DN*5*LdX!{< z-}|#1&#pvK=xh=eyQwA>ee>Re5w}st>{8QJh|NRV0@gSw#88wnD8I=*C0R0CZ3YVL zfy;*)c6Ub`WUDlINDp2WB#v5$;Cax|oLQmneeFzB8A}&7)t8kYWpY`oCjOn=B&7iE z<4QQ_)bx3)XXzbdNnVo^YGUB^uZWUnr2t`Gpx#TI=KOH2$XUp-x?3R8SH{%yKfbg( zjAlNDA|#d94pce-<@w`me)I%re5RsewEgh(JlWX(h#@~Wyx&S#v+!x?iKf^;t@`GOqDG;ONo-4sanz1u}lKW0m_NA1(O~z}|bFb^?!yF((vJ96= zsB-{q%D^TAuI(;yXaZkR!Y?Jmhb}7KqX=;#1x9k2CJXjj`TT}&MFE*{AGvc{tNg~tNEH%@Am$L+%Ev5;-=H_Nu@6{KjHd0TBOX9}S3aTF! zcX5W)v|P~0k^=S&1C9@s2d}J2s*+bDxLUm|F3tj{sem+q6W2*NS7G*oQ3`L?qVxlM zFAQE}CmA}C8}391#wop^jPxs4$=zvwzM%ek^^kE%ZE_f~tpjNb0`<*V&z7-oMy~&4 zs=CjxWfS~*5qjq+Lfoeh+c#gYM@q`uVPxbw@&ct9mP3FHx9L9)vS_0x!-j}92dQ;| zvpXxnD~KMH&ZfZ6MLlNyhKD?8@OuTbdDb?KA`x-1NY$-Yp_I#vD1F8CCV_511Qpi} z1^W!{ZE*TOFg~?BdwrNdu_DP$8VnmO=v-Ae9zumqr&*FAXenVlbN0NU>fMjqd2zPh zHQJ2xk#@MJYXxEIbwjQeqGsUZ#uK(iefNYmuIQ{Wn!i5G69Y)}_TQcTF7vm=1G1X& z?`0t)hZY6_iJm8Y&(HVgj;GubIU$VS6u$ugG_Um#yFHrb9-eatw^ZaRPoeCNuwJ^IM z?XsQ9`hPIsI7HzhF>cj}&9%5otpQM5)VOV$9Zpd5d2_i#4PRJeF!((kq^s^*pHlg4 z84}%Rn$|062Wu*`lgTc#lXA9#-Po>wqnVcrbOH^|G zLonm&Ys|3~yN65_vcI|x8paeg%Z-hZz?t;^5oW~yc#HA<1niJloCpb=c6;7KZYLjE zTA*KZeY<_fU|X*VVA9Zb{$kh=q*-J|U}_f85Vv`s5eF@l%zg~;da2Q&I&YPXq^j^1 zC0*#k?dpJs@#!-K#~R~%G#55(sKjRCjZ)=QX)?*{*5?C+1`u6oE}s`mEbJ@0)?z=m zR=>_pyk$NVg|(x7TghECPp2fX5#KhN*$Pf?MWKskLV~K8^Q{T*N8M)L>cTmV3GAwq zU0;kLw)%)PM7c_2*Laq?GNkEvi=dl$MYRDMKe4&gILz7@SUu?cNnns`zBk3HaP0cj zTF(G6zvcedHienoQFqqr&845xg1lY z|K>tnxB;pE7hf-Yx1iX2M?rXq+K3s5D~NbV09`if>bk#d+DYxQzZ^5)3M6LTw3x7J zTB5?^G-1F?(thbs>|KaqaQR`|n@p!Jt6RbgJ#f9uL`x4bSC_8rRqtkkED9lr0$&Wx zwSlpzYR=Ex4;bq{%H_#PrX*2&3{uwWnb@7OLjP)18pX*f*V@>Zg43nyR*;U$_%^4@ zH=m-U&eD%wCGQGmdi>-9YH^if`RxCJHpFCv!YSp@5t2#$Y<3raNFnx5BEi%Y!Z~9A zb0Y>YglMo_Y{0e_fr)r*FGm5!gffvRjgsYxRwySjn=3J*ZS3a2 zxk+LFo8)+<&Y8utAOduH+<}x)^kIL29O;`3a!kk=0=#l==1r^uJox?n(Ilz)mR=~I zHGOjh_~g<*diJ^q5v{z9OJ*5;-gCY-(I?8XNmXG=dU?B4x*^R*=f2JNUgMr}S^1x* z8LeX?VkhmKQGA=+Ecp3bmls)mN~^!$ zn06C26k8KMs}blYJWm!rRLTVcfVMZ|Iy~kI(Rq7$`6%08{=L4Eo<$ks7S{83m z+^(Lc{;oW%^3}lY{*~FpiQykFX@d9aG8E_4xS>=Rlv?T8hHt1vj3Fg>bHlDd`nr$G z5I=qSZ%qipPu}oQg_4iK2RD_AXB8uTi{9{NI9!yd)iG@_^Ns0G1HNdxm)3cj{#=0~+D&Sx7yk(?^7O9@o%< ze)QnC@SAi}Cyty;wzg-;%aem`yn;QXyGfar`&8xsTnO|vVc$LeGju?1t$eIc^}~T> z5R~ySQ!wW+qS&I;xNxMdWIkjeWdGj|1Zi*zM77u%XGGp46+l%cgayNdhYH3~?P8MU z`i58_b2v5U{dT<8%A%AjxPq#kk?RsAP;BYf=lVfWhnMPRb41Ro}CANy_&T4cAorznOK|$&ljS^Io(rUr%L%jV4(XynpOGD~qBxqte zD6$V#w4gi^u_4`Nea2Ws`yeX3>Wa#4vET>F{ne!qVO9s|gM+=;z3@^K`b6&YBPrer zffxoZPdEfIK4d3p-N2uxTj1{RaXq~lI|?dVEIbVCc_`K_vqKwgE+a39TlVww-Oc_h zpFDgz6z?5`Fv0#f)d7&+C*u;)&vt=7uh~4$s0>AuRGh?$dci==onGsViKyV5u}@;o zU|X4#445I|A!#8WA92L<;%!ZjV&^H2NSt~in=eVNnAKcs!2KuqLqEW{gq_@uC(DhR zuxa|gi%VaFnY9>%k1wA+DZ*K<(1}{)zGv&dE?^nr$iZRV4sTto3Glh335~ScXA=;ithx9e>w{&Ek zXh%%`Y=?=8i+j-EDGGYe>lu@!cR599@yaa4Q!Jq|#x;0<1${Si{>ZFJa<7>q4_;%OB;mGEBr{fGZQ)qL=w6Ib{-N8!~xC-r7_#2Y< z2>$amnM?Gp6&@t-x9n8s%C(U%wJI}(Qr3X@K{)UD-O+;b-^qA7o2ldr89OtV@v+(} zIMg8Qb~k5{4wr90ADvzixB5T3Pi#bSG)t0fL`^*FWqRpdNA_2GdIf@^MY57p&>}ub z!`EC{s!8UokHaJ){@MPI`#9GQRU6ar`(Sk11%jko)qR7JXvr`!IKfm6d3no^e#6v` zd&uXPGo%eFKvEAjoBHBfb2dM*Rt7W@K4o&a4il^z@u>N!;jXv6quXX!>tT$ z7qj{b!F-~BMwpDLx^2QM@RKdAL{8v1^jdg!eL*=ijxLp4KXUI3Md{f;>M)y@V>1;}SheFB*3ODFP`5DFG=3 zDZ>qHJ!>oh&nH@x^pUk{S=oKC-GxyLvZ`BN80DB>VYcMTiZWlOG~h#P4P;KBcTL36 zW}5nfsK;q5^>cR+QI*?ql@Hj>mw5!cN2`Q@a&^bL@VUHoL9&$m7WlVYvW2=| zex<8tM>8u~7ZWVNl^KJgO|(ZRt#kf$Q55GZ<39EyrWM0F2%2-<0So&|_{NC^K6(jA9_vT4L|SUs0ddBRK{8Tjv)FeMWi za|ceOlA!njELh+3=^a=4^iJN#=Vt`Nm9*`OE2rPOpiYk}&6*vePD#%EaTM~0X%~lx zNKo%@si6MAPS(JO549X_eDniUSR>vAY>Fj?@VCWK5`*5Ju~KzYiJWxS8Umjn(L+kb z*7BXFJ6gfK*iF`Yi~6einy6$An7um%>s~`Y482s~jo|DMjS?t8FP9SNMl2wDpWAbN zv_VOY`#L?WdU0S`h!2{lI#Q5NNMBHw4z(DX|cP)tt*Oa+utP$kA9s)K^X z6Nwb^X3xb6G_^2-mprWsy~53#ZUhWb6$R|BJ^rt4ptO54a`8+V$i9J-&8l_Ov9zWL z@3U2w6^=vf@W$oLyUeFr)-8F&{L#(c27T+ZVdv(ZUdPb%aIsxQ`7nk&+vIL4C3*ZG zggjRG%^!AqA9b5A7bX{G7Z#W^5I{io|HFVjq|eL>vjT<(uDt^nxB%97e(vlCGpaGF zIjS|PV+&d#M5exO7mNzYbI`#U5}T0DZd4;B-x+X{aiGL(D3spf)JyBFj%vJ0s0*S~ zKtWAwx6`)yMZH)}7=c&{T;a8VFg2_i%P@$EX(G`3XR|r0)n+;-GpcY?mI|%47I9X} zaa_Lx(mWu^m6b#&(n?G&hnxxN*_ZtBk-F@s&;2YQ7N26tL%QS#+^>6*d+hI82$frS zEmGN@(<_bLn7ql}9t9ZMyJ!z2@*jRhG(xN1LV^~J&X>EOo-Sts*@p~oE1+cZ*t|lV zzT^vjBD~Y1T)=#6S|WZhMl7)?e6CH`jZIjuHPt?+yQ~sQQ#XbX1M?2v0d9 zi`((+j1RO80tOkgleRqbi2j}=-J3=!QxcH3(FN>emoh6f=xinhcvE^_zN1sN5EWPC zKqxK;0(R9OWkdHT8Q1lJnTo=4e%8--r#DphwtM-K8Wlu>UiB(x8$M+aKWwJiX0w@; z_r^3uvpZbgQunFct62dP5f~6Qo7{}IfGWD1@6M9OxVZaND8zljrC_N2O`rh5Ci2rIC7aM2KE2TE})ioF@BAi73NoUk3nkxC)|At?wj zHBH;Pp_KD8J&Yl&Y-uiKAjU9^h{({D2T=U-mcQSNc*f1{O|j^u*+G>wO$F8KRf5!?x*zdC9Wu6vE& z3}oO8y1Sg@z=s#5N6M5j=dv6}2E9Y};l&2e`E;hoWg53bx;~S24y#0aUul%MIqJP?~{?A&?RC(_IDsSFvPv$eIm`z7hF@ig#8fuyf) z6n(}`!A_*x8+Q)W8l8!ikgWGd1u^CD!^V0j@`XffE+lQSTlxBfGb4m2R(u#xXdN%H zBKv$@Gefs2s=l0n?Rpqs^{}qllV6XI1_|#Cq$1*C*&{~t2@86IlcTZb{!w_c(0(+j zx3Ih*-*abVlHcL`!|bDJDX}14&AGc1s0!nO)Rxr zCR*>(e0DY2x~J9v!!}u)yw@Ulfn9W$s8t9o!+k{rFlIoJg7qq5H zGG(|*Y^_PExt46Fx7P-^sRVktV}YoLqSH~Cq}*!u(|c=fyCa`vibf@ud3?G>eLlRR zTckOdQHQm%4D>!vIzFV2!YUr!#a45RI=7csE2x9G5QT*bXr9kt&jkNG>#Vle{3>_Y z-I?~IS|~i~fLmiwath;NZ4(l-t!3-8mfr0P*zb)euZQA53tMfWHDJOEgdyz#KL(lu z?kw958c}IBS3XgxRc8{X7k^nHsIkigZ(MN>2+PaEho`3$g5*=4sjXbja*<9-rgu0^ zU-uN5I{v*Z+F^vZU`4Z=^9=dEAVFJ0I1qxOh9L+JrNaEN;C}0U;pr_hE+QgcY(||* zcj2Vq)#n(;R<-+6HbtX{^GJu*Xi6L{CX=*R;4gk{j}|m>5e{N5GIeQ^)D@h|4>*JM z8}!*PFVn`ZBBG^$hD^t&aJpxwB1QJqkNlr%Wo#3Fs}S$o+A6|(bknAXF85kY#(G!X zM?*(KXaK%KzkfJQdIEahYoX(cNejg~hLacSvlt};O#nj{0iRq=wuZtK@(t_gF7(pC zVwUpV8N4VD9oZ=yei8Q))?TV0yN;2lG#zV>>hSN1g~$5Iwa&{NZlB{?C3+lNm{=U; zua+}d$(&t0<;CjvyjU!>k}Y&RZ-yPIqpx}I?#{#W!k4jWyI`G?!Gdwc{uf;zQw`MDi~;vg=%CH~Ypbs;%^o3<$uqG#Gzt_h3uXd>oHa$dO9#ibMibcNe0f>I$F=sl zL=;l3W(EV_H<5l=&p2xu*-IC+kP;JUF7)u&d)*gX(y>hS`Cw=yTJ!bqwH@7 z4%ics@>6SU?JTAaJoJ=u~5Dn9wL!u6jQr9TJSK+wwF= zjF+2?6ktIeEbCYjZO-=VDKZ1}Bj!AwEjL8zbOgDX&KJuWFro0d&ZDanuafGDmsEZn zH?+SaahC4NT2>DFT@8~GufsDz7(%=5!BCl3&sJys7Qf0|S?{Rm-Y+7Y_)0F63r{J3 zcxD!gu_(bPo6u6iOA3p8si>%f_NEL#CMb0-86|K-k9{hbz8wt12$EHov@MP7Hqnaa zKxuxq0jXcYK;?m?85bo?a_a=%FF!Xq@IOa$)&o-_Ca3u{X*FXIO&G^hw|B7`1Y-mN zub}(7@Fl@v-#Ub|KJY^Exv0!>$J12?e5ks;2lhW2-;(@V9#rIhg^&eWdEQTG{q4HEZxB61B=RE-gqWzXr-#c%5m)xeIAbiPG5 z-i9<~?|DhFVDjurV?}nasPPUja|_=#e(c+FVxyQ32BX72}1M8%p>HTB-91 zieNI-!7_A;c4(7x?xl)W zIqWi{aI@1hc=19@@V!xQ>x`$;{PyP;>~S%<^qT`SK+$f+qiz6`MxgD;JhZhQk!{VF z)=SgZmIJQ{0L(SxFG0w$g8Nd%cm$Et1ZHM?$Psc>$#C7Wkujf(;zGSc3QQiZyjWSx z0ln9h;plJVqDb^8$1p_%)qy*)p0Uhrw#S)dKc(XJ^M=kjeubR|9F~kt{uD@Yi!d(F zD*g#xh+VE$Q{AZ$mv;sIr`4`tZhJo(#}7S``Jsn_UDl2;^Vnb^oc(w8=2L?S>Yvj> zgz5uXuWvLj=OY3J4~%kdcWL+gHuWwNnX;+Z{?NWsqrP9K2Sk3xeJ4yW?X^;Yc(%B( zPrJE2rQyol=K`hZy(UrymGh*arS#%abbpm2kMersKcypwhXanw2e&a5epOuJw<_{1 zVkswDNJ?)U?d~02EEVg|#Pylb5RK0M`k_r7;jKh|y1P^&RdUKo9*Q%q9iIT7W)6yc z%=8Pw#f5}AVXrpIEdPkAa4zM-OzZ}scAUoE^)!XpmA!i)pA{BDf|or9J@;HEpVsf; z<8&!Z6EWGY0VPHM`|)0@po=Rl_P^z7P; zqE>Nl9@SAXX`Jh`GAA6Bdex_Ll&^p>Iy=hj&Ef{Zfs^MZ(!JfXn(^!a9>cX(yK!6B zyQA4T4%h%~lgosZ8@AYN9+&D@lnYf&{q1RDI~DDn>W|p&htYLTfpV?+gWnuxTxQ&6 zU(GsbeKSlGD{n`A@3z<;>->s}Uulrwxe_*(g6eAQ*ESpsOx5Zd5fVULg z#_F@}A~%t5RDg$^4T*>bguKe!gY&SbZ;{9{7kC^MB)ah(RH1ZdBr|^v4N2{k6)2U6 z2M}l$+uX;sM8|c(l1MGLXoM9A1aF*7rm^nJmnzQ^SCi#uwd1#b0?Xbu%`LNkF-<|H zjgWdkJ6?4PRaT6vdf8~zanNXCmoBC0KbqWtvwMlA!b)MTS*OIJNl`_d2?>r=HWRtH zAWdPUfXC@tul1!|3)j9g@~KMscscmihH@g>tUG^_b#suAkfhS@KdXkQmi(Ff3dVt* z|1*RA&+MyI$D@t@OzTYByy-37Z(YnvFBbeGa^Ib4*7(^`{X{Fo42&SsT{W0y0>8bIq9Z6o;aapSVx2t8yP4^?7;kfOnu^c;exo}K&t$>2KBkL(Jd7JdVFwX zkI8ndbSH19mitq2*e{on1FyMe8P=M=#p0f*k8%fCt#McH4$4N`<3DS0S;Wc~d0(#v zz+3Yy+Q7=ag${?)2Zvcp9(zSZQH9{w&owGO?|v(&c~Wo5H>i-i3l&KXE7^7ebGH8R z{93D?to65VzmVuwsII6a;XXl$s!~`t4$WUcIbb4n(R0qk6XTL#GV1V}T)PQ5|DLkK z8BQOa61h8C1=qHM&oNWeZ8A5+3fd=#c2u}<<$|96G51}+!D0kOeX8aPb}u})93JOl zVMV$Vf`Bi55CH#yub!{D1Yfafjbu_%Isk7H*mN%%W$cPAkE=F4svA5YoB;hte?a?d z0aex)?eIl-^6;d@3=fo)4EN2V>D$#1N!cAkVpA#^Z3i3ZiyuC0Z*FFwv?p2VBx>r< zavnl7Y7;6YPrwt-z*UKRwU0#f&bNJKbU;Vw+Ez!o=31)FS&cZSNAF(xVdLXswNjTUX^( zQC4uTn0$r)xW=O8p9}7vVC^-0)=@lBoafIX&H3f6&9}Pr@sg$}_LdN~jK~wl$AjE| zV4#}Z$vG@PZf|w!?@F!7uRP-2_iG}_{d?CiyU}7w&qVCD*JOP1QB;Q!^%uDwm@;Hs zAYSV{-{C0pK%n2AX^uV4XMumYAadz{EQw4Q! zlve@s{iy+ef|>xXHdTay=Hr-5x?bh94U2$aapk5{i)4#4=cr9YPs&f6UrIdhYo5gG z`8?L;CdpKBFE2Sc-n9(J*j;E-A=^yHX%JbO55j_-51H;dh1<|`jyAB;1f!w~Sz+;T zDKPBXS=7Hx?(z^a#fLz-2nCRpQ6FGM97&d^6L`~sbq1Emw)UNA)>awoT zmbZ$!+-i_C`Q{OP_NPNiE?8@3ezY3jQQJ*aRFsPy?cg_>_)qON`=Ux;`3rDOpRBf@ zNGhWWaNi)|)Yt1ZZLIb$MoQwy5Vcu5EvG;%B4k0acwhbkXwY4T#}mi6IJqx0s{iV9 z{q~WnYEW5utMuM$|Qib|?@7`>#TGPR3^?CtTAUy(mXxj1`JrBJcSjqZ} zdaM>8EvF+aYATZoziY|Dp@K7xB&}~}gVc$FH1PBJ7qr{MX$gths3B9T{DGfRI_I$L zcc8}oN>WvYjCvWmIj?}%ONr8KcwpR}{-5aAyK~4=UZ;e-hr6WQEn<*zO$u#n?+ms- zdJ?O`=@$ct=j19m8)>F)q1}v0o6WXm+r!+Dy<#1gasPdXy@w)!au`0SayyYiD6-+g zpJ1jh386TZ`>Bg^lNQe|!TUOQ3Thrs4!^l?_Q(6<;fLYFyH&l@(pR$uvX1wjE`AW( zTJG`RaW|Q-R-Z>jEBzGjon4Lc`Jk=HxF|EWQtft7KES>76BK_IVSzDm=8!r`vIN`s z@+&lv@4*7Yy zlPWAyPed7{qI2J4kHqbeyR>K^#|8jE#-MYl^d zG2-`l3-Pyy4CR$US67bPXXI_WerH~Fl@?y|W$@?RMl6w<2DOv{qT_^ahO5z6APNjGm6#dwV*$}vpks)c_c%H9xvYE!MGbq@ikh(DtjIp?FT4k zv#nhNG^qe2PSbWf6r1-L5Q}ITi`Dx9egmH<;CGj7FZYT~FZgA6k5D-V)B-RNWAr8^ zzt&?bJRCTvCwrBk8`!bR<}8-Uki)e-Uz!`ov2D7Or#0es(Qg*kH?6L#i+bnKa9ZyG zS=dqlYwaPO|6r*S9~L!Rv9*7kTB+UfoiLdb-k0acQEhnu1~U>oE<{qkr;LkFveQv? zo!GAPT(Oyn8RBq}ej82lGJ^mL6<)40V983eSVhR*Vd3}&xwTfP{C8rIhq6U3qJppm zzT2Wv)ae%`(Kapi>ZlLV1Ze*Y^{PBJ?EPdx>LJ}fy0t%hK3Y|bW-s)%&X+P&J?SQR z?7OYr7>u^OXtpaYe{_i~f0`-%qX1=Jh@@%c9e}Sf!cU6VTIA^ z1rp5+Za|iXL}M}R*YdA%(J+0-08W0%0arsq!#`)nMK=qDRbk%j7Qe9>j2rkbv$Fu@ z9^zG+xuDPu?bengp8rCx{%6?gl zyc3;p-QAkSrH@(AZ$Wg(n4J`HB|kKPcjVqA+%_IARH~F0%tB_VPN`(BT0`jvaq*U@ zDcXp`f~vVVymxZC=}wSsE5}Y+-u4HIv^KM7yTM6An(}#VZ7B2gJ>mmngm1 z%?2JvS6NWxJS3-WAk*_#0jG@2pmQpZLmqdOwIaRC`xGv6wn9)i9!X*#0be4V!3o=t zD3|)WF>|>qeP)Z&{<%MiO%Y96Gih?r*e7Thn7whqT4dEy5aRB_h=7nlLek2jL%~K0 zvLx%hLnVcQGnEFyuUUU&uXK08LK!uimgXFPCR| zD;ISlKgfOKYkfldN3s*Mao3ITd29lw%|>(Gjp?3glYj|hLV|j3G>C6dD=7F+^3_l# zCmrL|VRK|@+S42<#-vds2B~DG-IR|z;xnxH(4t^i|984CRaRVI(nDxfX$oGEMB4T0 z)-J-FT4&PMxd2bfyLdjh6?By!NMoA}; zuDo;}L!saqcD5ZJ7}(-AB|l^fGWSiq0)C*J=g)};vUb@&L>N#{;mJK zVt=(t3Z|-fLVA%9-G%G-k*L|}#oBtiA@P!vvx^JihXeZ10%1L}{%R{lM zYDh%vHM;h-ivzle{PGkC9q^J^tt=sbxl9^@fh@gyb+E*wYd5UTRnCZJS;nY=>GYV0 zL3bacZFYBdHI+p*x-RmZCE$G%dKMO}!yT#C1%Kqdh>O$cI4jLrD*g&RQKz&XX3qAP z*jeo$a~h_eeDG3$p#WJ_uwz!J5zaG3q6O9Lj&;q`^|AFWLLKmTU zpm~;AM+F;0nOkH&-LRk29~A{zi*-f$Z8_*w1~JliqV3;RP7frRy8j5~<#NrWS;XpC zB9*-+21!=`s5&F^kNo?0h^m`MGcC31WdSn9X*rnBbe>zuRb9kdCsjRr5_*@E?%k{D z##uB*qNlHUXRuD$yiSffoJ2}*4MrN$y1SyK9*a0&=nwoN(_2HEJ(2hr3a?wni9poM zF*-YpGa{Q#HUOtC!bdX*gc>7ddYxHh%*e;0NOhjd^d?qj6mBh7qYPj(Rnpw}IN-*8 zI1QGig2D z;NMXmEjBZPLXmEkZrZ}bM#KDw&naS)Usz^{^f3q=3I)%x9PW^2$WkMYSLx!f_UlgT zuowVrP>QXO51}0cd=~f#CraFoN9?FMpRJsLaY?(VYloW=@bF^qLDz*f7bmu7MyCtP zRG|XKJ|<~@Q3ByW-;_l!ZDzWMoYH`U^;R^f87)yg@^9w$jF!l7Yg32)^F*&ONrcjf z!5@_K+SE~wNV#5+DB_OA*O=!f%V8Sy<~qavB}jI1%_(23G^~~u4+hL0PV26V>)wtj+2_p^mS?`nf@-J%V9S9S`M zJ{RzRlx^lDf-aQ;G}yhG|M5*{A*boY{i2DP(-IZ`@xYfL|$ z7%v!pGoaQpu^wZ{63cx*JAd<7MSV}_>G2A9L;7;kqySimOt%85tSY6jn7VM!8^_k{ zggIOQnJXpw&*Y|G zn3bU?1)BcO>EUU58s%Rq9srcv&0ya`t&vSU7ipUCjt#Pi$C?&zv< zL&yeF4^lv%6$;&hsZhhyADLm!DHb!tn%RuxwhSD7)~`Nc24AA<6pX?{IE20r&?*bP zl`wB1fNNhrmipZs2eBMTUrAfKUmz`{vZ3wVF3#^rJYTiT%VU+?lb9WtohmGy6n~2| zJ$~#!S?HN&L4!r011v-VS`Yf#MYm$yK_vbm5KiIf!h{mK$Cy|*&j{kkpk*;A&m?%H4_Wqio3vL((kuG6#ArQ%)`;zPU; z4ADaMYp|f+wTos1r&iU`Ob_^EcPW?A&jy`UGWsMeWj|tWWCl+ZUT=HGi13Uq-NgCzGk#V4uS+9hkWTb}pP~n{>(6X%dY#j#;7sny94V$5hqit~Z~{0n zt23e2WpLVLhq+~azqe6Lf|ng6VM3GfbbEET3<`mm62v6BK)jzOrjwh2C}&`nq^l|1QN{RPJt-6TrpxrMq z1>SElte)d7XjlhND6pVFGc+0)?EL1&sS>FI+N%a<KpThxkp)yftlV!*dlNmiC%6;iFh9GA6;s~SHS@| zvHAj`7UJO8#EUserAgr;Z3#DOi+S&dB{Kkbciy5YEiU|QsDAaH4MFJHQmoav z_}c~DgiYioUQb)U?dHjJ-GMXXa8Rz$y@17sifkY`lu)`HF_PLWjDy8w#4Y`SK09Yg zNr?{u2&9fE;vOms4GI_0r8_&_aliiKw1kKQrNXnYWdZ_mSgH$JTArB@GsFnqT+xP3 z?Si#ixz6D5wyMlPC$B0cJSrFzh7SgplK2}+#z@00UW;_N-nXRoBfhYc>-=7S19@NG zC7TBB-y1fiU8}?oczt-ETvsgW4eu|_;|`*}?!P}y-lcY7K(Us*mXk4beMO09e&{;L z3b56yX}S18iBZyxz}ZdB^7nmdN_<~n`s0UjpLqV$)%M)+7^SwW#4n2zn@C3MWfphc zb}R6WXT!1x6B62E0nI!T7X_&e-OZeBwU9xt5s2!fKG{)3CjhLEgd9n6>x-;xVjo{H z2?Yzs1K-r-aDi&o=!p+14MFuVRZI3$@;V+o-W`W+>tRI^m5uq!N%P8-i<3G**E)xT z2ZaaT68))%p42q^daAA1=+dglNEFsc!HfFXpQY6JO3q)X0SWJ-i*&NTsK8CrQ9!q${*qn{bLzM>0>z)7e$o{yB%JUUZi>XvwPB*~)4@@M4w`L>v zcFVAhya)xrRAIf=T3MsZElkNszx+RYDq434EbIMR&C@fcL|`zkaTrELV=M3?+CH2e ziuq?jwh;eJf+Ta7!I;Y6tcmE3cPmAKA0$Hsbueh2N5SjQknIg=qB3}hb@6vOR{cQN zsxM^8FIFTXA-@l2@+HWV>PkM@-1K3xlZru3Q-TA~&F3=bGH01s=$v6(8C!Eo1MG z>qKJ`$0YeMg8I%uD6Y$`Fj8lJ4Rmz;68 zig;_j2H>HZwJ^f+>=V-;=(1C;y2po#+%l(zUdBlr=mF0_U9`F}RYJ#XF}=RV#JoGq zn4Xliw^y-JPGQ4{3C&ik$;ZWCP+G)!q)SHpUH9{_E=!f#G*}mA*I!yHK0pa~B>CPl z@W|tLi@SuR)PHmqEAbej1~O=4I2}Ki3mFI+^g4mIIK^y~UWXs6%tpig!1D&u2#Wcx zsg_Y=ksQ`D7nS5*r{k#sQQXUmN6j{y^4Hu*vghnHOXiDbU0GUHz!!n0bagswO z7B7xCictC}7K%1+S%Hmp3HL}lNjc5DUDinlQ>r)y#BRi(3(bs2vn#G3XdVGhNBn$y z5Sn_xutE zhTauarEu3Q#N1KzFmh@i_ALO-00RqBZ|3a5>yj$`s}tNz0gyLN>gwv=Dk+%Qxjq%3 zP}aI`8zxO$AoS3die~;ZIyq_*t%@>HYUf=NRjsv)#gbYp6bO91dKPi*#i$JvEV&LI zr-uPN(qCunv<%tE26zD-tyV)WWL5nlMq*YOk4U+P2`neaxRDTL2MI7R&}6Bh8_@v= zDmsT|z`bB_3E2xKVf+>HPO9C!5w2I+%S=r}L$ir+QdU-GNL)SVwYI>v=}b>ZfK9QF z8cD^+Czo9Fp{X>lgn29YjS8<`pO}nG#of6uENaxBd!pX>gfKcDu z_cN54S(&lg+zSq4vJ5=@U$DL{@}W)w;!;I1H}?{nUsx{RUi;X*AmlMom?pnHDgK75c8R5qo&pAk>x&O+d7G&jz=?jiKJLgxKR)m|9}r3 zDZl-CzF5Rx5JFnWT&m|${XHcPikt>k&PIlbrX`L`$yR#BVsn-GEBHc1sZ(7_lK2Pa z+Eiz!5uPiD&2M=nW$+AJP7`MT#OIO=ZxRFFP1GK8Z{-!&uMZ(;T_y!IDlKY^@Nfw6 zUAKoaJAY+iL2XNatI@F?YLua%8|+Xcq0UK~w?ObQkt<+9BBHL5yYH;1M7LC0OK2d; zBxE?a+!OS)Pz_X@gVl?^b{A7kDOS4BR425Yw(7;=s1*p=06gV_t74@Ncdr~=O(CG6 zZBB=3!#^^W-Wy?us9i1!;^)XGTv%@r=-rH)d*(wEPc>a$InL@v4GTW=L^c90h3S!z zmrBh3RF9~(Ke%gP={xptS?H7OJWNQ7V6^GqOGfN~P_Sb?Zh3t2zXAn|-IH67$c9Hp z^PisR>2$d}(XR4#nZ#6N{B8aF4+T4eq^mQTT8rN>lpI;o3k=|8)c zNd$}B04ECQirBDep{H3^A}J3x|GwWyw!j%tDV5CefEa;__PAsC`Hmd`08o0RE*TYk zeW{7ie5gE7V*EM3|4mBjZ{@U`uFciPSS|jg8sCfC^UwJ7lhxqAM2~QeDV+pRuf~t( zsQ+SbE|wM0JXom+WA1pA`(Dv#S(X|anTSaq)M|gBHI3w|%y6K^{*eD`SSvH-A|yCi z3E>)vgHTfm9ik>`+s#a3>H6D0<3h4Mz)$Nk`m^xQiOTiW^wEV^zcH3>Tm7l^doTP} ztkp`46GKQ_y6P(05vJK9eX}e}GM#7e!k7Oodn2sc>P6V3qdHTXmlm;+KCnc9VO;

N{#xis`mY4+u&*hdQ^(>CDO> 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 q_J6get(); - $r1 = ctx()->getArgs(ZM_MATCH_FIRST, "请说出你想设置的操作[r/w]"); - switch ($r1) { - case "r": - $k = ctx()->getArgs(ZM_MATCH_FIRST, "请说出你想读取的键名"); - $result = $redis->get($k); - ctx()->reply("结果:" . $result); - break; - case "w": - $k = ctx()->getArgs(ZM_MATCH_FIRST, "请说出你想写入的键名"); - $v = ctx()->getArgs(ZM_MATCH_FIRST, "请说出你想写入的字符串"); - $result = $redis->set($k, $v); - ctx()->reply("结果:" . ($result ? "成功" : "失败")); - break; - } - } - /** * 使用命令 .reload 发给机器人远程重载,注意将 user_id 换成你自己的 QQ * @CQCommand(".reload",user_id=627577391) @@ -116,7 +94,7 @@ class Hello /** * 在机器人连接后向终端输出信息 - * @OnSwooleEvent("open",rule="connectIsQQ()") + * @OnOpenEvent("qq") * @param $conn */ public function onConnect(ConnectionObject $conn) { @@ -125,7 +103,7 @@ class Hello /** * 在机器人断开连接后向终端输出信息 - * @OnSwooleEvent("close",rule="connectIsQQ()") + * @OnCloseEvent("qq") * @param ConnectionObject $conn */ public function onDisconnect(ConnectionObject $conn) { @@ -134,7 +112,7 @@ class Hello /** * 阻止 Chrome 自动请求 /favicon.ico 导致的多条请求并发和干扰 - * @OnSwooleEvent("request",rule="ctx()->getRequest()->server['request_uri'] == '/favicon.ico'",level=200) + * @OnRequestEvent(rule="ctx()->getRequest()->server['request_uri'] == '/favicon.ico'",level=200) */ public function onRequest() { EventDispatcher::interrupt(); @@ -142,7 +120,7 @@ class Hello /** * 框架会默认关闭未知的WebSocket链接,因为这个绑定的事件,你可以根据你自己的需求进行修改 - * @OnSwooleEvent(type="open",rule="connectIsDefault()") + * @OnOpenEvent("default") */ public function closeUnknownConn() { Console::info("Unknown connection , I will close it."); diff --git a/src/Module/Middleware/TimerMiddleware.php b/src/Module/Middleware/TimerMiddleware.php index d90d2570..95661b94 100644 --- a/src/Module/Middleware/TimerMiddleware.php +++ b/src/Module/Middleware/TimerMiddleware.php @@ -2,6 +2,7 @@ namespace Module\Middleware; +use Exception; use ZM\Annotation\Http\HandleAfter; use ZM\Annotation\Http\HandleBefore; use ZM\Annotation\Http\HandleException; @@ -37,8 +38,11 @@ class TimerMiddleware implements MiddlewareInterface /** * @HandleException(\Exception::class) + * @param Exception $e + * @throws Exception */ - public function onException() { + public function onException(Exception $e) { Console::error("Using " . round((microtime(true) - $this->starttime) * 1000, 2) . " ms but an Exception occurred."); + throw $e; } } diff --git a/src/ZM/Annotation/AnnotationParser.php b/src/ZM/Annotation/AnnotationParser.php index 0024768a..d2c8aa0a 100644 --- a/src/ZM/Annotation/AnnotationParser.php +++ b/src/ZM/Annotation/AnnotationParser.php @@ -33,7 +33,7 @@ class AnnotationParser */ public function __construct() { $this->start_time = microtime(true); - $this->loadAnnotationClasses(); + //$this->loadAnnotationClasses(); $this->req_mapping[0] = [ 'id' => 0, 'pid' => -1, @@ -100,7 +100,7 @@ class AnnotationParser unset($this->annotation_map[$v]); continue 2; } elseif ($vs instanceof MiddlewareClass) { - Console::verbose("正在注册中间件 " . $reflection_class->getName()); + Console::debug("正在注册中间件 " . $reflection_class->getName()); $rs = $this->registerMiddleware($vs, $reflection_class); $this->middlewares[$rs["name"]] = $rs; } @@ -297,7 +297,7 @@ class AnnotationParser return $result; } - private function sortByLevel(&$events, string $class_name, $prefix = "") { + public function sortByLevel(&$events, string $class_name, $prefix = "") { if (is_a($class_name, Level::class, true)) { $class_name .= $prefix; usort($events[$class_name], function ($a, $b) { diff --git a/src/ZM/Annotation/Swoole/OnCloseEvent.php b/src/ZM/Annotation/Swoole/OnCloseEvent.php new file mode 100644 index 00000000..d0ea70ee --- /dev/null +++ b/src/ZM/Annotation/Swoole/OnCloseEvent.php @@ -0,0 +1,22 @@ +type = $type; } - - /** - * @return string - */ - public function getRule(): string { - return $this->rule; - } - - /** - * @param string $rule - */ - public function setRule(string $rule) { - $this->rule = $rule; - } - - /** - * @return int - */ - public function getLevel(): int { - return $this->level; - } - - /** - * @param int $level - */ - public function setLevel(int $level) { - $this->level = $level; - } - } diff --git a/src/ZM/Annotation/Swoole/OnSwooleEventBase.php b/src/ZM/Annotation/Swoole/OnSwooleEventBase.php new file mode 100644 index 00000000..e744bca4 --- /dev/null +++ b/src/ZM/Annotation/Swoole/OnSwooleEventBase.php @@ -0,0 +1,49 @@ +rule !== "" ? $this->rule : true; + } + + /** + * @param string $rule + */ + public function setRule(string $rule) { + $this->rule = $rule; + } + + /** + * @return int + */ + public function getLevel(): int { + return $this->level; + } + + /** + * @param int $level + */ + public function setLevel(int $level) { + $this->level = $level; + } +} \ No newline at end of file diff --git a/src/ZM/Event/EventDispatcher.php b/src/ZM/Event/EventDispatcher.php index 0c5e8489..21bb3eab 100644 --- a/src/ZM/Event/EventDispatcher.php +++ b/src/ZM/Event/EventDispatcher.php @@ -5,8 +5,8 @@ namespace ZM\Event; use Doctrine\Common\Annotations\AnnotationException; +use Error; use Exception; -use ZM\Annotation\AnnotationBase; use ZM\Console\Console; use ZM\Exception\InterruptException; use ZM\Exception\ZMException; @@ -17,6 +17,12 @@ use ZM\Utils\ZMUtil; class EventDispatcher { + const STATUS_NORMAL = 0; //正常结束 + const STATUS_INTERRUPTED = 1; //被interrupt了,不管在什么地方 + const STATUS_EXCEPTION = 2; //执行过程中抛出了异常 + const STATUS_BEFORE_FAILED = 3; //中间件HandleBefore返回了false,所以不执行此方法 + const STATUS_RULE_FAILED = 4; //判断事件执行的规则函数判定为false,所以不执行此方法 + /** @var string */ private $class; /** @var null|callable */ @@ -27,6 +33,10 @@ class EventDispatcher private $log = false; /** @var int */ private $eid = 0; + /** @var int */ + public $status = self::STATUS_NORMAL; + /** @var mixed */ + public $store = null; /** * @param null $return_var @@ -74,41 +84,53 @@ class EventDispatcher return $this; } + /** + * @param mixed ...$params + * @throws Exception + * @throws InterruptException + */ public function dispatchEvents(...$params) { try { foreach ((EventManager::$events[$this->class] ?? []) as $v) { - $result = $this->dispatchEvent($v, $this->rule, ...$params); + $this->dispatchEvent($v, $this->rule, ...$params); if ($this->log) Console::verbose("[事件分发{$this->eid}] 单一对象 " . $v->class . "::" . $v->method . " 分发结束。"); - if ($result !== false && is_callable($this->return_func)) { + if($this->status == self::STATUS_BEFORE_FAILED || $this->status == self::STATUS_RULE_FAILED) continue; + if (is_callable($this->return_func) && $this->status === self::STATUS_NORMAL) { if ($this->log) Console::verbose("[事件分发{$this->eid}] 单一对象 " . $v->class . "::" . $v->method . " 正在执行返回值处理函数 ..."); - ($this->return_func)($result); + ($this->return_func)($this->store); } } - return true; + if($this->status === self::STATUS_RULE_FAILED) $this->status = self::STATUS_NORMAL; } catch (InterruptException $e) { - return $e->return_var; - } catch (AnnotationException $e) { - return false; + $this->store = $e->return_var; + $this->status = self::STATUS_INTERRUPTED; + } catch (Exception $e) { + $this->status = self::STATUS_EXCEPTION; + throw $e; + } catch (Error $e) { + $this->status = self::STATUS_EXCEPTION; + throw $e; } } /** - * @param AnnotationBase|null $v + * @param mixed $v * @param null $rule_func * @param mixed ...$params * @throws AnnotationException * @throws InterruptException - * @return mixed + * @return bool */ - public function dispatchEvent(?AnnotationBase $v, $rule_func = null, ...$params) { + public function dispatchEvent($v, $rule_func = null, ...$params) { $q_c = $v->class; $q_f = $v->method; - if ($this->log) Console::verbose("[事件分发{$this->eid}] 正在判断 " . $q_c . "::" . $q_f . " 方法下的 rule ..."); + if ($this->log) Console::verbose("[事件分发{$this->eid}] 正在判断 " . $q_c . "::" . $q_f . " 方法下的 ruleFunc ..."); if ($rule_func !== null && !$rule_func($v)) { - if ($this->log) Console::verbose("[事件分发{$this->eid}] " . $q_c . "::" . $q_f . " 方法下的 rule 判断为 false, 拒绝执行此方法。"); + if ($this->log) Console::verbose("[事件分发{$this->eid}] " . $q_c . "::" . $q_f . " 方法下的 ruleFunc 判断为 false, 拒绝执行此方法。"); + $this->status = self::STATUS_RULE_FAILED; return false; } - if ($this->log) Console::verbose("[事件分发{$this->eid}] " . $q_c . "::" . $q_f . " 方法下的 rule 为真,继续执行方法本身 ..."); + if ($this->log) Console::verbose("[事件分发{$this->eid}] " . $q_c . "::" . $q_f . " 方法下的 ruleFunc 为真,继续执行方法本身 ..."); if (isset(EventManager::$middleware_map[$q_c][$q_f])) { $middlewares = EventManager::$middleware_map[$q_c][$q_f]; if ($this->log) Console::verbose("[事件分发{$this->eid}] " . $q_c . "::" . $q_f . " 方法还绑定了 Middleware:" . implode(", ", $middlewares)); @@ -138,7 +160,7 @@ class EventDispatcher try { $q_o = ZMUtil::getModInstance($q_c); if ($this->log) Console::verbose("[事件分发{$this->eid}] 正在执行方法 " . $q_c . "::" . $q_f . " ..."); - $result = $q_o->$q_f(...$params); + $this->store = $q_o->$q_f(...$params); } catch (Exception $e) { if ($e instanceof InterruptException) { if ($this->log) Console::verbose("[事件分发{$this->eid}] 检测到事件阻断调用,正在跳出事件分发器 ..."); @@ -166,13 +188,17 @@ class EventDispatcher if ($this->log) Console::verbose("[事件分发{$this->eid}] Middleware 后置事件执行完毕!"); } } - return $result; + $this->status = self::STATUS_NORMAL; + return true; } + $this->status = self::STATUS_BEFORE_FAILED; return false; } else { $q_o = ZMUtil::getModInstance($q_c); if ($this->log) Console::verbose("[事件分发{$this->eid}] 正在执行方法 " . $q_c . "::" . $q_f . " ..."); - return $q_o->$q_f(...$params); + $this->store = $q_o->$q_f(...$params); + $this->status = self::STATUS_NORMAL; + return true; } } } diff --git a/src/ZM/Event/EventManager.php b/src/ZM/Event/EventManager.php index 3fea9f3e..a0404a29 100644 --- a/src/ZM/Event/EventManager.php +++ b/src/ZM/Event/EventManager.php @@ -22,6 +22,7 @@ class EventManager public static function addEvent($event_name, ?AnnotationBase $event_obj) { self::$events[$event_name][] = $event_obj; + (new AnnotationParser())->sortByLevel(self::$events, $event_name); } public static function loadEventByParser(AnnotationParser $parser) { diff --git a/src/ZM/Event/ServerEventHandler.php b/src/ZM/Event/ServerEventHandler.php index a887480c..39d7b3bb 100644 --- a/src/ZM/Event/ServerEventHandler.php +++ b/src/ZM/Event/ServerEventHandler.php @@ -9,6 +9,7 @@ use Error; use Exception; use PDO; use ReflectionException; +use Swoole\Coroutine; use Swoole\Database\PDOConfig; use Swoole\Database\PDOPool; use Swoole\Event; @@ -16,6 +17,10 @@ use Swoole\Process; use Swoole\Timer; use ZM\Annotation\AnnotationParser; use ZM\Annotation\Http\RequestMapping; +use ZM\Annotation\Swoole\OnCloseEvent; +use ZM\Annotation\Swoole\OnMessageEvent; +use ZM\Annotation\Swoole\OnOpenEvent; +use ZM\Annotation\Swoole\OnRequestEvent; use ZM\Annotation\Swoole\OnStart; use ZM\Annotation\Swoole\OnSwooleEvent; use ZM\Config\ZMConfig; @@ -70,6 +75,40 @@ class ServerEventHandler /** @noinspection PhpUndefinedFieldInspection */ Event::del(Framework::$server->inotify); ZMUtil::stop(); }); + set_error_handler(function ($error_no, $error_msg, $error_file, $error_line) { + switch ($error_no) { + case E_WARNING: + $level_tips = 'PHP Warning: '; + break; + case E_NOTICE: + $level_tips = 'PHP Notice: '; + break; + case E_DEPRECATED: + $level_tips = 'PHP Deprecated: '; + break; + case E_USER_ERROR: + $level_tips = 'User Error: '; + break; + case E_USER_WARNING: + $level_tips = 'User Warning: '; + break; + case E_USER_NOTICE: + $level_tips = 'User Notice: '; + break; + case E_USER_DEPRECATED: + $level_tips = 'User Deprecated: '; + break; + case E_STRICT: + $level_tips = 'PHP Strict: '; + break; + default: + $level_tips = 'Unkonw Type Error: '; + break; + } // do some handle + $error = $level_tips . $error_msg . ' in ' . $error_file . ' on ' . $error_line; + Console::warning($error); // 如果 return false 则错误会继续递交给 PHP 标准错误处理 / + return true; + }, E_ALL | E_STRICT); if (Framework::$argv["watch"]) { if (extension_loaded('inotify')) { Console::warning("Enabled File watcher, do not use in production."); @@ -114,7 +153,7 @@ class ServerEventHandler Console::debug("正在关闭 " . ($server->taskworker ? "Task" : "") . "Worker 进程 " . Console::setColor("#" . \server()->worker_id, "gold") . TermColor::frontColor256(59) . ", pid=" . posix_getpid()); server()->stop($worker_id); }); - unset(Context::$context[Co::getCid()]); + unset(Context::$context[Coroutine::getCid()]); if ($server->taskworker === false) { try { register_shutdown_function(function () use ($server) { @@ -211,7 +250,8 @@ class ServerEventHandler return server()->worker_id === $v->worker_id || $v->worker_id === -1; }); $dispatcher->dispatchEvents($server, $worker_id); - Console::debug("@OnStart 执行完毕"); + if ($dispatcher->status === EventDispatcher::STATUS_NORMAL) Console::debug("@OnStart 执行完毕"); + else Console::warning("@OnStart 执行异常!"); } catch (Exception $e) { Console::error("Worker加载出错!停止服务!"); Console::error($e->getMessage() . "\n" . $e->getTraceAsString()); @@ -251,9 +291,15 @@ class ServerEventHandler public function onMessage($server, Frame $frame) { Console::debug("Calling Swoole \"message\" from fd=" . $frame->fd.": ".TermColor::ITALIC.$frame->data.TermColor::RESET); - unset(Context::$context[Co::getCid()]); + unset(Context::$context[\Swoole\Coroutine::getCid()]); $conn = ManagerGM::get($frame->fd); set_coroutine_params(["server" => $server, "frame" => $frame, "connection" => $conn]); + $dispatcher1 = new EventDispatcher(OnMessageEvent::class); + $dispatcher1->setRuleFunction(function($v) { + return ctx()->getConnection()->getName() == $v->connect_type && eval("return " . $v->getRule() . ";"); + }); + + $dispatcher = new EventDispatcher(OnSwooleEvent::class); $dispatcher->setRuleFunction(function ($v) { if ($v->getRule() == '') { @@ -268,6 +314,7 @@ class ServerEventHandler }); try { //$starttime = microtime(true); + $dispatcher1->dispatchEvents($conn); $dispatcher->dispatchEvents($conn); //Console::success("Used ".round((microtime(true) - $starttime) * 1000, 3)." ms!"); } catch (Exception $e) { @@ -293,6 +340,11 @@ class ServerEventHandler Console::debug("Calling Swoole \"request\" event from fd=" . $request->fd); set_coroutine_params(["request" => $request, "response" => $response]); + $dis1 = new EventDispatcher(OnRequestEvent::class); + $dis1->setRuleFunction(function($v) { + return eval("return ".$v->getRule().";") ? true : false; + }); + $dis = new EventDispatcher(OnSwooleEvent::class); $dis->setRuleFunction(function ($v) { if ($v->getRule() == '') { @@ -305,8 +357,10 @@ class ServerEventHandler }); try { - $no_interrupt = $dis->dispatchEvents($request, $response); - if ($no_interrupt !== null) { + $dis1->dispatchEvents($request, $response); + $dis->dispatchEvents($request, $response); + var_dump($dis->status); + if ($dis->status === EventDispatcher::STATUS_NORMAL && $dis1->status === EventDispatcher::STATUS_NORMAL) { $result = HttpUtil::parseUri($request, $response, $request->server["request_uri"], $node, $params); if ($result === true) { ctx()->setCache("params", $params); @@ -318,8 +372,8 @@ class ServerEventHandler $div->request_method = $node["request_method"]; $div->class = $node["class"]; //Console::success("正在执行路由:".$node["method"]); - $r = $dispatcher->dispatchEvent($div, null, $params, $request, $response); - if (is_string($r) && !$response->isEnd()) $response->end($r); + $dispatcher->dispatchEvent($div, null, $params, $request, $response); + if (is_string($dispatcher->store) && !$response->isEnd()) $response->end($dispatcher->store); } } if (!$response->isEnd()) { @@ -371,6 +425,11 @@ class ServerEventHandler set_coroutine_params(["server" => $server, "request" => $request, "connection" => $conn, "fd" => $request->fd]); $conn->setOption("connect_id", strval($request->header["x-self-id"] ?? "")); + $dispatcher1 = new EventDispatcher(OnOpenEvent::class); + $dispatcher1->setRuleFunction(function($v) { + return ctx()->getConnection()->getName() == $v->connect_type && eval("return ".$v->getRule().";"); + }); + $dispatcher = new EventDispatcher(OnSwooleEvent::class); $dispatcher->setRuleFunction(function ($v) { if ($v->getRule() == '') { @@ -387,6 +446,7 @@ class ServerEventHandler LightCacheInside::set("connect", "conn_fd", $request->fd); } } + $dispatcher1->dispatchEvents($conn); $dispatcher->dispatchEvents($conn); } catch (Exception $e) { $error_msg = $e->getMessage() . " at " . $e->getFile() . "(" . $e->getLine() . ")"; @@ -412,6 +472,10 @@ class ServerEventHandler Console::debug("Calling Swoole \"close\" event from fd=" . $fd); set_coroutine_params(["server" => $server, "connection" => $conn, "fd" => $fd]); + $dispatcher1 = new EventDispatcher(OnCloseEvent::class); + $dispatcher1->setRuleFunction(function($v){ + return $v->connect_type == ctx()->getConnection()->getName() && eval("return " . $v->getRule() . ";"); + }); $dispatcher = new EventDispatcher(OnSwooleEvent::class); $dispatcher->setRuleFunction(function ($v) { @@ -429,6 +493,7 @@ class ServerEventHandler LightCacheInside::set("connect", "conn_fd", -1); } } + $dispatcher1->dispatchEvents($conn); $dispatcher->dispatchEvents($conn); } catch (Exception $e) { $error_msg = $e->getMessage() . " at " . $e->getFile() . "(" . $e->getLine() . ")"; @@ -505,7 +570,16 @@ class ServerEventHandler //加载各个模块的注解类,以及反射 Console::debug("检索Module中"); $parser = new AnnotationParser(); - $parser->addRegisterPath(DataProvider::getWorkingDir() . "/src/Module/", "Module"); + $path = DataProvider::getWorkingDir()."/src/"; + $dir = scandir($path); + unset($dir[0], $dir[1]); + $composer = json_decode(file_get_contents(__DIR__."/../../../composer.json"), true); + foreach($dir as $v) { + if(is_dir($path."/".$v) && isset($composer["autoload"]["psr-4"][$v."\\"]) && !in_array($composer["autoload"]["psr-4"][$v."\\"], $composer["extra"]["exclude_annotate"])) { + Console::verbose("Add ".$v . " to register path"); + $parser->addRegisterPath(DataProvider::getWorkingDir()."/src/".$v."/", $v); + } + } $parser->registerMods(); EventManager::loadEventByParser($parser); //加载事件 @@ -518,14 +592,14 @@ class ServerEventHandler //加载插件 $plugins = ZMConfig::get("global", "modules") ?? []; - if (!isset($plugins["onebot"])) $plugins["onebot"] = ["status" => true, "single_bot_mode" => false]; + if (!isset($plugins["onebot"])) $plugins["onebot"] = ["status" => true, "single_bot_mode" => false, "message_level" => 99999]; if ($plugins["onebot"]) { $obj = new OnSwooleEvent(); $obj->class = QQBot::class; $obj->method = 'handle'; $obj->type = 'message'; - $obj->level = 99999; + $obj->level = $plugins["onebot"]["message_level"] ?? 99999; $obj->rule = 'connectIsQQ()'; EventManager::addEvent(OnSwooleEvent::class, $obj); if ($plugins["onebot"]["single_bot_mode"]) { @@ -536,7 +610,6 @@ class ServerEventHandler } //TODO: 编写加载外部插件的方式 - $this->loadExternalModules($plugins); } private function addWatcher($maindir, $fd) { @@ -550,11 +623,4 @@ class ServerEventHandler } } } - - private function loadExternalModules($plugins) { - foreach ($plugins as $k => $v) { - if ($k == "onebot") continue; - - } - } } diff --git a/src/ZM/Framework.php b/src/ZM/Framework.php index c9258650..55d373c4 100644 --- a/src/ZM/Framework.php +++ b/src/ZM/Framework.php @@ -55,9 +55,9 @@ class Framework ZMAtomic::init(); try { $sw = ZMConfig::get("global"); - if(!is_dir($sw["zm_data"])) mkdir($sw["zm_data"]); - if(!is_dir($sw["config_dir"])) mkdir($sw["config_dir"]); - if(!is_dir($sw["crash_dir"])) mkdir($sw["crash_dir"]); + if (!is_dir($sw["zm_data"])) mkdir($sw["zm_data"]); + if (!is_dir($sw["config_dir"])) mkdir($sw["config_dir"]); + if (!is_dir($sw["crash_dir"])) mkdir($sw["crash_dir"]); ManagerGM::init(ZMConfig::get("global", "swoole")["max_connection"] ?? 2048, 0.5, [ [ "key" => "connect_id", @@ -174,11 +174,9 @@ class Framework } } foreach ($event_list as $k => $v) { - self::$server->on($k, function (...$param) use ($v) { - $c = ZMUtil::getModInstance($v->class); - $m = $v->method; - $c->$m(...$param); - }); + $c = ZMUtil::getModInstance($v->class); + $m = $v->method; + self::$server->on($k, function (...$param) use ($c, $m) { $c->$m(...$param); }); } } diff --git a/src/ZM/Module/QQBot.php b/src/ZM/Module/QQBot.php index 02eebf3a..2e450a5b 100644 --- a/src/ZM/Module/QQBot.php +++ b/src/ZM/Module/QQBot.php @@ -35,7 +35,10 @@ class QQBot set_coroutine_params(["data" => $data]); ctx()->setCache("level", 0); //Console::debug("Calling CQ Event from fd=" . ctx()->getConnection()->getFd()); - $this->dispatchBeforeEvents($data); // >= 200 的level before在这里执行 + if ($data["post_type"] != "meta_event") { + $r = $this->dispatchBeforeEvents($data); // before在这里执行,元事件不执行before为减少不必要的调试日志 + if ($r->store === "block") EventDispatcher::interrupt(); + } if (CoMessage::resumeByWS()) { EventDispatcher::interrupt(); } @@ -49,17 +52,27 @@ class QQBot } } + /** + * @param $data + * @return EventDispatcher + * @throws InterruptException + */ public function dispatchBeforeEvents($data) { $before = new EventDispatcher(CQBefore::class); $before->setRuleFunction(function ($v) use ($data) { return $v->cq_event == $data["post_type"]; }); $before->setReturnFunction(function ($result) { - if (!$result) EventDispatcher::interrupt(); + if (!$result) EventDispatcher::interrupt("block"); }); $before->dispatchEvents($data); + return $before; } + /** + * @param $data + * @throws InterruptException + */ private function dispatchEvents($data) { //Console::warning("最xia数据包:".json_encode($data)); switch ($data["post_type"]) { @@ -73,16 +86,15 @@ class QQBot $word[$k] = trim($word[$k]); } } - //分发CQCommand事件 $dispatcher = new EventDispatcher(CQCommand::class); $dispatcher->setRuleFunction(function (CQCommand $v) use ($word) { - if(array_diff([$v->match, $v->pattern, $v->regex, $v->keyword, $v->end_with, $v->start_with], [""]) == []) return false; + if (array_diff([$v->match, $v->pattern, $v->regex, $v->keyword, $v->end_with, $v->start_with], [""]) == []) return false; elseif (($v->user_id == 0 || ($v->user_id != 0 && $v->user_id == ctx()->getUserId())) && ($v->group_id == 0 || ($v->group_id != 0 && $v->group_id == (ctx()->getGroupId() ?? 0))) && ($v->message_type == '' || ($v->message_type != '' && $v->message_type == ctx()->getMessageType())) ) { - if(($word[0] != "" && $v->match == $word[0]) || in_array($word[0], $v->alias)) { + if (($word[0] != "" && $v->match == $word[0]) || in_array($word[0], $v->alias)) { array_shift($word); ctx()->setCache("match", $word); return true; @@ -95,14 +107,14 @@ class QQBot } elseif ($v->keyword != "" && mb_strpos(ctx()->getMessage(), $v->keyword) !== false) { ctx()->setCache("match", explode($v->keyword, ctx()->getMessage())); return true; - }elseif ($v->pattern != "") { + } elseif ($v->pattern != "") { $match = matchArgs($v->pattern, ctx()->getMessage()); - if($match !== false) { + if ($match !== false) { ctx()->setCache("match", $match); return true; } } elseif ($v->regex != "") { - if(preg_match("/" . $v->regex . "/u", ctx()->getMessage(), $word2) != 0) { + if (preg_match("/" . $v->regex . "/u", ctx()->getMessage(), $word2) != 0) { ctx()->setCache("match", $word2); return true; } @@ -112,10 +124,10 @@ class QQBot }); $dispatcher->setReturnFunction(function ($result) { if (is_string($result)) ctx()->reply($result); - EventDispatcher::interrupt(); + if (ctx()->getCache("has_reply") === true) EventDispatcher::interrupt(); }); - $r = $dispatcher->dispatchEvents(); - if ($r === null) EventDispatcher::interrupt(); + $dispatcher->dispatchEvents(); + if ($dispatcher->status == EventDispatcher::STATUS_INTERRUPTED) EventDispatcher::interrupt(); //分发CQMessage事件 $msg_dispatcher = new EventDispatcher(CQMessage::class); diff --git a/src/ZM/global_defines.php b/src/ZM/global_defines.php index 9612da44..c88a819e 100644 --- a/src/ZM/global_defines.php +++ b/src/ZM/global_defines.php @@ -1,4 +1,4 @@ -