From 8f170f44632aafac949237a48abb6ad17dd13a65 Mon Sep 17 00:00:00 2001
From: Kye Gomez
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
- - 🏠Swarms Website - • - 📙 Documentation - • - 🛒 Swarms Marketplace -
- - ## ✨ Features diff --git a/docs/swarms/structs/aop.md b/docs/swarms/structs/aop.md index 8062503a..0d62ce43 100644 --- a/docs/swarms/structs/aop.md +++ b/docs/swarms/structs/aop.md @@ -199,9 +199,14 @@ Run the MCP server (alias for start_server). ##### get_server_info() -Get information about the MCP server and registered tools. - -**Returns:** `Dict[str, Any]` - Server information +Get comprehensive information about the MCP server and registered tools, including metadata, configuration, tool details, queue stats, and network status. + +**Returns:** `Dict[str, Any]` - Server information including: +- Server metadata (name, description, creation time, uptime) +- Configuration (host, port, transport, log level) +- Agent information (total count, names, detailed tool info) +- Queue configuration and statistics (if queue enabled) +- Persistence and network status ##### _register_tool() diff --git a/swarms/structs/aop.py b/swarms/structs/aop.py index b95acb77..bd556f17 100644 --- a/swarms/structs/aop.py +++ b/swarms/structs/aop.py @@ -659,6 +659,9 @@ class AOP: self._last_network_error = None self._network_connected = True + # Server creation timestamp + self._created_at = time.time() + self.agents: Dict[str, Agent] = {} self.tool_configs: Dict[str, AgentToolConfig] = {} self.task_queues: Dict[str, TaskQueue] = {} @@ -1980,6 +1983,53 @@ class AOP: "matching_agents": [], } + @self.mcp_server.tool( + name="get_server_info", + description="Get comprehensive server information including metadata, configuration, tool details, queue stats, and network status.", + ) + def get_server_info_tool() -> Dict[str, Any]: + """ + Get comprehensive information about the MCP server and registered tools. + + Returns: + Dict containing server information with the following fields: + - server_name: Name of the server + - description: Server description + - total_tools/total_agents: Total number of agents registered + - tools/agent_names: List of all agent names + - created_at: Unix timestamp when server was created + - created_at_iso: ISO formatted creation time + - uptime_seconds: Server uptime in seconds + - host: Server host address + - port: Server port number + - transport: Transport protocol used + - log_level: Logging level + - queue_enabled: Whether queue system is enabled + - persistence_enabled: Whether persistence mode is enabled + - network_monitoring_enabled: Whether network monitoring is enabled + - persistence: Detailed persistence status + - network: Detailed network status + - tool_details: Detailed information about each agent tool + - queue_config: Queue configuration (if queue enabled) + - queue_stats: Queue statistics for each agent (if queue enabled) + """ + try: + server_info = self.get_server_info() + return { + "success": True, + "server_info": server_info, + } + except Exception as e: + error_msg = str(e) + logger.error( + f"Error in get_server_info tool: {error_msg}" + ) + return { + "success": False, + "error": error_msg, + "server_info": None, + } + def _register_queue_management_tools(self) -> None: """ Register queue management tools for the MCP server. @@ -2699,18 +2749,30 @@ class AOP: Get information about the MCP server and registered tools. Returns: - Dict containing server information + Dict containing server information including metadata, configuration, + and tool details """ info = { "server_name": self.server_name, "description": self.description, "total_tools": len(self.agents), + "total_agents": len(self.agents), # Alias for compatibility "tools": self.list_agents(), + "agent_names": self.list_agents(), # Alias for compatibility + "created_at": self._created_at, + "created_at_iso": time.strftime( + "%Y-%m-%d %H:%M:%S", time.localtime(self._created_at) + ), + "uptime_seconds": time.time() - self._created_at, "verbose": self.verbose, "traceback_enabled": self.traceback_enabled, "log_level": self.log_level, "transport": self.transport, + "host": self.host, + "port": self.port, "queue_enabled": self.queue_enabled, + "persistence_enabled": self._persistence_enabled, # Top-level for compatibility + "network_monitoring_enabled": self.network_monitoring, # Top-level for compatibility "persistence": self.get_persistence_status(), "network": self.get_network_status(), "tool_details": { From 4d8b5a6616186cf48ffb68a7579e62d06863994a Mon Sep 17 00:00:00 2001 From: Kye Gomez)Pb=`=OhxAnoJLjHCWZ@vdHZ4})-_k_ zIpF+l{&-YJeOffPum%UivJQ44QB^D55peasi{7UN*Xgz$9#2AElRowK4vBr6LN+RA zjWzDjnmTn5b;H?fc;0~>vJPxH^N3T|pj-aM0Va>(k2$T}EZrO@ox;)qX@WajGt4JV zf|N~0d`3={LHbpLy5<2xwe!F;8{vno6cp!APn-}m2!v_^a$1(r2g$Kecb+?D5aGj_ z;k;**6Azy-Kyg+)DS^^eQEou!U0C5x3p#%v)@TaK%=2-0IA%Y`xWmj9R=bbZYdW^b zA*h)YO)6F3qB6h!_(NNa7tcxlqr#m=cNpkIG)rh&B5YK zu0Bi`f2?7UblV-UXqZssWG7idRD((W(*bJasAswGR@h RVeBs ze@o-oj0xDtsHlV{FP^UNwGek^paDK*417m^kSPxf>vHSc55M^SckkanKYx69ysYcv ztWQ7x!A~!5|LD3NuGcFtAD&)cdmb(i#MI?tk=r;NWZ!n~*5?garVg8Wxida&8e1U) z6}+C>q)(lDWRg$uX|d`*o!^b-!s(XO!`@22zd~%yHVT&{< Sy7TR zDm<0B!bp4O_565ah>8NXBi|~;xt B}{7AGe? ze~L5kAUBp<_Z0j)i19&4JfS=@F{oM-{}a-%%TsXjW$k_kf(2PQYe>XM?Q~Oi)phnk zdIpk^Dl<}Ag0Rgm1&I@#c{_jebDc&^3Ub5o5YRD8>2jVR|D%s2QmqDihPbEEw3|** z=^1wKES)3m#PgB{r#qX4Q#zV$hAiw#1=ur{FEuwCMa~5*vf2mvA)$Cv-`+^{_-7NE=Ry;6f=?u?iyRSE{< zA~mL@IL!sO?X5ay=*yC3CZjX!+_8z)H^6Y!GM32NA|E?BOrlk}lU@fMN!qY`gu0 jzU8dgsSUT{C7#oX|-x5fi7nvtxoR z41>drg_=!5m`;%hZUa!|!5t5F#y*>&0V%{0Nv=u{r0qiCT_LH35IM)MTXP0xaM7AD zOEm<+RX(it##@yqeT_P-c4i7Vv6um<$$*AmD|5Q4?n=Q$RJJ!ujv@g^+b@K1!*5Z` z_|%>#efS2)am={GsC|~L$LD!egic-HqE$;Nx= g Df-U-SKS1D8gbwG;0 QO#k$O`i?xW?*B5a3P_@>>^->p))RyS8J+Zt{ou{%Ael^eaNGKE! zV(SDga_Mrg9%>Mr?hu*gG1P>0sb(@;y_a`WrQkB`6MMm`Lbrsii4e3O$JkZQn~}R7 zGQ|Z^qivi1gczjm0NU%I8GqUmIh@+Iwl!s+5y_MOp3O8peyVdhaOZGAm3Wv@0rQy~ zMdCT0-g~p-s63pXcYnka<>mb9W+ng&@bE!Ul>DaI6s(^7*&3`G9hrW(kb@i;b>R5viS z)X35sqa0*gPdlrkcK?qZuZXnn2kE<`qC3>|%}ZgzOvY}yi^6GeB877W*N~i*VF5h? z#^(JLMtg=siv_?FpIuHFAD#*?gMH@++q*eC;Z}JJbk(dw@D$-i!rM;N7`S=A;{p3y zJ-;ToW64Twi8}3rbG-kl@M3_A5n-n=9rxZjW4jO)ty^bG`M?-QYcfb+n`PuA#lOA6 z$Z|X=Q@jhZLbSRy2F|`dmmC4?IkZ^mg*`(sM;!F27U2x`9C1E=Z344)qc%lzg*!e& zjphuw8a?v;3}|>7x;KEHNT?4Eu+mIXQ^;H~;R7=&3ygO)^V(lsz7aFd$eX4m+02}n zsjA}`43^4r`uTW%{pnABb_~CH|9rgQ?H3O(AD=(}-jCkCeRz5P_T}|*S#x03!sW91 zcH`VI3F4zQh`=R0QL~Q6@!36v>E-lqT$3L#{YGl@xTT!PIGS%;TFjL8h51|IgUPSb z*`jp1OFm&l+Da;%42W ;S=LJSJq?JCgz~U$M@8C>=FN ztV w zn4v44P^oZ{e4Oi1@A8CZa&DW~V?qT>jYET&X8&|RNcxfNVwVl*-8U6tN(W`}@vA$s zar|x9zzsz?)>zj20rp;TYddjnB07MJfAaNd5Kye8<_fQV0(HX-#@+P+S1C &X7Rm$n1h*(%#NZhiiMpi6wZCyd*6Y07ZZ{-;F3iWLr-z4iOfU7I+6Nw-@og-C zpl0cs8oL+GpRJjWus>AFNhuOC T_#BilJEO0kl +c;swZ{Q zmue{^IbOK?!r!`^C!#PW2$S~Uy~@E1 )GRy< zdiV6i>X1sAIqaX+$EC<}031LnDm%Olp6Jm~Loef49Rr&rZ9#YjRa0uwl=wTR%?cy; zC=+&DqAEaX2p6cD0L2I;Ld>*pG1r+*vhoa3#{7bMx6)bAJ*&NimOHITsc+KsWBR~J zHtg)pUbhNCvbV64Da!kjZ%f@~ZkXxno^SzfMDfaw!?aTnT4bVGIYdbHq)frTF=u#^ zvyRz2EX0g~oBbfD7h1h<8KAGH6}DZ>54HiDmQLt}-QejnIMa6(fDC&(6X>R3Lr#P# z62nrAvL7pY!~kjVW!(P>NZZ?;EjPdvs@3G5p{cEKlfLTE*Gvv5Diu~VtfhfR+x?1I z)u!4$@32c}e6`dF2JsWppV{jvC)?EKS$Cd8-gl;TiS$0h$Z*2s@?nm3(&9Rwz;V5? zq6W%hV(|jv<@WLQ_WHBm{n6lf9lmz);rj9U_^aRh-sf*WdAL5_8pq&zS*j&Q-IiI6 z>e}H32?rkGoC=KSL1`-G_Ey=GaSt&WOp;87iCsM+E!8ciRkk&uVS}ExoTje0Jk(M? zr_IFNU+0_**UWLa65`ZjTvMl#A%!rh*B26`hMtICn#8W7i>+eNA_pu(IkrA4A+s?v zx<}7 Z9J?0oLV zh1O}w-oW4<^ _$dS{ZB-3xU>la zF28T;yCsvS!_Q}2&Z+^h4~^R7DB*;HiJP0iJ%xs>RlHneFPF=DxgBru2-flX{Cs44P>SA$&f6tg&^%TtfR z(u9K?PRBt4p)mv7j@Z#|9O!1P!RUrZt!;9w0>+ShMXJh5gl6d+08mVTtsu)*Nzr9( zfrTUC%G^Jb6;K`5WgfB?yHn3207dV5^!=Q>+DL|K8JD4ul=sj?$~JX4Q5~Qee{^5H zff(^Vj{dd5y>0FjsfZaTk2l2a&?(#*r$f{agg`~rn|mTR6UG!zZGc3C6-7z~9^zEO z9mnO;rcUUv9E61J1}js@4KSLsVYaF16x7x_JkbMbC^6fyV;g$CU=~$qBPirgfbj&Q zcu{O|^dt=aLm_RO*rP2%?qkiFB9AcB_+!6u80kRqNYnkcQE3LbK@bx7I0oU=k09`b zJ(9j0mrukFd(gOYrVv;T;I#Ez`jE8Ps6 Ls9Xrgd3Gm6-ws}FFSs=JdICeN#9e;soeZ(j z;RrExfOJp!Ko4U=#CwJ`Kt wUs*^@duN^es47k$CZhmHH3|fIsfX8oSr;6y&wu0h|K{!GBiM5s2VC9r>6?e? z 2SF7Dz}>f% zm%p?2aU~v>s}nP{02#oppO2g-kieGVLnpj`ZGUfy-$NY;oiOF!J(GYmpN>MKBSG-2 zc41@CgXNV{N3o@o!P)a?&yuJA|8o++w8D@o9*LTH4rrd4p~t$a{GdW)CiuBA+b4JK zUD>uBn60YxD6nC_m8nhf+6w#Yjws}L8CT{$2V;Y+LeNfNR?WC1lMI`H^(}K0w-AHm zbjzIxg-wTGquTr^3`myMqo*7jxXrrMUSX9QrSUZxr4D;Oi}-s}v_=X;NLV2?eTZ(6 zB2$@FLLd2uM5A};o|VyA+UDq$CZcK5NGlFT+qT{c#dTS0UB(xh;$@Df<8}jXuXDVe z3u{)J_7-N6lyb^!W>xNb<647#^K@Doy1SM<2A0`*p>p>iJknevg|Oh$1OY=_@&K+a z9V=$G*>EF=vu%Xh2N)KtazxTjFurUixDIGkm4C6LUd36+Vfu%t8FyaK*=FoTg{aF8 z8$82>V(su1;I7QcQ%nvKV_Yeoba0^mK0XAFReBCiCe0GnY_=)Zt{cE0_ml~9?fpHC z58Gd$Sko!FlFIE1jfLKQI+;y!ye`N@(d<&LSVv$=uwHJqG!2b+@MPp1_&&Up+k@*N zWw+z1L5p %8SSG5T_CFJCOh;BJ$ZMT~2?0HN` z$r_Okd1Fy_&2#g%CJK=^)GY?()-~)YEtpgU`3#TVc_YM~%L%TvDH{E!diWD}PeP?3 zXt2XftR7=Bm5zkTIIqwNW~CMP08mxMwsw;qOA-6c6D|l>9QXN}FQl|*oGtM;IEA 82L$TT#%B6_Dderb_a;RO6 z{ZZs?$63My7Hi{=pVQ1WMik7>r_iu7qZ_*{*>q-{l@=di0r#Lov`SWIR?b+h9b!Qd zcRMz5FPd)tZaRiN2T(hIJ~(=&xG-E7-d>*{AK$+F^z%Rc`7b{C^s^aE-)=|09+;Xx z`^BF>eSEI9j^n`K_ImVzqZ_OvUSHU--#q88qz@Q2QQSew*n4KcPcn2ic>ivy0HMNp z?IDrNL(1=L)RRIbThOu+*+J&@;XgEGQvjpCFY0=iQST%Yj%I9*Y48B5t`vibg6ac4 z_QG5Qt-HDOP@hp%o_Q=4SR!Ce?NA|xNhh^M04e1!528nL 9Z%mc0`V~l<9_zlU;j}IZwQz7Qh;GfWN7u4@j0Jty8U)A2x~k%;=*afcgGp2m zKLHoHHoc5vYqRt5y>H$Cl7mHE-nN7?+*AN$dD2^LkOUS F>oajD!uSHeNkTC>R z^M;~>sN&l9q>L{=lI@vt>%LlVBJ`C6Y6TUk?2>abF1!}o<&>DMu`^_H+{8F8rS*~8 zq?_QjHlKRqFv>eORxvjAD>U_g5n>vtJ8w%?xuA}Fpq6$=PwusgVdq$a1!^RkkKc&L z`ql}u>Uuejo36dA;={w`&D%HEhbxK=Mc=BJS2fm*5)RsxV^_qE9+xbzRD70>vM^-_ zMP`w$;Xzd5IiE2|p8;}hA2P_xPM|b4Lr|5;j6ytb#e_^l)=>MeggGW_++&3htC2rg zpk9DnIdAYlu`?#1b5mu~PpwRJ494H5#FmLyN|quot*y3NhA=|oYQD@wPBeP}k4joX zsrck!dzxVPD3pTvoZ!vN (ixAFB}=z;kwsRO&XQ|w0Ie4QHWx@u zRHEhQL~`-iI{1@tJsS{6uke`cATXY0ljIV|zSQY~z_;g>HOF_PlC=^LOh8O$%ioCE z;h#2RUo2GM%70N>SgTmWg>nyAh+SZKaWr?_m4oHV5OQ>tT4!Gk;p!t%l&c~)!Wq<} zYW+;=O4F@#v1`q$sVD(6zP$O=5p>oVU0DBwN5y3*?j{ztcR?z)AQ~8~*ES?4#v&KF z6e~1luseSB-Wn0xjl+@ARAJGsz& r| zm~Wi0E)T0S e9z;y{YfMef}GN@HhU=zx(4~{pOcH{qTe5m#2$(@%7>I`1V@YcW>Xmd05}RpxL(` zF1Pp0;oI7o;hsWoV8CT)WeRy>xnpN%dgrkVrY{=fkTta5+e}cjIL_=K8H}CX=eB(6 z6$(Vq;8esjeePrLl#r8%6-2>Dv%JCLOiJYWSoN#dgKQ}27Ht68Wr|IT6zqYJq z2d87rPx7UfUWI}!dDaqZ^ zDMy~Q2RJfdl&0MYH7$!0Dl{{ANVBGtLfL`vt=zrg41k_z%uRCK{eco+m_`jd33?NU zP#K!pxC{` ev%-t4wuoE}rC@T;y2#6jeLepUw&ycYV z)UxO|(3a5y!I&=bq4EY3$sRbnb~lnLGX)$}BD%$0I_BXMbw}o06)C?klV {te~cD`38S2e8}Zn+{Mr`h JBa#k9@LI z5w( gJ{`iL;x&U2-jldrIl=F z1YDPtv36E_dzz~(bO194RqdOISHL#tNpr41%+Wj9IP5{>BV^UtPs54MOwuu9(V>!+ z1(YJ%zJ@m4)G (GoWj`%4dYc%#m7CbCzO` z>#1=VmE)1@R;Jxuo75lT8lCz;oS<5qT)iCnHiS}MCPNn;N%ukJNbirGG#Je?;L$ z1!;ox8P)yJ=C>UMFuO{Dn!414qtctWPyK8ba8~hP8?YtVcrdf}>aqwH;ch8*(w&V) zg=5pc{eJ`3bS5O(bboVw_&V&!1oVFa4FDKGa yBd<#ef_^&k-v+UBM;5sykVdNAmi=TcWM?g|QMXsHp#k%kv!(Iq;`^*FHdufeIO z1S2|iVJ|TJ)|>^3l8+}MfbzozpHSm7P3V!eE;cVQCRttNG8<_|EtPt8XJ5*ql)nUk zHd+#7m3t0#R*vcNG!AChq_ehB;jW6$48Tx$Y@b^2eUYSS*N~j{GPWapKsS%OYhb4P zE~1n5%~|omjgiUHQ|Yyd_BfE4hZ!^u?s|S?7_wQ3v->>H&Kh=nj--Or7~bJr?7CSi z@8=MsvNcBXJJmq`StH}^4IxRW(!*j-AWTxE5w4Iwnj b?31agAefNP%t6Ai0>2wWYbTE3 pEonxl`?r6djb7+l&*0RxoU(b@{ag(YCbfG z<1TbL7tdT}X0Mvn78ypaG;?;%$Hr7{$aOA$i?%HJWQ;|N{n&nZ5f)U@rQ^wCyR-66 zhyeX{%=JhF4^@pzkoP5H&hhqGq;-EY@*t{vF0({=e!sjUju@vy=IxX+h-6#4lb5L^ z^&cx4hm;0_Sr#=?)((XI_tObS;jwpn8iKFgYjIx;j_4^apW#?;L=~$R_IMn572J6& zRS-{812>Fj9^Obm11J)~NYE0NrEpxw{=BIw@n3=?&iPJZ7pK1r_-S>FoF+6wx1k9l z GQI&gf TgCb@F(7ymsY5rxRr6B6V{yT*EgBGX;1YrfPF4 zt4i$7MG`$roq5tET%fp8bFvQ C5YDoO~1%;}8H>gUqI^WH;=K2P!e7(Nzm<)sQ=}vP%)fX6i&%#ihX& zhgP+xDvg>dJ10eH)Un@iA+_DCNS$S}NmbA6#ARNlGl~i@y~XUJImaEfN%@r0U0j`K zZnTH>iXl5+*%IEY>uONFz%TvgGtxB#X^_Fro_oQ~aQtwa16q7CBiDKBEio`5t(RO( zl#(5=U)~x%Xtu1E5j`JFw-WLVf~zCdRpK#SzUXbA9ooP;kSx@43#o1j#GMazSXf*$ zGwL>pu*C?!z-bCh(bxDd c}Ocst|`3i^B5O9v$%k$Ik{P@#L zz4`F;^zQAuncMTn4`^b#5Abqf_4HKH0ouy%r?A{lrwN6*;sDYWA}Gm8Gxa> S^Z9Sg~TZo0OT Yl+a0$i;3>#J<;b+ythSg@s}bAYo=#7lFyIB zX%!|BJy }Z)jO!P=ybuZF(kX8ay9u48h)A|2MxTdjZvbqi!Is-6b&SpRU%*G^hseeQei>wk2 zBvAW$bc)As5CfRz0$ag$$Q-a$sSjcobBEXJd(Drv1VyTpU0LKp6}jM&^sJKuN0mE~ z *yWWIxKglNrnZH+ zfN4zomg}MKR+3**vZ)APj7DmV0%dg(X|s#8ONFaRCCC~WN%_<=VaxfB)V(1s77I>_ zuVp;Du6>Loa-hAVodL;JDfn}yep*Au{qkI9T17bQC{EGU=B@N_iA?znt1KK<`*FGD z|5cS8SD`Su>TIeASFznNntG^N@33r&`XBfUC4lbp2NtIWoWoh-+2@!(UNgfU^{PM{ z;GNq==fwhyC;$K;07*naRHSCQY+cajWSPFI4Q9)6t}`v`2r{ywi~kk7yHg_^KTl<6 zsd7?M-Ay@B_iUWdcs76h+||<$fpUN~SgFNx-a<7b7K$epCP?sA$|q{zw8DyPxdDZ~ zBWw~V=(b+gJ`cN4)BLIZ-zvJ0aee#z3TIkcfeI7g9cFovxewz$mouAWsntV;i6L0( z{PGo?CEE_1nk@wS^oliA7^sqUCMgc@;oKVFT6O)^SKt2f>-XP1-MFrA-aLNt$-7nc zdb}KcJ9>`3RbiDRRvbNw?u492Ye2T-u!?;a?zuvW#Pxz|n$+ _I#|>x7NKH)L^O9 2 zaRZM?J_(54}sS8M6WU6TT 29Z8+T<1f>(+l}b4guwV>vnvyqWVlDtAd;yy*-Ya|4>_QU}%??K{cG zXlU8pK%w`n+*#tY(WGTD`sdjaiBv(FXj5KfDlta_1QlU`(7<^c2aVsLdIWIH^kizU zA{QkkOgt1?V? i0N8f8eLxLmc^f#n z34H=eRUhHh-TnHqoPsNnNV=qQ#Kjypstrg5M4Hy++*hEUTEfYl-QGtB;h2m)z>dul z&o}0nZC#@dy!=yE&jv_CNxZx;IgvUT7VOu^naOwRc!N5E8 yjwfOGw@#DvDuInKoa!C1pAr&CxAR8Z5J!|lrRy$^5JVZ!ja+fYUm!bKBtudNN zMd(2-H4A2H3K2a$l9!ufY`cPv0KG}0Nzr!GilKbx(sb-o1bsZrGWLwb+A#I?##eRp zQ_c*VsB=s?LlW|9Np;W_{gpa?{gAJBu{9{dlM_+*P2YJ+>(G`=vue-NM=pEN5`@0{T$h~DF4vA(D6wf2YtLXHFjV%;kmW+4ah*4V z) A1Om)~p}x~-sn!p})p z`c-FT$Ox?y+D9XmTuE*Orb)E^&;G&Qd1g0Na%8yJ-uXNlwi HdJM4QA9GB@|*PInJz? z7(-8AoX&JAfwnAr4VOZY6D27Ry!qcQ^jHF2eT^?OM>xD*)s+ERX~+4}YjY4n;6kkZ z Kl`u$+3QQc-thE%Jg)1n{`BX6{D=SH<>lkc@Uk8* z*N4mXT9?;y-lXbsflDv}x^XIHX|d51HVtY|M;zn|C Q2u8iRI2NWywp&ZWv&pou(0ZO^o(z>(VW) zF4$rGttOJ$1RVk9Q$6weB=q{RaSy%%R4ZKhn#q_*jwUHF`I%4NJ%0E6`pGA6zx((! z)xwXbr Hg5ksjH@ zDzio;;Yk#>-ky-+$czQ(`Yggquryebxpyv}+m(ZgZ-K#dD-7TK-u9i&?x<%nBlR(F zu49Vt8o}hF?Vf_JNSY{Sama2ZoA|i|ZDVwm(`WB$k0GmpLI)<|%9-NC6K)6Uqj5+x z+cm Uxr#yB?#Zl={s=&IH|4gsIU%gfjeHpPBxne-jccEiWE+| zR4%citb7Kx Nb6@VYn%SWNJrj^R6`O03s7c|`=!D7N= zV2Zd*jA!q{*qW10Fy30YnsG&?i%WCPRHtvsM*FvEfL&!x1_^rXb$pOcM6QSygI2^N z+)30Ae`E6V`bg;NU_@XemL*3^88gz(AlcK~=h#F{bTnYWNxjWxO~ZbR3;G`dYNr-C z%a6F>G2TlC v7y}$E^>!t7a`?xkuB8ZpY>)r*FC`N>ny?4A<5LQ|1*eBt09w;2%4W5vB(# zmxOWv)Kq)Hi0vC7NgG=fS3_aI7bkjn$0qV@IG^PLl)CopbM-)n3Sb?UfKj6zRr`}F zKxegD8#$-wEW%-pl%`BOGePVzN%G*~oe7aVKnng?hba|#EGIG0l-1G4jgJ)b e4294JpLJCy-R6?jm1{=fK>*``b}=tcs-OP%5w| zXqSxOii}U-JQ-eZ`X$0XG0#5FlEyY6N)FKD(KB9%Nd=kLS)?Y6PWxoC8%rv1(x?o5 zq&q?;)y BXvHQ_~LUKxe>=pc+(F zBe^pY)1GGKnAT;ns+tg`ZmVaqrz+n|i-j|RJi-AJ0VIM;(vg#BOUy!K$psE4pUACV zMt!@n&1H?J{!A;cp@&1&IN<35^wXF#(SF*ZVXNc8-Q2L(ot>1^L`{yl4r6BoraWN4_l*Th;QsFjel2xi zvR~0TPRPUVxD}yJ_!DP9IgyCP*kpn>p4u>$oSuJ8L<}|PDo^wewRg*vkgAds-Etj6 z*(!8k4DOm&Fx>d6D#sz%Cx>I6GKW^?!dQtkI?Y+lR0m9on4Id1WUiM}kl?$Au$RVb zy}_lW-L!+?G4bw1boOb!EF9-$6!M^PzYu#WgQs#}Drj4SgzfQWLowBEx|v5TETRzY zayPNsPX6w{(e)hB2F3(m3tc-@a2&YfsTjQ PDP=o3h1fM#Q+p>aQjJe?&$#^2EqG2jm76}#+4`O+*n zo}liG(DX4gDA5xd7CPsBS2QB-8U%Ht{G_)>R6vcIVDd !?b8w? zxCJ4QD$?|km`xUe^b_6xbDxCSFOq*(po~6l;N1Fn`S9`a&3gO!XaDw({`l+v;=3=u z`1ChF|J9%T>7V`Pn{OMK*QcMp`*Mi)zxn#V{(t<_U;pA)AKt(J@lQT|czisL*XQS_ z$H(>Uho0$vc|C5u$d&r6xHD{H4I{%O8;ZcI>&ed2D9(->y~A7FghLx -8Y*9M_P#~i_oRcavGf(Mg z+>l~-$UxH*&$bK~k7!pl_Ee?{DdcGv(`ZrJWPQdp928nuWB_WD4tfQr! wk`;1u$Ggi7 ~cw{O1s=6#wmKn_Q}h8*A3V_8IZ?rOCpcO@hO zX~luv%$%Hy6lkgV9@#Wp#hz7rz>9H07U79Og-%QB@~8s`u=h)*_7(S=glHS5W#YN$ zFfKLooq~Ha&>w})i3yUx5ew8O&m=4WT-*Yt3 ;X;|aBe7~}aS4g{>>Io8?kb*~v?vK;8kI+tF>hxH8Eq+=O3nt`d==s+U^Ubw%V(LuY879A~F zFK|?$h;=&6>|tgi{w@j8+^bDc1o+{n3cOromHr62$QX2b)LXYqTBe(OilbM2T =Uf?RDZi5FQV}GtP#-Cd~k#{Ju%` z`4m3#AvtsLn#PnzctSc;;3dM0E6H}vT|7TG+=&OtC 3%3x4&n2S=oPXaS$X?+<#zk3C6WyZmrOf7^nIggPB#UHG*{b@_M{|clqM;Pk!~A z-+Xv}S=Z~2e*DD`fB41Iw;#U#`j>y X*?UO#;IO|h@`gGY)9T>29~;G!pyy6x~r^i)WwA4sm SxWhEX-qr~R zSd|I8;TSL}bp~!~3(q>l8Ev_Hpg62TvuZGk-g8K2MoqJ00Zp!&GjRiPdd4E>q?)NT zkA9$yHDoI2ZBM{7
;8ZvR z-&&hKZziJ0Jw|JaW!qgd(M#|y7BXg(n9X1G9PP3Vjy&*qrQ8V-E0pAUJNo(M_SvVO z{SW@r|LCi)-v9jPU%kA(zPVm5b*W4B3}>#F%k6f%UKY5H8*Z5Ar*9wD8oYVEz21)3 z5-_GLObIV+N6U<0L+XF*qQug?=)O|UMJa{p4oMXUD?pQcYoL1%` EvT7SKW@?8N=cvdB9wA zCS*}-Ql|KO8lYWVlQ_cX1k0UhtK*7d3-X*3Q9~~qnlQP{)mfR&*oIag6F}8l)Hq;4 zx%ls-(|*ltX#!6#%+Aoup!ZhYM*}I9B?IfDp 3H^$jME!@K4hYVp{*Q4xcB}-$4m*)LQq}O6dn8Dby=m%>1OZwk;-`)1S<1%hX zgiv*J1T{M$PdnTal1$e@wajqt-Yjv1*16AG?sUMr@ r?#bpl#G2g)-wG*H zbBFCHv2jv^sWi`N98cTegkO i|Fc{$ zZZ6kn6 h&r^#dVcO!h6Q8?t|VEJaYI6eE6xP-eM#VCic z|I*2~y}!Wjz?^KW?RDsG?&e*zY;Z8C_4O<|UIb0-d#9;QSlyw R8Q#m3b}t z$!1(Rs3RwQGh|_0*1P`|6(o{CggbIppk~7pb0lOabJOZclP`4C3rRA-B54l19iwLh zGsB;A4tP?ZoY5gU@isEi4k m5t z`~AQ40Nnok&%e9Q;|rdD_3K|B{rxX~_~rHCI1YUC&GYm;KfnLQ&;R5v|M)L{`-4ya z@?ZJs_4@GL*B@8S?d7$P<8onbjoFKwU}na5(i*WPES0<(X2OfJ*E2{7d3n1yXsZY_ zE)$Hjqp$HG^Gap)Y$~`*j{!*$oiq({y6#z$&BkA%gHTRj&-83`JIS^$v8wG;CMOr$ z^zGqg(0ASQ6Z&*wngXCW9sQ(dzv-RYSb$6nMqyNyG{6+=xCi201fe;>b7EZRctjs& z1H&I>mP;8%&kd@HWG}i8Ly&4^m?R^(H8{gTl6>j|Hov#Nu$hn1)X r0C$Z>UQ&bj3x7fxrw<^XU*uyp~gNi*Y_I4Vu6l!cj>rRK~2QSUS$ za14oJHMVSMoASdsWSErg+4YhO&Rf+ V+yAG6)!ZKYJBIJ7gF z7{qdC{r0*s@;%ul_=!m+F;rs-8${b3ww7TKHIk09jajr1J%d%(%ep>3ULX26{_x-a z(Wjq(aeF>~=SM%dT-VY4&37NZ{QT3SkFG-F_WCkMSJkaC#oO&zYaM-alnx%#8J_BO z1v45Q7NNpH3vQkgOWFyr;T9a~&V_9vq65o9_d==H<}71NDSiXpvld2xNAud#oF}e+ zvn&L%%i_M=;mlxp;7yc}kVPFgyO7QE679+53|;z8nepbJ^yq*Hn9fL RUWJ2goqf9CyY;yH288 zeAP)L#c3&`0!p?41Lgo#baUBEZa%$ZTD&uZIbV3v;Hcb6{%#U2VrSs3WYOMo-|*&I z4FqKqhKL%f*xW>J!jcDe5!|*)UD!=awE~ Fq*HosNnWXy?55IH94e%NZKPOK-j%xWswH%o8WBJO;r1I+L~( z-02ddVtyG!-vK&mGl@dOlY8U?XEf9+Ks`tsCQn+%J9TKbLo{1W$c!ZtqSugQKyVU% zBN->ZE1Q?$objy =%jI&tJ$?N4^|?QL z=>Pn`_xnHm{@bs<`8YRx{q6f-{Q8rrOY{0i|NiTFxqfWEzP_@q|HVJ}NB`Zw_08Y< zn}7Z9{@tH_{O-f;>G^WGJUl*JkK^`wtV=ySTpf6gCwB$fgQ*>YWS!Q{&vGfHc@i$= z$PT)JxF`*R8w V z(nXU!fX|#uaP#kkYuHxKXd;HOa*pgTq)@3F%uqNP8j~6ZAk-U_4v>EaN2jI$P<&E= z)e@_va!{a(_ _7k54Z@`N_lc)8iLke(&9zci+7{zuaCwKHWY(zZC0oxqx%M6sx8$j}LDKeLHTq zzBPL3i;Ax0B(weiG9`9rD>#!2<|Nu-dTB7?6zIY9B)j`UR?2>SiQsam>n4hL3S$p& z_{i^dQ{JJtCua4`&?BM}@w)sgW0Lj~Cuo_`5s++xB$I2GznX|_nb}lCbzcPf><9Lt z5M%~Pp@sliwBE&}pK9OG&vow$dt7!rGxUt}MDIH2)!GtwKXVG19py8dCp}@$v_xur zF`J2jq@biRY4bhL{Fcxo0b%QH?no)$sW7?Q$gEthX}8MhM#$h_4(9B}T#^S=ccHu| zJW@c8%i5*lw+wG!4z736&mAA=z{W{772v2{*ldImR6;|>aHEliw1i4+Xsv2Yss4@W zIxvt2EFdy3;n9)}X4DVhmLhn*Jb}qfHK**6DzTx0Fo_pZowhU50pW 9?{;qGvi13|N98dX@Zf53p!T>TnR@%ljPq zaw-IT2bmVM_lL;;%{@slg>z=3bDQ}-dQd{RBB>l1(zaE)#GPh0MHfsNDp;I3#s>o_ z;DK^S+epGSVC;#WAbV`{BE8L?tV2MP%(2;#{j0w00stFWWYz 6qvm zL _JuS`Yw^hDtHKss;rcV89KcRr+5+QN`!CS4)(EFI}$RPq0^VJbEXN?cBqy8 z^NY=qZL6@_j0H5>$^qIfcTg@Q%okL}FuL6LVx!kz^vqf*nahbVMwVmHv6k)wX746w zNa2SaHc+_Kb^YR(KVLW&`PpZW|I`1;fASCh(LaCx>*xQ?|Kb1kgD>BG@!97;{PNS! zKY#f2v(G+z_wb`HzxQ|l+L!OYd;0dn^B?{3uV3c+U;VRxdE?8!`q%&N`D19L`~UzT z07*naRCTUz-~H|%eDU=!fBE6#$GTo`mNWKjhml~~7?0o)yMS#8iFy<*xn?^aH$Nmx zP`8R`Sf+R(?EsiSXTNFmF4!yEba{$FO^dyBFN@*Nr&lBK(PPB-Xt)BWi%6%gN5kot zlA~f&kUhSk)pMANx T8`;s*FlZAUeL^OWu4J;C2t4x|9nk&-}Fv=A-QK zy(ofQKu@8FRuj@0{^;oz)Yn+F;TVD4lt23rb;gFJXlBa#y%yO0E6AivYEH=nFS)A} z94sq@?lgWSy^$}l3q6&Cstq+(hf>j*;lA9EXD78|2UoQepotd1%z>dMI9s{&)M;>- zzFO=!&t0|Uy7q~8((zRyLUcxJvWI@Dv~?U8VNX1g|8J%-i_(TCDyzs-9Ept@RH3b1 z*qq1Y^pl2(e7#PXBSifdWw3TBhPj`AtVyQx)lFe^qp_Fk{<9Ng85DQ>nZ2ASw!bFR zh5Y=A(K(iG@%nPS+>U8}|FiFX`}N1QuFo$YAFu1-QeS^}!&`RGaU7^YUCB$$t*39t zt igfc^Qx{U{y*ll@hw-P&ZhXgZ7|?Ue5JB`aY3M5jLhQEOMo7`tH4D3*aI<(ZWWh zflo~2*SL&Ev1X-Gt))bYd#YGizfRArWa;>sJy_0cM}$q3t}E08dV*l$dq*?ahsWFx z4dl*v9j|6vkW~OVqflT?aw13IZbq<^0bf;ni8dQe3T_|jK!#v!RV~cMAzYXfY01}8zqtDGFw>e zT%;Kn%<+8j(&P(+xXGQiL>c)rmAmvH$&Hkz03$-E#D!Nk@lUF73k4iw4=V2#2D{&L zw%QT09^@a_JQ?FcZtSXBBDtc2cqitA?3sZ5Xm($RJLEP3$iBC|RAi#KJb8+SJ<-sy zo|%D}a!<#kpfk%_xK%@DED3HbW~k@6{rr;0$6%2Jfe6tb3`=nN{;D{-#l z-POQ*ea<3%ZJ6dUm6RGk38<_=h|B=F4&DPRxoKZ!0c}a+F4>5Zu@46 L=jPFW14ovRIeL^>|&6x8wEQ+wZ-+T%T?azxw*yUwrdn@#%K^`Ss1i?Rb9sczL{D zzxed+kACp>-QyJcZ~gvX{PY1gJpADwe)ay_Z@+l+?qB|kfB(ZDes+EP?)}G)x9;cT z2F&GhDX{0zOD!^*{YD#CCwe`}&^9`5w~pULK(8SwDFidB z);@-bg>7?IsN=i$hubh5Z0xh|{~oaS!Yb|72IG!G7h5h}eAniOJ^*qb$xtbEIu`5m z*c#%kMkWH#U0>w`fhdpqS2s(E{fLC`A_O>koYZd0bDGV{W>pGG2YSN ka7QaeMu69LHy$zWe0O+dup2tK+y` zuIuu0Vc~Y%lrAsK 2fn}8wOe}FvL-w;s8Oj!bl{!WLEt&@(J2TJ&@2e< z l{`BOTffJs*9HLUwQ?jlB*xTY0%~;js%tl4sP9eE0 z0T{i6_Lr8EDuVI(V#+`75m>=TT{1HqbtJdbx=2_aOX~#e*44)30=7JfYktL%JC!iU zb|M0B96SaWMLi7Sat3=yf(^D#a;Vtn4CLpuG7qhi`02-=vBqe55aCa=6F!IlY|fin zQ$h=Q`fi__F QG^0oVN 920j&tHD>@b~|tzxnt6lfU|WtAFz^|K0I?dHeYI&DY=7;8M#98Fgr( zQK@&1UvvL;#y6!7Vlzg9z(-62L1kTG;wB5TXc!_#?8N-sB(`iOiu%B^gY+atnt?kA z5oIl^wT1B?@Qnr1T03)L#4*yZ8{5vc&%Kd!05z1ImUk**8=iASN75D2s6La~4@}LA zf$F5eMCm57>I6$+v|ish&M;6Q?v31rMU>Q2cUx?8(rOO&6jsMwRs+m5&xV9rl2}-~ z-HUWht}->Vt4c?+_>~C2?3+JDXIHWj1g5Gwf{V??Mzu?B&P3gGhRv5v eyq2GK^wzgx>m5K9Pil?0KjI9v{l zx~E{3_Xv-SFth<+XA8I8XDEUUfSTjXJj@QC?ka=40Z=84Ck^I@aR#*rG2p(QLCjvB z(o!POxd0))Fze|M5EmA!)&*Sk^!)t#e0zPF$H#Y{fA-n&Cx6n@gQMzreQoxVFKyY^ zs@pNIueakk=9npu^I~+z)UFdK@JKco7_6zV3P8~nFf+UMo?Kge830&%^`=JT6b5S1 z=o;kqiRosICjSgv<{%HF+8Vimea8l7z$4n5Nubnu^$aU%=493! b; zxm}0K2UUxLRGLi{_p}n6EtNQh5i=r&1n8+y+R(7c2=OMhK7l!^-UzNjj|(ZSokT57 zpG6W}Krm1L7yoLa71+0Ip9A0@r@CR%j+vC(4(-KhQkF6UaEUpJ;i~o{XJbbIV50EZ zY%1q ; MW9&*#bwwq9qCW;c~_B;3g|=($-eC&F}2Gui~%Wy`)g9;1JyJOhz2#z@dULE@&m z1VQ&=ozC(M$HEU%&0K+sy8-hvcgvH2c2bHr`+qfj%EofHwfg0rnPX0gWKNX4V?`*k z${H1hHQ<3crU$nJA3nT3K7R7I|IXk3{ong*$M6Px^X{O-^H_)i{Iefsvz zn}^4T>to+ul~!+8kqPj$#I&dCR1{k^N{mG!Wyh&X^w5x DY)AN zV0An}j+o~VYmdiq)mDB(DSMwq=J$ 9jG9R5S5-a2F=&71~Q*mNO7R(%lq_GL7@{Iv!V< z$cA)27=BkB8#7a!=roe+#-6d0Elp4e0JV6%TrhLxx*gM~*W1zHn>TOJ{rvm{U|k;` z9v&Vq4^{HI^YU`*+cDr;S2S*WcU;z|DrOK4rweOaJ5f7I*h|tHgM#Xr9vt=|1s@k2 zuJvT@E9VRj?=_7fJMjQ#cqWub>(nzIjG5Y809B5 ()0qX6OpP2Eu7Ry>tyWLcRvv%yFVaq5~i zOfhj>NZwY{#QkbIj*L51h|_j7J6bW>9@iQ&M}8MD0t$IINsTG_2{BtYO;tu1{G^df z=9s<=I|5|COl(JirJqW7DR2?P?(u*XLmhl-&UBf +-!-Klt*KZ@>NSxFY1 zME~H+A07Shzy06+U%vj;*MIQe`Q0CX`N=G XjWp7tckl&VG;2lW=8QFrpv1WZc)FV{gdBp36l^aXo&txDS1KD-^5A zfSa7ARH &8Iq{DJKPq{TPFe56g1H zGOEU}x{Oe0pBjq^p$PqwL-TFo%<%!ae4E+WV)W;8&etmqk=t8%vO3@9bfmd`XHMzz zlFIM{KN|{IwO-~Rn&`{In}>&~i}J#+FE8)jJX~0px-9bg`0(NN>7{Rd9E+^FJYMGY zcC0m3C=S_KT5FYhY!K*a7etg&AOUlqAgA>_D*;o9Z5+>3_kpQej1 04%+cLc%YgxoPM^by-}>R0C^EiDL7Ae2;)I#^I;dqQiFwS!E#{*+s$8V}h*WVSU} zi}|blE!go;n`Gzo3+Pk^emI?>zu6ya2~Uk*7>@4iJ@X3|2NTZwY|QK=tfLf-`!){L zzK_;l$K@hOM ymlz=z?(g$J^s>BSXy;A2 $6An(Zi(NIVt{I!8%BT1-~{h^jsU7$0^ob9%QeKA5D1d>?}brgXf zo?;cr@yr1xpF$F9#)z*O6fz1-1>TCh&RE1=W^YB7fAgscb}5o~RHvgaUbsKUoY_M{ zkg(V3V;{m!^v$Sxs6{8lGH2XT?T8qQfYAC0vt*M;h07S~l4EY>JRq3?966-o*lFPg z_E&A{X)@+;>9-8;tPd=I?RHdyakVZk_EwGo5CI7&q$Y6`Ko6;GU=CSkVEH{_57{<@ zm%Sk1Wa>B^Da=97 IoSD1*-tl6vEGLuqvib~}y~OV# z^xc#azPpDu)~StwnX~2(2_<%>0$cR61Z>>c(UC(Pgq^{n!`{;}tx>ImzMxk<=;{B( zfAg=tdwM#KzC5f|)yMJDPweXB5#+jFKKcC3%hT&;-}{UY>#N^<{cwHw<*$D8;~)Rz zH{X2w{^|H{|L{-$@rQ3N>+$*MmxJ~2=8GSE|Chi1dR^D?dTaSe ILu@0>s_T+D5a+rhd3rmmeyJsarpap8p$4( zfbJX^!wXAEZf0#=7VNkxlhWOfC>V=@kBv;WNr zw?~zv2u{3JV>i)jy(_`}CV=3+=4l5r2%dAZP5@jeJw$nUvyMRmX@9pxeR=?ZGP?V! z&oH4}Q=TArhLnthGuXpEo@eaOJQn@vh$)3+>SSAA%p}e7C)z=pqe;LXbg4ca8U#Kn zoG)>9{gJlstYi~ii0U+c0NzFQ9^!SEe$bx`;n{iNaAI#tM(M3Z%?`;^CnxgxCfPWU zq6+{nY)&)9oPdJ;`&)<6nQ@&^S&Q@hC;E_zk}Mx7J66Wy45AGtXoK_Bu^8u7(rG)} zr$7Y>eLG%XUuy8~lQ)a&&D*!@a;?R;pIk4Ob(x-9A2WT-U}{}he0}YzOV0uDdcD*t zeH!h G8O1(c4QWcJTgzY zBa<=8VA|O>HHT~T#70vs?+!*cXR<5QBQd7Ofn#DVK)ZxHr&Ooj7pFKT?Ze5)eQK0p z+5Wkm=!RHlrajc%$Wqf&&a$e(oJ%AmHe#IxkGl)iKU9{ek8?kf07$OJVIpUX^W5&6 z8$vxAZbv}9yBui}Gl4FSi%C 0-IZR R05r~;f-1!Orxr@~M*LTS>BSk_|?wTDG-ODzvCr|{d z!)AUlKAH#$%k&M@$Ls--vQ||tI#b5o3a{y8NtuChS>89j*;1ugrcokyKIQOdYhxjd zB(&%7oZENTDx(jNCbmt{1MOoIej@Am-9f8P@51gA+O^?0J ECU6PIG+wJGS z`o)m1x93@JuC=Q0@%8rc_4(UBfBo*`hc|B?Ry}<8{^eMg%LBpcqhDW-%fp*b*ZTPF z#|!4+@y$2yKRmy@@_Kpy@xx#E aWWM z<%P}w0X;;C@s(mV<9Cu3vYC`%SLK!;PBj}i)wM_hJ6#kPn9gpxdl?2bljH_gYHv3l zAY33L+B}+RDNTZ)Uw9J$u%d> ZEKX*&wVXsV|uqkWPcQZ5{d(&@hMENt`$$A^{667q65rn|YgUiwyPziBLz z-~ascD=(ON`S`T1>-l!PdAO2ze0+SpecQ(XxE;5`9DSR9B_8#9VWUib+)iSQh~70j z&lKu#DCuGH?EVX+P{cRwfmUQ HVyHSrFqk+JZONus=j<{ae~D+|-Pxh|TdkWj zTLR3avU*Y_Y{kD3%Dss~B*=IIz>O+STO!_8P976a;pg$Yi_s45TKN)#GCi@_BA7an zZ8Dv7+YVABTWB8Cc)(zJ_=U@;^O6yim5*@WaL-IGe*_HC#!DYQlUB2TnB^Fo3{7Wp zg$#pJrc?nQ#6Yx`4&!HUn&nZKc1DEUKcMeu!MdFw_u}ys>da~gXyTO5h(gOjqdhZr z)G(C@UmM0nALj`0qCaGx7po^?OyGl2$wOzlBosWAdUU4ls$uBRAk3_|l=3S1cKGl0 zq_g{9jlSMd@w?itI__O-m$D5EP?;t*R)PzZIoW+?gvYGQO1%)Mc6hIHxo1p+lO2p{ zKAnAMWqM*l6p7c9!)oVFy|?@$?7gX~PbOOjPIJ<+X%>yGx^vfxE0h+W@!K`d=*|-1 zDNWBwEdAv>(8f;Gn+(GuQocN~vNZ${u0hz&C(maVv_BWvlD(hA{4(|c$BW#2LurO! z*9D0@r9ch4DnmkK{qD>`DligwNQ}q!$$+MR*a4a)ibyPRNAsh|z!u-P?NXg0!eV`8 zeBA)0ImQK-W7tE)aa1yPqLru_Pw;UJ&uqfhBPKGXmei` !vZJ=3_Z>)-l=zy8g)@BirE{o<21m%sSK zAH2Lg|KjVfpKe&!>)TnMfAaR>%_EMlkK4 #+`H`k0u1B9KP2XOzn!jmxcm#78FQ|R#>B4UNwigDa;X94{9$M z&vjM!I9uR{ZnfPu24GeZ9>NZg-BUF?KTy*q GwxsJEw=&hlf7c!`J8M z>3({8o@0*b?|t^k<+84;-aX>WFW; (gsZAD@15?Hkl`yDdsuR|_Z4 z=8{2&gzi6a+lDoMmrprJ@Od`Z;lNqyhFIxLYbgd;3*$RY5=r=h%*^%m8_9u6#kzb6 z2-lT+!rP>6`c$&oMorDnZA)M*7FOHV96(HttIy0XF_~1cZG7mNz=j%4L+-6V6*=u9 zDebcLD4mU=Cy`ImDpfcdLo6}jIB$|EfEy#sjP6<$>d!W_Jf|#=&KnJKeFqcLFi1~( zc(AH6s5G8hM^bVPrw^}9Qaf>%hIL_sl518jW{m|KRkM&Jd^yIh%GR;1sTpcmh0s1H zDFci!qaptq9HYDew)PdWUOR4O?|CXX(^e$OoAMZA0MX=&x(n9a?Zfy)#qi6f w22`}HA`_%qKp_*UQphNIorKK^0#)q_6K z;EKv1$5f%@ngZllG&|_cq4V|;q%HlKGU=Lv9JXy;Hfr-NkEyT-#oP|-1G7<0@!y_s zJv4UR`eRN#O_YqgPu~fK0f%Y0W ;>}XY|E}?Q1-8zN+G1Id!b~FG0AOJ~3K~&wP z_Ip#e#f-=3;*8?tdYDrj%Hl$WjevpS$)OchHm8piij*hX=*NBUdzF9@YsPW3XVnjj z^}SC&zul&$K6!kcIWE^?;j$hHe)jIo_rLt)i!VN3jdzciUw-usFf4Z8o}NBDy}ma3 z^|(!8JzRQv`dG)htjibQ|KW$Pe{p$y^V-LrcQM|rvaRbF)SBt(CYKood`g%AY|>Ra za9};Q&j@JR ={5iBgM z_Gqxma*u;#J!0 OiU0=IoombW%#I>e!p9=G)hT>g4WNAxIdePqn#m>jkj2 zI3EwW8iPYAgJgMYh?D7SVI1>HShU3C)|-r1;JNptK3ffdn~dif(aHXKx70}xDycX} zOI2ip(|6+^S+&VJ%&Z;2HY|Pw*)t>z99p0!v@qMY&RqbvJ--Bf`v$lq?DA%WENyHGcqDF zGRj~7SKNEg*=tTW#u#hgpg)rl@!z}moW0kY#h7DOr1tY_ xnn+$F3TW~V3=c>ZdjV8C%pVq#vU%rhndMS>5QD!Ua`A|ZWIh^2dYW!i zLce@F0x{*i3h-_%BUyz3!Ud!k$xVa>L#Rcg6sq_oY0FuTL|d^r4n_w@Bx ppiNOkor i-&JAg1x-_(kPshRHMx&-_9PLsO) !L zZfmVgvTGN{O)KN6 51`P~pT z6Y6E*mv;xUt1BDx$cAyHg;MaKZ=%?S!KOaA^!z+s1{^FzCxZ+*45sK{=x#_K8sTNg zW-AbgO%N+-Z^?Z~4aJD?fkb5slVQ1FyAP9I_Ue$qaX+OPGba*l%0l1QPMA`@ 04o|n<^gu- zS0G+0><2=eoK`h-fRsz?u~a_6CQ+U33U{k#SD>(M 6e(}w>UpzmZa?8LT*v9o3==oy1xhd4#FA+J$wx7?h zUc7w&tM7m7lMlzpc>zjQ#Urw%0^EB-CE{f2XgHUtvgJqa3Er~vNbTsOsl}=LY#pw= zp2}=6Nk7y7IMnZX*fpVYgX=;)n!yV7w27QUi*ir3TgozL94%zJY5OBa+!Yn3S`?Y7 z LLD}a*-QVzoYkeTUJ#U~CL5cYZUCMtpopycY?SkC7t|02%B z)I_gf2 auG`GNZbuErc+Zv@CCD(L{(fi$Nx7U|_uc`>V@!IwE)o9H7 zS1;#$xLoF&uirj<^X3mf`0$4>?mqa*C*OGgjlcF+-uj>Xw}0jbAK(8M|Ktxo{H$^t zbFY0~sFNiaM6!WVe<~$T!K$3*u(X}l0zj|9jDmoXP m}gfA+vc$! zMF&cFxe%X?uV&$oCB?we7X_3$=QI{b6H^vwG5j*nZ>?c6a9aKui<4(fjJ!?2NL7Dh z_u+WI4HN7j7M~bkLw##W$Wgi!Hu!WS3lcZfa3uqy4%xvFaP7FkBk0P@6`Bp9xeg`T z^{BKr;yH+Ur1cgbn&}WN7JQV{K1#idKBhfZLmL7fxiq5j1?seMkkEVt7N(LeAuuo$ zJMd$wM-F)FIB4-&;gxtD4p-nGr6SP<_lXWwWSN*XEe}VLEnNp)et=r6&p2McjjkNw zIO2sSe+V ykq31{#<|=S19*rk~~I7fO;9va@vfq42Fk*)tKU2f3ywlF=FjKo~MGFyRrml7(f= zkt4C!$mFzz)5vGfUjO9f<#Ikhdv=pEzxw{W-}(NJU%P%fPVxDt=O6#*{`&Uj{{Akb zGOjWPbG_S$Ei<=~F=pek&%DZgzW}J3U-;s?-@AQQ`$OjFMqof@$Ce?Eh#P83bu|Rz zB88h2brK8_V9K?LX00Vb4vq&&1kym{KrE9d0Aef*z&l_ma0GkhcrOeHgm- dpF{0f@`NqPp<@jyG4+($xl@1~X`7PdFkM=LkR45To5EBp^Bc#9oK z$7zWu4wH?+{2Zz(R{*8rNePH<+F2t9b@1pW@!8gY2@7QD49vkJNSMrND4{DOX=_}7 z1}lN9qZG=EtPA>=utQLxjW}r04JN~6Q%xX3vgb=!TG5aGu$c_VM*?mK&-AT&BZC*? z5KvArS+~~eKy1b3j{v_Z6}x>slEiv>=U%RZ%Fvb~8a3H55wDSG7nld7B4eY;Ys9l> zPhQ>Kzw!Fh({ qSI^$Q{lZti`0{-I?D@I!>JLA>{Ow=+ z-v08lZ~n}e{`{YQ|J#4?(LehaKRNGnuX%NI{cyg(9N?Po<*d0Ubx_PwIXr5=Op{ VG7Tq$*~fc!ubHZ?`+B$pG2 z<0%DlbPi31yUg*l QH*CX;sf2bcPEbB99+aW9)-ozm;e=r=TOj#J4)>jlHW zOc97vFSdzT=(+h1FcO*!C&FJxcHk7A0HH&wlT!lP0J`evp(40kxXa?-G?h;LS)JOm z6X=ovb%rvYaqzU96fiTqcf#cP*ak>6$GWc+i>@VrX=#8JMsKCT;T{SGhd4U2F1{~P z2|+) 05p(Kp=n==n!!{etUkkuEhU|tVt#}u}ZQhz5;80weCDMWWyHP>lb zg!L+->Rdjcw^NL3$Y3*N*=Wn9K97uMm&yj{CSs9FEW2IdiZm<6yI=lU+m8j4&?{W? z!%%zmx AxUs&2_hxGII0G|oD >}_Hm>EM5Bf- zbp>EHkUl;LAcf*dTQMNzSknL6R%n;Agosjov=afsFYsU)jeMi~ga`Km_N_}25uh>G z5>-B5j`1+>?(grePuHk^IA8wMFa7+dpTGLi2Opj o-H?+dS+%_+lz5^;I7kyN1pH!mQb$UPw~j(NQ784NP=#e)s=8tRkQ1O zlsSic3YU*W#F`C|f^WH`NHX6xRxV0NOQAk}sgw4Lcd%lkffc@3gB-M5uRSa+R8kk# z! 2wiS$(kU z0>emF#!T|<+EssqC%O8t7Xa}_mB;SU0!C!w=J+Krwn)O88NJ37iKr4)mjT4cjUeXs z$;~&v{>9(^-QORmtt V zU|z?{m? zydFF@3y2_PNePH0G9rqXY|vJ*8^6~HhtWnTwZ39(J1mgPNFAALxOAuf6iQAkTL&ww z{Z%d^Je+s8VG7|C%BkWFtGaJ`nVRFp+>PK@izI2H${WUUJR)&t;UGcYkkJD5>v$SF z1@1d@9i4wbBZq=eh}EN(Y8zF8E#1d@qvLUPcX|vX8NNQLfp$@VhJs*)1<>^v_F9s$ z0v|YDEHII>j3ZHFuAIL2MD;pE+BB6$(em^%1ufcSVR vjIMk|%n^v>7QrRRu_Bc?+?@D^Kx;Ls zgVla?mHO@O>Pww}`4@lgJKz2OtGoNi%-B?6W@r&1NSbca>f=JC#x1FiTziJu*AspR zMh9zzp9O#)Z?aX5H-}AiL@ZU0CF&W;rU*NcTsPUqZXI-+I-h)G)Ab+W(SH16-KJzT z7fP}OdQiB%gT63S@@}uS&YCpEagO!{OJ>vV`jJKOKR|3tE%^+?^1V!h*eV|tY$EOM zg^ggp-6|ejBQksqDu!_AY)LhUYV?Exp-=^OO{?<%zeF6WtpR0*XshGp2q*lC)#_X3 zD5^; {FC4K=bzo(kI`4x*WdfWkN(g9-oJl;fA_|d+b_KF+UrkmuTH0{ zo9nt wgtSGq+?4OK1M@yVp{!T5gE!c=!!u6#`|v6aJI>Ykn{*h~|JLsW(E%k?WN zbs;>RCzu>(*r}2hYM^pjv2Zz^7+D!3P*IXfQKXW3P(F%F;(w|`+vb3brks=8Noh24 zpj&1h!Tj)|{96N!IJILfSkR}zSXLbL3ZS6jXJO ZunWO;6ekM z^r^}^IAYhb*i!l;>;UcXYy->0WIh^mgql5i$D7_AAj`8yuaUGd-|>Ke|Y!r^!f&tKhr^x2CiPfqW>`_}bM z|I*LDU;F*LUwG~Fk6-@iCm%e0^7==g;pOH0`K$TKM=v{m{Ee@^{p!^iW4ph9*siY< z=*uOtYuXA{8Yh%|Mk(cnHBV1oMy$R70+e7m{$aa3l!gTw_5|ph(>r}q>u*(Cuz-6K zbxmFzrD0WZ`9_xpnE-2@ab`#%eAav`O_@AAgl+) 2anQAVV9UIc_RB_ z52d_TskTCVoNH1o;R}t@Q6sotSE{gz7UZ!Vj5$fs!dVi-stR&FZY01Wnj_o8MOPGu zbyc0MsZFxdOaivD<^VKFBmiw>D%Rae%`1vIG?#ueO+huJX^81`LWX&Q477?h8o^4v zBm9*3cbE!<_^dXN;wee4mI0M>LnTWY;p~b%hHZkdfg{dX)ed}s i z27dMg3(O8mNO?;p%5;DgY%Y-e$P9#%SU&~NaLi_K%(Jpk06g?h7(Azb83u_M=!!L% zno|%#pC#EwLL5UyM|EYJqgzak{*q<%OJ7D1pkU>nh|$xxpiBu2VQI8u;X*$Q9BD32 z7BS@H%Upzh-ILCjX{QvnG~|ep)WQc%C-!cols}|;avDJ8dL%P{fgoOD^;kx!rwb0V z;J1q v`V&xHBkQHyf(74{u9IF& z%?-v)=s;s;s~9rYZ}5P{NvIW_8|_UoBEWGgl*0 pJU{ !=c=Y6o+V z&gys&8Bwx8M*u4MGCZ_2MJFOk%SCX&ON5dv#5&xowbEF^<*9uF3 #xBx+%gA)lX(hT#^}f%8SXY;7*{FFJ%LwIl{IdatTD3!fN4LIZp&M z5-}Xoq(Fo3jBZg64Yo?Kr5Jg1xU`#}G{fL%