From 0c058f2eca3ebeea9dbf0642ac1aaed3ba3e61c4 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 28 May 2018 18:17:25 +0300 Subject: [PATCH] Add waf buildscripts, add updated game_launch --- engine/client/gl_rmain.c | 2 +- engine/common/infostring.c | 1 + engine/common/zone.c | 2 +- engine/wscript | 80 +++++++++++++ game_launch/game.cpp | 185 +++++++++++++++++++++++++++++ game_launch/game.rc | 28 +++++ game_launch/icon-xash-material.ico | Bin 0 -> 370070 bytes game_launch/icon-xash-material.png | Bin 0 -> 71270 bytes game_launch/wscript | 58 +++++++++ vgui_support/wscript | 70 +++++++++++ wscript | 97 +++++++++++++++ 11 files changed, 521 insertions(+), 2 deletions(-) create mode 100644 engine/wscript create mode 100644 game_launch/game.cpp create mode 100644 game_launch/game.rc create mode 100644 game_launch/icon-xash-material.ico create mode 100644 game_launch/icon-xash-material.png create mode 100644 game_launch/wscript create mode 100644 vgui_support/wscript create mode 100644 wscript diff --git a/engine/client/gl_rmain.c b/engine/client/gl_rmain.c index 796d4e8b..9850ccb9 100644 --- a/engine/client/gl_rmain.c +++ b/engine/client/gl_rmain.c @@ -205,7 +205,7 @@ void R_PushScene( void ) /* =============== -R_PushScene +R_PopScene =============== */ void R_PopScene( void ) diff --git a/engine/common/infostring.c b/engine/common/infostring.c index a7de6c46..d89561e6 100644 --- a/engine/common/infostring.c +++ b/engine/common/infostring.c @@ -21,6 +21,7 @@ GNU General Public License for more details. ======================================================================= INFOSTRING STUFF + ======================================================================= */ /* diff --git a/engine/common/zone.c b/engine/common/zone.c index d5be638d..8cdde6a8 100644 --- a/engine/common/zone.c +++ b/engine/common/zone.c @@ -280,7 +280,7 @@ void *_Mem_Realloc( byte *poolptr, void *memptr, size_t size, const char *filena size_t newsize = memhdr->size < size ? memhdr->size : size; // upper data can be trucnated! memcpy( nb, memptr, newsize ); _Mem_Free( memptr, filename, fileline ); // free unused old block - } + } return (void *)nb; } diff --git a/engine/wscript b/engine/wscript new file mode 100644 index 00000000..4b63c1b6 --- /dev/null +++ b/engine/wscript @@ -0,0 +1,80 @@ +#! /usr/bin/env python +# encoding: utf-8 +# mittorn, 2018 + +from waflib import Logs +import os + +top = '.' + +def options(opt): + # stub + return + +def configure(conf): + # check for dedicated server build + if conf.options.DEDICATED: + conf.check( lib='rt' ) + conf.env.append_unique('DEFINES', 'SINGLE_BINARY') + conf.env.append_unique('DEFINES', 'XASH_DEDICATED') + else: + # TODO: add way to specify SDL2 path, move to separate function + try: + conf.check_cfg( + path='sdl2-config', + args='--cflags --libs', + package='', + msg='Checking for SDL2', + uselib_store='SDL2') + except conf.errors.ConfigurationError: + conf.fatal('SDL2 not availiable! If you want to build dedicated server, specify --dedicated') + conf.env.append_unique('DEFINES', 'XASH_SDL') + +def get_subproject_name(ctx): + return os.path.basename(os.path.realpath(str(ctx.path))) + +def build(bld): + bld.load_envs() + bld.env = bld.all_envs[get_subproject_name(bld)] + + # basic build: dedicated only, no dependencies + if bld.env.DEST_OS != 'win32': + libs = [ 'DL', 'M', 'PTHREAD' ] + + source = bld.path.ant_glob([ + 'common/*.c', + 'common/imagelib/*.c', + 'common/soundlib/*.c', + 'common/soundlib/libmpg/*.c', + 'server/*.c']) + + # add client files and sdl2 library + if not bld.env.DEDICATED: + libs.append( 'SDL2' ) + source += bld.path.ant_glob([ + 'client/*.c', + 'client/vgui/*.c', + 'client/avi/*.c', + 'platform/sdl/*.c']) + else: + if(bld.env.DEST_OS == 'linux'): + libs.append('RT') + + includes = ['common', 'server', 'client', 'client/vgui', '.', '../common', '../pm_shared' ] + + if(bld.env.SINGLE_BINARY): + bld( + source = source, + target = 'xash', + features = 'c cprogram', + includes = includes, + use = libs + ) + else: + bld.shlib( + source = source, + target = 'xash', + features = 'c', + includes = includes, + use = libs + ) diff --git a/game_launch/game.cpp b/game_launch/game.cpp new file mode 100644 index 00000000..4715e8e5 --- /dev/null +++ b/game_launch/game.cpp @@ -0,0 +1,185 @@ +/* +game.cpp -- executable to run Xash Engine +Copyright (C) 2011 Uncle Mike + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +*/ + +#include "port.h" + +#ifdef XASH_SDL +#include +#include +#endif + +#include +#include +#include +#include + +#if defined(__APPLE__) || defined(__unix__) + #define XASHLIB "libxash." OS_LIB_EXT +#elif _WIN32 + #if !__MINGW32__ && _MSC_VER >= 1200 + #define USE_WINMAIN + #endif + #ifndef XASH_DEDICATED + #define XASHLIB "xash_sdl.dll" + #else + #define XASHLIB "xash_dedicated.dll" + #endif + #include +#endif + +#ifdef WIN32 +extern "C" +{ +// Enable NVIDIA High Performance Graphics while using Integrated Graphics. +__declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; + +// Enable AMD High Performance Graphics while using Integrated Graphics. +__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; +} +#endif + +#define GAME_PATH "valve" // default dir to start from + +typedef void (*pfnChangeGame)( const char *progname ); +typedef int (*pfnInit)( int argc, char **argv, const char *progname, int bChangeGame, pfnChangeGame func ); +typedef void (*pfnShutdown)( void ); + +static pfnInit Xash_Main; +static pfnShutdown Xash_Shutdown = NULL; +static char szGameDir[128]; // safe place to keep gamedir +static int szArgc; +static char **szArgv; +static HINSTANCE hEngine; + +static void Xash_Error( const char *szFmt, ... ) +{ + static char buffer[16384]; // must support > 1k messages + va_list args; + + va_start( args, szFmt ); + vsnprintf( buffer, sizeof(buffer), szFmt, args ); + va_end( args ); + +#ifdef XASH_SDL + SDL_ShowSimpleMessageBox( SDL_MESSAGEBOX_ERROR, "Xash Error", buffer, NULL ); +#elif defined( _WIN32 ) + MessageBoxA( NULL, buffer, "Xash Error", MB_OK ); +#else + fprintf( stderr, "Xash Error: %s\n", buffer ); +#endif + exit( 1 ); +} + +#ifdef _WIN32 +static const char *GetStringLastError() +{ + static char buf[1024]; + + FormatMessageA( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, GetLastError(), MAKELANGID( LANG_ENGLISH, SUBLANG_DEFAULT ), + buf, sizeof( buf ), NULL ); + + return buf; +} +#endif + +static void Sys_LoadEngine( void ) +{ + if(( hEngine = LoadLibrary( XASHLIB )) == NULL ) + { + Xash_Error("Unable to load the " XASHLIB ": %s", dlerror() ); + } + + if(( Xash_Main = (pfnInit)GetProcAddress( hEngine, "Host_Main" )) == NULL ) + { + Xash_Error( XASHLIB " missed 'Host_Main' export: %s", dlerror() ); + } + + // this is non-fatal for us but change game will not working + Xash_Shutdown = (pfnShutdown)GetProcAddress( hEngine, "Host_Shutdown" ); +} + +static void Sys_UnloadEngine( void ) +{ + if( Xash_Shutdown ) Xash_Shutdown( ); + if( hEngine ) FreeLibrary( hEngine ); + + Xash_Main = NULL; + Xash_Shutdown = NULL; +} + +static void Sys_ChangeGame( const char *progname ) +{ + if( !progname || !progname[0] ) + Xash_Error( "Sys_ChangeGame: NULL gamedir" ); + + if( Xash_Shutdown == NULL ) + Xash_Error( "Sys_ChangeGame: missed 'Host_Shutdown' export\n" ); + + strncpy( szGameDir, progname, sizeof( szGameDir ) - 1 ); + + Sys_UnloadEngine (); + Sys_LoadEngine (); + + Xash_Main( szArgc, szArgv, szGameDir, 1, Sys_ChangeGame ); +} + +_inline int Sys_Start( void ) +{ + int ret; + + Sys_LoadEngine(); + ret = Xash_Main( szArgc, szArgv, GAME_PATH, 0, Xash_Shutdown ? Sys_ChangeGame : NULL ); + Sys_UnloadEngine(); + + return ret; +} + +#ifndef USE_WINMAIN +int main( int argc, char **argv ) +{ + szArgc = argc; + szArgv = argv; + + return Sys_Start(); +} +#else +//#pragma comment(lib, "shell32.lib") +int __stdcall WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmdLine, int nShow ) +{ + LPWSTR* lpArgv; + int ret, i; + + lpArgv = CommandLineToArgvW( GetCommandLineW(), &szArgc ); + szArgv = ( char** )malloc( szArgc * sizeof( char* )); + + for( i = 0; i < szArgc; ++i ) + { + int size = wcslen(lpArgv[i]) + 1; + szArgv[i] = ( char* )malloc( size ); + wcstombs( szArgv[i], lpArgv[i], size ); + } + + LocalFree( lpArgv ); + + ret = Sys_Start(); + + for( ; i < szArgc; ++i ) + free( szArgv[i] ); + free( szArgv ); + + return ret; +} +#endif diff --git a/game_launch/game.rc b/game_launch/game.rc new file mode 100644 index 00000000..1d8bbcc9 --- /dev/null +++ b/game_launch/game.rc @@ -0,0 +1,28 @@ +#include + +#define IDI_ICON1 101 + +#define VER_FILEVERSION 1,00 +#define VER_FILEVERSION_STR "1.00" +#define VER_PRODUCTVERSION 1,00 +#define VER_PRODUCTVERSION_STR "1.00" + +#define VER_FILEFLAGSMASK VS_FF_PRERELEASE | VS_FF_PATCHED +#define VER_FILEFLAGS VS_FF_PRERELEASE +#define VER_FILEOS VOS__WINDOWS32 +#define VER_FILETYPE VFT_DLL +#define VER_FILESUBTYPE VFT2_UNKNOWN + +#define VER_COMPANYNAME_STR "Flying With Gauss" +#define VER_LEGALCOPYRIGHT_STR "Flying With Gauss" +#define VER_PRODUCTNAME_STR "Xash3D Launcher" + +#define VER_ANSICP + +#define VER_FILEDESCRIPTION_STR "Xash3D FWGS Launcher" +#define VER_ORIGINALFILENAME_STR "xash.exe" +#define VER_INTERNALNAME_STR "xash" + +#include + +IDI_ICON1 ICON DISCARDABLE "icon-xash-material.ico" diff --git a/game_launch/icon-xash-material.ico b/game_launch/icon-xash-material.ico new file mode 100644 index 0000000000000000000000000000000000000000..7c1ac3cc57811e4ca80f584a0c926ad4e4eb096e GIT binary patch literal 370070 zcmeFa36x#cb)fwOnk6(KF$jzilbAsaW->@1Kn#+RC_o4dW}XBH5Ex?{Fn9pl7(C(F z@xWy4ICk2xoV1hfINgrp`0v$8C+Yl2R{u#lah$Zf+e2(8wj7(`{rh{bK527uUsXwU zZ&eAZ*4k^Iv(G-~-Qj%u4EMfQt=5FrEU=jXIq4}D-#Yffm|yK!Qxb;Q$?S_eg&VQ95> z=-SD)T2Wa3{Z@Oo)^D|Ej?4Hp81DnGxIVC384kwt<5yt(3cP}@0Av67-}n_6zXGqk zE8x8Um3QXjXFPrd#;?FQ|KojN{0h8sufRC}FV}m|&Tp331!gCBt0lK#`sI4fUU}y= z&j0p$&t(x^a=l~Nc+i7P>K7h3Ayc+OtYaIrN83pGnfZ94c>Hg>xB}z+kM-M>xysDR zIBaIFr$v5x$c%nrZ+EADnH73=l6Yd=D#dbq5$e*0?a?-$F*U?k!sl}w#)o{I9)A>% z|BbmTFwXy2yCw3H8IpB5hdmgCN!XNYSl&5gUda5AT|#)iyL-rje%T{5vS$ymTz~4) z#;zf>N4tE++z>v`7{Rd^8;A?NVuI&~9{(HdD=^OgXx{;O$h;xQPkGE!Pp#BF(vu$Ah>Cqxv__|43YZna{j44$}YO03H}C z<(;ve@f6ly6#`SR&NvKja0i1h4&N{evr9rw3pqVxdC1uz=Z35Zd0oh=kk$QierTjG z33!`8`5le!mdLMdr+m@64m&eOUB^BQUKV(6O<2=kW zr>FnJ0X!@ZSrG#7YeU`;0z>OUVCt?A#&URjM+lt5B3!~K%);^~L!JnED&*;qPltRa z3VASum_$t2 z5W>9V`jD$aE)BUbgm`dv$g&XD3&({J3l0q-7Ay?eGi0}rokM1a%m|qlLM)gV!u96b zPw1CW<9}Oq1;+W`s>{{yY=4t``r_n}sUh@H`s%z8`Yz+yJ|PE&Fz-Dk1m;f-IV1CRQ_tiwBv)lKKqE1{$=(7M|^kYp8NdOl-cvX*_trn%W+J<9zt9o7BS~ACJ?WPTkj7c z9=s#O`2n%+#*nK*E(swPoEx$%(oM6|GxgoPc#^XR-gl+yC=YOb| zZbCTj&@U51PY!|mnIUq&N2C{qEDE8|(s!BLGOjVcT^J(sw?_J|5XN|TcyGuDLRfdh z`%@v$hQQLVP2G9dZ|=0uL4QB%kYoRO=HeyKO*{Gg7bl)|O}hoBt8Z_&`Zly%7v0@% zt$j$UzfTBb)R7^_htOx~ zyYykkwW~vJ4#~_v5_!gWcz}yfhx|%w;^Z&Q*mIx1n0xq%Kiui~v!9!C+S=~e4dXDG z`O7TB8H>_v;e zzvHZ(|8t!C7eYQ8@^lFE9%8|xA@2&gFXXO}n?s17#L-nD%R^2HIX2|55aWRJft|u; z9GDpC9r}fPij4nx1;+XJN~rB4^clFH6vDg`?q`S04_OehPe{rA%CNDnzcOT92z{46 z{7?wv8*BMbg?u{XSEuj(>c5CJ`%k8vy5_~s`W)6}g){8G6k!t8^N`r*{MyZqO><84Pr&@jIB;mB zi359u5C_;FAP%rbmq9dcku9`E7) z;tvmwMw;wJHvIl)^)?g(LCb$Li%NErwA3)`zg zSer3dBX%=)n;b$+=N@yfkyrNL`1sHLw=X#6(@*FxGea0h7*BWxwJ79>kmEy^g=Fs8 z&vTCdNTeSRq3=E$uD!JJfEeK3L97#IoV@zQ*#{r< zqsg=9eLb$>uY^1m^0AQjhddN=U&w}#8$vD%VLq@tg#Ff|Lk+3rmecDeao^i#Nc|H5~ za8LhsE&obmdt1(z>&3jFf4?BsOfT+q=yCtlnzqw##I^o(h;iVdNb?-^_K@pBE(v*E z$g&XTYKMpHA5yLfi1n}Rxxg!vf4OJecb(6e&svc+BmLxn5a#+PhMWd~>)>_ST5a6C;+>sXFyY)A+wq>$Pp9lO z_jlv^8wWlRY2v_JLe_^|9kM3m+>j+9$A+*b*e8V8K0X(Si|`8E|C4>keAoGT%%`8w zU!3c&jr6r4>^m{vd{4;ZA)lJP-ywfJ>!g*>Z+=$CI6pqt50CeO;)8R7SR3pZYlFE* zFZp@@e&N$`KiD5&pYR|$b?#)vnti_m{y)ERxhv$s zkViv4HgoSqe>`(Z-}9aKZ5ijs=lCPTduG2(vqx~{L!Eiotk<0Wv&pmP|4!ViPlbFq zgqY2m;MR~ULoNte9>QFJSWnDnk9U5^tPsY8$ssug(0^W@e=mRjWuN;A`^5O2Lgs}m z2-!E}u#gi%&In6@qYBVuZjb)M=;@aH?u$R zlh(AEzZUoImqS<+5W|V(#B^f&iV*e%i21~Rp6~7&QnenS54}8Nz{{Ke%sw$a&-YpX zEecs2a!Sa#As2_xKOFNPo3P`=PwjN<=|Am!XO21NIQL_Z`!Wvj>@em7JH+=7W*vI` zcjJCO8S;3@yF=a@LTo3-6YEb8;Tgf9A&do#3FUf#c_Z@jivcfB{*Bk%GuQg%eBV93 z)52#}$mJn7hrBuDp^(RSIrP~7HRbfny8T`5i2+F2=f?A6@0#?#LojRE#V^iz^?rXI z_mt;_&IRs_^mQRTBRD(cwIS>c=Jf#c#AzXn9eF(v*_X-R%a4D@eAv%xePTMXecur0 z`)5Y_!jP*&ZV!1|$onSmzV}yVof7Zuz_e?8m}hTqob&DL8gSp(8;Dpi=a|!e)|x!^ z*|^6a4k5I~qL8CP*z+OQ z^DYnbefId?J!|2j-=BW!h27_Q&h^K+-~PGJvB0@N#Dbk-FE@Ul>V}dE!1HyNC4J7mT9q`0wSxzwEom&zg;AIk3+>j``fNA;k98A?*DS^Y0IN z-<-uK|I_B@c(Cu7pZm`Cm}U-Bhis4M-s_mT9?S)=lNS3+tZj|vTdJdoO8b-f5(>RS z_PwroZ@abb@pkK$Uuw5*|K!l+wvTt~-SB~Si#BMN_w9@ye5Ub%XJp9S;cEGlc!5su&RF?d)&+<$oad7sg$H zeb#Vig=|A4wUzzVaUY31hwDU5>amah-T*hzuP`h>KQ|;DUf34km z$5+~|_kOM2`rvOWgq{`cIzX5+HQT|zqDHq zf3@AZ|4Z%G-OsjLw|=Y}8;lFE)fpXa-8ox1Pg|6$^}*LBAy=KJvFST&qJQ%7CLN|~o0I<~_SvP|2x1RmSu26=+vO05JvRvk~Z%&tf<_Gfm#Q*5d72f&V z?H20@;+L_&bFJgLHPHs+L42oZ=CX@lXw8`OMD(3^hTIi$O-NtJvJm!?Umh`F`{KWf zefIhDdY?JJ?B5*eduJVX!hdhAym`x7e=M*s2OJB1E;G*VjjQhOX1N-dryVqB; zf8WkWE&0El`98d{)*tQpKF7hhRWi>S{=wgDw-`HN9MFnJ*cY z>8-U7Rxg*^Hs?^r0R7lYV1MGSXS#D7t^?P@>q2_0NW|nF`|fDZKWOovL?0stuy>qe z0BZsE1AH!E4B$ER_7MZNAO0QtiLbElyFEPP<6SM-cfHTJf8X5W&iqMd-pPEQ{$*bq z>HfuMBhK%c5A#lHJcI7c?LYcwTbPIYQke52jQP&_;a&D+3;q;r@@RQ4TQ1+)w4bLQ zN_}Gkv4D92dj^-@-@QIwtC7A(y*{shyx9G?W#5WEWejjFa9Y@o4&k}Lf{?i(#DK{m z+eZx8KKRegQ$u(^V80Mzz?_ijA;bXY0AqU|F!uSEec~zX6JO_r zu>Z;)%xglHhwzN=rucrx+oqko`ni{|-+%u)wvp&J_T7?u#<@qo@lxhDZtCV?oV58I z2N?T_6|(QxkCu5goRut=`GHu>Ww}k;)t1}Tmg{b7nr9m9eek zVf3?ih1?l(RmiH4B_T(K>>ILM$m|gIrCFzr^B)&s8~-x<#8cR3j>URwQOL0&r-xh= zazksv4sV%u-c8-_?TywRKkS#>^K71e?O2}KmU;NsZW;~ydCu=zKacyeDRWgkI_JiR zbk19^N@vb3ud-P-6rDf6+$-?7(5wx3{xO!~K>S~}`LDZXQ}nlYgxnEwMF`&~IXUF; zkcA=aN3%D@I(2OC2afIWU;c@s%&C}LF~{0JWVqeZJ*9UuMKkxPBG2eB-P?*z4cIC`GyErj2WSP{Y=)S)4)OIe?e{dWY%F8`T* z_xhPzF~?%A#hi=v*VQ3!oO$N!U+l0q((F6e=b4uKdU7wr@{D%8hxN?8W4|%L{XXXX zGOw0Xb;((om!r~OJN}fFEXw^u&5t50r=^6Zn-`e&Q|yidR$%0&@pjklynQk;t{ zzq-BGCAa@9`rg|@ZV9<01&$+(+ zsx`O%IQrqeAvcAr2{|K#bt&u9s{KIv_SpFwd;H6O)qdZ>ap6t~;r*W1$9n(vY3E$? ze22f09QX5>5BJEMKHGgJ59jhL&zXH=f@Sy`547>DpE-Z#-58*jkE~0MGI#n_*(e*R zUF&8RwGCGf)Mh@PyiY)y=O=tO2_{ElE?^8e^UC%ved~S{{gLmMTpz-E^t6!0A$7UY(^`&lRAD&9~Wo#gxdNHJ(HU_JYkDq0|Ub^(lZRd2a`r3Q>V$U&! zyf)*2dGrHc9-VywV?gW&?043Me-M4t{lMjsuG$M=ZaX&i0>>WzljGVDC+CLn-3sF4cZ7#=|dwEtdbSc^Qv2V6p*FQG$>jC;9<5A27 zc02sIr=!o_5OQG%b5{2P#@>4YV}pOke&+qWH^sc4eUtq|jtMy<o!pY)p@_L*-n zCO7#`uk(GL>$%5A-;#G(R?D>I=FyDx__4OvA3xHt4@>m>+^?}217xC?wqCFDI_-Sc zP}<9Wo?ot)%d_3I=Y*DTG=fhq&uPoqk7ayt?nb(4AqK3tu|4_1JKOQy;rpV`vKPRd zm3M>kdjVr-9WeU*%YHfUUl`Zyh!CFhpFd^)BR|mUi|gt=ZJK>P$LD%{H;+Cnvoef! z45uuoHwN?Mnb&83)A++ajQ8r#B@5=&^n254j#J*U9w?UNI<}Lw?PS|PX?g7Blgm8^ zb*_U=o~@%zZA{2{eR*F1CPz93#5!R56%V|~^Qq{&mxY`ia$LxPA-uafCxrLeMt>bJ zcKCPR&pQ*mJHfL)-ltj-@`g$0#rOANp0R%<*mu6qvu4I^c&!o`S15=3><8}(cKPSo zK7HN3s-{1aF3U0(IjwKDWnN9Iv!7|o28s{(4OHKD(4I%tapiK;@}1i-U9z3qChfJ- zuhjVPn`P|V5YIGkG*Z;H4@Akny*SCp#$v8pVvd`~XWtMX~Go9@+Zn>Iy0C5Ci|A4;AyTQ57vZsh> z%l%y@)I;S_|EzOe(pj=!na=gfvZ3TTpVH5BEbZjE4%RWPzjpn+W~IjOqkq=j6KJB( zRJG}xBjy1IUB2P3q7SnU;F(}v2lzaIagVt#ER6i$=<{FB``Pc`JnxU+V*Be3k4-=4 zgMDI)?DKvJEIX%n+|GGy=8XaRpI|k7oEAycI#4ZI=5jv)-T)A&h_M7jVfN7un_}R#eQJO!jsQ>Hu`kA z4)EPT_Pa)J9WZ+QJN9$#ezzy@_pg|_=%|msWc}9UxDWg8^YL4InPbxC%kiE3#!cN= zp-;&?bA8!|b$&0CF$p0KAm)t)#sT}UeLiy_4+Ci!mD7Rz>ME1nUhR1vr7q8ta&2ha z)n4YSe6W?*liwX`g7>O6>94ULIOX#D+tJ5a2k<88%@o~)eJ$@J` zwjeN19LV`H4&)d>I`{Ejd}X`r*Tw%p?Z9Ix9E&!O%RIWurk!&|s?OW%fN#D=*0G*- z^-=R|psBH>j01d5>;>#`)4Tbu(A6QY3ppu-_k!5x@;gGKGY1$Q{vG@Co*&wq+eH=Q%Fq*kB#B!gvq&es>r4;ho>PVNXiUGey#T zw(-C?kjF0jw*1Hry5v&sEi21&-EB$BsCDx(k(N)&v#;swua9N9&0J=kQp>v6$Gog- zC(rdHkLLduz-H5NfcE<~bmjs3T(bU~(YG%NSsucBK|J4Pzl-sYcY{ZM4lp|WGxnEz zeg}k&YqEUS@yma2^K<^D?vd+#=KTD|1dKR#XU-k_L^ern$r9ElhZ-w|NlvHM}Kd3W^j^Fw%_mG81L?&ZBe*ciFJz>(*_9Q)_T`LgH7 zcO{lg*=3KLCtQ%8^EYvCGW*Q=>2vanE*UpZEYMGz{@Ud}&-rCr-eF#0pON1LLvk!2 zUcf)GfVl%>mi<`m zEx>1-eQkU8_3wT$`uXJ{=Y;T1z@iZM0{PAh&y$F6c;oOBY|FYn*3%dE73Tep`*1J&a4z#`ehd5E|7nZOxRBQb zw3GRl518o1WmER5&#bcX`Blu8wqEB|`jOA)oy)Ns8_O6V^ZJnYGc98+(ByMv`z?Jh zV!%N+Jn(nX*Vzj^HRQ;Ug&~ZCycfut_~p(&=g7Ho&I?1h2B*zB@!a3t%zhIwnd?ux zKI4N)8Lnbm&U^8%9Y5C&XuiWoT!CQ)uHjvQdxZa|hY$l0Y{rLyVu1aBFwXHC%*T1W z%ns&XmY1I)r?N=7{K1}fS;Us@mZLpSZ8EDpw@q30E7R6hbB`4MPf^n`fWEhCePOo7abUkz;`Sf%H}Tv*Tc9p8lQlrt>(j4P9lY4cew$Z5{a{pZz>0Y^Kqf zae0$D@=88G%5z=P=1r?ThO9jX*G}Y>+_uM~=DUMUJ#Vrwh=;K68K* zLwd~tqNu^Yk>kG{`(5{+u+yT&@950S`-1(Z=KX$`hwtyoa>;(lywCLUvrP8OHdy!5 zhaC4Avtbuu&Ci(bcrWk#c1;%k{}*|_w}Rl8V*zc-2z@{IciF6p2PMDwX6AD`w_{pe z)s9U0xoB*%32Pj47OoNE`i8wu#p|a}u2+@jnj?H3n$Po?)bgH>$+UINqv!V8|uIA#9H6);s0tfPM4D7fShOM zv02CR%s=eYU*TNF8Ovpx=S+N;fY`%+GxFxobv5szAnZZ$ZW@|0%kiZyv4J-E3_i;~ zO&`zfm2AuIV7e*>^r}n9Ck@xy^oM)q0L}xjGltL);T&%He;<5r zklz7kUy1k5Sz8i+_%1QOTZu5&MEE_SD!~VT>d_W)0zQ~iz*dd{uv&82i{GvFE!&ZI z+aaGhLo?4*7EXArT0c?6&D@$}MikM=r}b`C+j zr4KSz*U=ZtHfVSC?Vax?@4M_g-U&D@WaOU(G|#_dKkqlP=g+$iyz_8GYyPXwp0N71 z?)8P$Ca$&nee_3oM)G(r-;U>Kg|b|(9rk@EkUj_BFv>fG#2e0qxeWIgS+#zP@E!=V za@|WM-V@(!%W3>*gEsZ2KG{US zG`7SXVD_yadOmny4!|>T-v?lvoD#yg2}8~NjU4}+3-3Adz9aAYy=LyIegC(ycYI;c zH9x$-F=Mqcz`RV$IT{~)9pm-M+>=J=Q_C)EUWfzq8Ri4@bLPK{b@W+;KFhJlW6AMA zOdA{2`pUZYQu|qau8eUU%){XkKAG1rwlkL@536;H?GhWgE?x_d37xMIc^N0|@#AA1 z%Q^lgV?f`A&e(9o6?c9ym{=OZdvLxJn13TA%nkfC&%gVAe9w{J^xG@s(22Y4y`nSr z!>O^boFi>(o;F?c)A!&Pu4Nv+Wm=ufO=qp2+^ezE=bDZIr@x^)KOm+tE-^o4ehq7R z%*rufFn&v(%@2kD%)b1{zH?{pA9EMxM0GQt+vA!re_-9fd<>2~Ci%`WLAGTb-|TNW znrq8>G_@B%Y>D~a>~)X55L}!Ua%{-{A^b*&zZnig&CCIs<=?qK&;0m3U%v0SZ^+Se zmaX}2BhUL_pKI!Tl6P_B7*_K-UZ%6AoIG^~@@4+-^8x(%+@@nde2=Wd6LVqL0q%R{ z@l7_>@La}%GB5jR>%l~opXF$|ffbH{bxEEtb6to5Fq)aIGoAT&{P);Owv7j9k2%}C zj+80JvwU9LIyP0+;~K46-#+ZRd%qNH@cp+#L-=kW`+$s_yfd@C^3VE(y-d!9_k9kU zywBkmbozv>)_GlNlm5V*5H{dgo=ux)9)OLp9Gmvi&oW~J{_<~KzHies|FqBE0N0EC z2KKz@?=V-+1ML5qRTlZi8*oO5zZ2H{`#{Z(|IAz5_v2jn zp3jkU&bZ_Uo!?}mPt-ZDf_>-xjE}D4;Tg%}Ica&8Z~c1lub)`Riwp?SwH(xW$(8d8{1AVK`{+h2-{~X}Rbr1eVFycGGJSS^* zAFw(8o%^%z$2z97?>AxLVaq!E-<*4$@zlA5`^mhA3*V0MGF`>EJfkhoHu-j}w~TzY z@p(=2Py1(I+g)$)Jb-6lJTHg6UNL}vF30i<&)P_ralm}`u`W9E1V8LWvM-VQv}x`$ zbAXlWy7%1ux;ogW4Pqhpo$;SoSn@B^95a$*0O``Ef99X~#`9hJSyM3}<^Z$q_!#>D zr-rx>$nS%&56BvT@wDE*X8C9C&-#VAKkJ!8cRu6dzuLU+cWkhq3`cWc90%C%cYJq@ zuj0Rob^T<#%Ez)C7mNiXxfjTI#Ir}<4`Sbo{lGE?$SFGW>v*n~ck^idbGnLs*xf4$>>=HK~0=bHtl&FAr6o8`s^?AVL}oFnzvd#Q8W%Ga!KLuZ|I@TKb? z4OZ9(+%JUR#bWP_Jv8{QcORfR{>!=lK5^_vOm~_rso0f1#-@ed#nTK`^*Cvi&=}?cOB2@)0ySW`e12e zLFNJ;;DVR~7r8H&Y40`HX7%meF}tqu-?;DkpYzUf%5=%P*G0}bAH*2o_0z_=5@R{H zrse=KN80_4$N6p$zY%tD2zzFXpS};cJ@B9B{yg*VyzjT`S+D<}jlJjVcYA!tuZnBq zf-xX#IIa@s_xkFiJ@Zc*Kl)SC{L_BCJJK18d?$c;5AVO^7+~M!nC$9`lIB%Do+f6ePRGpE#eda%P#^F1xys4S7-#tI>i;T;uOq!Qt zby;qna_jWcj``(2ApWe)n~ni_FOc_xSqCr&$m;<5tm7Dcnl!qM0af$=%sw1hUtVaN zv7h<;Q2RXGvk!o9-0ozo2U+=uEH z@o~2|KlSrqh&4cd7r-?@m}~lLhW~Qzzwg|$F8@kr&eXS|{<)L)pWoccbNtLWOgf*( zuAgjY-YusrkMm_dKLa!dpl!2h{%PO6Kp67-0X`3KFTfaJzm^4KfO7z1K#l{Jqp2eg za6p@^GnjJ^wO`{0GmLS}T~^;-&pN>SU$y`5xq9yMt6lER>&Lm8#>aCv%{u|EJGbWi zhvLh1i8alF3qG& zBiWZc$4xwIVjd9lql4c1$-fVFs@4GY?E%!!zjJ@z`FYjclg?e&dH*s)V>d0=j3#@{CE8?|Cx8vO1=i#VR+W}-$Nj7++qkLQ7W3(*`KNvN0(~!#IRN~#7syyG`}Ae|ab}-% z$-m>B4A2I13FZ`oJ?|SV9>6@Yk>iFT_VBlL4v_ix`Jen}&hzI0Q$Rgxvh-@CI1|+=jJ)cwA^RSc~S0pT9#v_<+kH> z;{Btjv0}uzuZ_6{m%)j%0k6-Qi zaxU1iSf;it#{;j0?a4nr%w0IIy2rPeA5FOCJ?%*c9K9r1+9!nhG{2$2{CX_%pV$7x zs#ov4`o{`7a&5v(bQy_w_Tq+JIPyH>65w$0pP zYvuswI2o;iNcRqc73*SDA5a&*3a}Y7P+X9)9=ZUkjG_%?#$#`CY)s4)d?x z@gM$)O~k1Atr@fTo46`|)4NXgX^TDs`}A)(miv-r0T%G-8USH<| zw#6L1=@T)ORhMyry+HQ@ z;CXBKXWc-|aQ}~3CC6$wHI3$cGt;@8wAV+SeX;Qw+Q@UvoLik^9PO=I-`@4kkN#`$ zbWjNI0{VR**4e}VtC#u(?^B(=SU3N^@5$H?e{!ytNf^Z@!`ZHFC|Zv5*ls;p zSL;jO^u|ryIl$B3YMy`Q0PLxAjr^Su<{t20?gQ9=GZ&<_+t1~nwL}%a!?nQ-eT3M> zI)L`v+Zjq6fPMB@_^niqk>hp^Q=VI|JarJypS0Hjo$aLcr;If3UNtcXh&2GuMW!FU z?393=-vwe`UEjOF_4DuAf5F`IuKTCj_x%V7LxwtHQN?32@(f8zk!ajwoe0BuGLSp2|~ zzZKlqzXwns|K-|$uZgc)*S(i@T@S8>&-}RFdCd>Ar7-r(HD#uq6UZxEDw$R5;AdSw zBm0xKoOI^ibp9;H=q6);`v9!dVaV?X<~acKdDzap+sEaBIW9iL44x+rh2w4Yp^qTW z0l3%9so|dQI1)EG7t#oE!89?Bai8;Z?(bfvaji;ozMQLdJb!)7>*sZ`PA;bo&s~fG z+jYfwPCm4t15SB^9 zU6oBv^~s!CR;BgJ^{|<@4mPFAM%l(qTYSi~ht?$jv|WBbkg?JCft&--@9E3->)g*N zbL@vJ*SBT=tSe8fLi{chYZm7##46(z$K-L7RM#%(KTD|Nhp`F1xP0`Ukb{`x6J<_v85! zto7oZnBW+%5B_qBmes*@=AE={SkHVf?f6f*a{!KQ)%xaR0BdQk8SygzRv7%tll{5u z<8Xx!zI8qC8z@%5zI%8)v*7bNHrY};uA`ab4>Zr$SFYvNxZpY4cJ{LjO}Y8phBkdD zGfvhu=jEEw_d`y5<9jy-^ZqU%djMmJe~yLse)z4Q1rzDt>s77F+}8{@ioNeV9~A z8+k=u(fH?lPRnt&v<2TzWG1=GbfodcjdLWclsU2T?hO28DcAa#C5;i z_tNsI&dkapWu$E*+pVXj44(B-Ytv8WEjK=p&!5K{w&`^M&(*jG?2-9@1M50U>+7S|jyBzkf9s$TKD%lD*$Z5?zB@1F_drcxhY{uqO)_uWyvxD& zmUvg8WFMwrtmNIitjf5YYe&mDx)lBVoXj@qY&W0Bf7{D8&Zn-v?=|XY;JCMZk`nk7aVL zT`lu!?4+F!XwRB5>(f5*tmzoQ^FZze?*uWP`%aMj!<_ufK67x!8~a~Vnsq;OI`$Zx z_sf)8*0Uy!$gjR=nb(G2PFrUnE%yWYlx4;M*8q%JbzL_Yh&jL!4}alLgR%Pd0PEx5 z_x^U7w0eD)`#RY7`nm59$MP?qSvxO4%NbgqY#S&ov%P%eJeOOi)Hxn(+_Yt{fVvzP z_qNFx;2eN=f_yKSv7L1Qyb}lVxR0GZIIn$^+L*-ga18PbTcq=RzU1FBIn11A-m#Zu z)#W%k@bc1JKshhxZtp zcH5FqOY?mV2#sJyQcI(KhKITg;o7s-dyy@&mI`f@<kv*m*m|fK9jk#oS`#Qa0TlyEXQgYmPzyKsv7VZ>Q}9~L80a;Fg_s8)zW(8>A_n-Ipu_tva6RMy=Dq)&`)>JOr;l;Wb&dbb zTX{C@*bmDvlbI$@xm=@5!CxlTa!lU3CDYl*dg#(mp0%Tm2c_P)X-k>yH_boq1kopn zrS1j#JP-yEVuJmxN$tDI>_s^5hbQ@gFVkw7Hx{5XzxbKAj#_Tbqx}pS&)V{ABc0nZ zU;0p&IZYF5fQSJ{zw0yqKKQTa89;sfv-dw|`l@x^-}$S9efuA4f7Y$=Su(H9*dWKo zf-(lkudL_1Hu)_X*B348`j}VSM&`VX0puw+PQYK&F<|AoZd~@Ad4DH}IX|(0wSm{Y zDebd<_WYQ4F!pCIGvC-V_wua|Wx4K9(=dx~$#5RiWj)(6>y~RH@8=WK7_Yg8b+JHu z5mOeu=S%+(tnnT&-?L@i&Hnqg{nf|+wAL|aE!g3_o4f1vI?kE%r5)CZj1#ag=b7vB z`#+T7t2QmGnPbzoXI@{&X7ccg##d(LTwU^?{WAYw{?{)1`un+z&rQVu_5s-kU|b@m zGDl_p&6p4ST;ryg&+YoGpU;$i8Im9PRx&4r^Q()0*Z$l; z$NpYA^PZW{X?$c&W@TDC+A_3uZRSgMt9-Sg<$vR*E$m|>Z=3wT@}~HwUG@Ob^d;6* z{$42afF{4+XP@^oi8bu`WhQf4X60Sx=?6J2_tecymu=CWu_iN0I_IgEMfPnU?Ppp~ z_Vw{N_+C=qhI&}w`f<-9c2B$G6YK%{3~+e=6JYq`KXZ@Hv%g)>zj0${{HQDD(GGJ( zeit?~pE=KIeDYiXrYKirOf8${(Q=B;<>sq&SzjM{CvSQn?dQW}Q!(J|YrEeKVjVzi zg?Zi!9Em+Y_a6D(mOSr=C)j}}d6&z~T25Q8hB?{PPY&^+tSrxV%4{R2GykM1vmXAX zSQj7WRm`>O7z>S`#FN-NIsDd#&I#^@|63q6^1s{K4gcTf`D0z@%-$b+Rd8L7<8rNr zAJzv*w&k=e%4lX+{?z*P()h_UK2`O!F~;L-TcowwhV7x7;-7X|1DtSPw{NnxVjaMq zpna?%-tsE0bK8^~8%kgEl*236 zvo0R`$HZeEc=AKRzyA|t+n)i}!#`_~89T4N^T(UdwXXAJotl5+QEI?bfkphb(Wm4n4X1ds|KO&wXUik2MB+ey}AUnYp~K z$DY|Q^OjksESFjRavonlU#(58Kbqs!PMW!k@gbj!zQhLWv%X>uP!|)#l92r#_{=}{ z^FO@r0oODBPj2nL@9bLN`{g|S&JWkqxxd_JEweHVdpS*B9;@t@XDx%+WY}`bNb8ez zm0i{|$QFD){)EFtwT;~xAtA!Zt)#q;><;NHz#?|k9W9aL#7qX8enC2epT1lR24(GhkU<> zJwM)WkR|wlFPVnn%rRw(JX5Z%)cT-%wL={~SGLJ#Uh}b$*3UZFvJd5mw%nF=c*mgu z{^#8D)N{fA&LN{c{&)CaaOJ&sci#J_57g10;GeyJ=8fXCG_|pIsOKj{OIn&~EL2boYC~jQw2eDt7Czx##C^ z`pAWB$$!Z$e()*t`pG?c(^+S`ZBX9Jp6izU=K6B3588DAe)^&*(~q_5s`d4bi*diE z-2Tfiw)WV6m*Ah@0U7P_f69W_zwy(x?sd{9>6`p+jpKFJre(X#%dF)kzw(7H%gkpV z{cP8~jF)xb*)rMQxM|B;g0yuk_w&j;`(?w40j&F%ta<6!fAWRRf5(S?g}mn{6PY>3 zYWS3O%CnuaEG5smy{aCiS6An|@hS z2EW-yn_R248y9Tbd~Snlx-BsP_D{RCJJ&zr)OPEDW4rr)?5!|2=Q=kbw9nkl_X}C~ z%aDx1hn%BL=W^LaW4Ej-ZJECEt8dounVI$2o zOqW{!(w_N~X>{pFKKq)tj%As9Y~;WEuUqB>`j>wA4(Gi<=l$&Wv**Y6fEb(UlTENs zn|!~A?-KZ)UuH-~(3x-eFKw0^AFPYrctKj;ELT_Av1u>UndO|OJ=w=j8qr5>d$!N9 z@oq)mhWfbR`o`M$weR`dhl4$T2XIvRpMTN%|FwBMse^yofPdDFa$Tim5r&Bk=?1+A7`L`_BEqyb4xee2lm%LI|+Vw$u z4rtTZ5$pQ7*7I0nu3kI;F~2(T(Jy{!tnk0{1-JgN!+%}!i(o#%B!jRDO2dC$-1eeC)1 z{y%&+Irg*X$Gh*uZhzMUHsnJt24gz=$+$Lju1{LN)z&dDr=^yAxy_n1yffd=?B^Iz z*7rR9T=qcN1E`A)Vs6~O*F5$m-T@jDfumc8uf{6NO^K~qoe%;$2_x!kl`U-M||7!OKa`oOyNjR$D$93%a4sQfeUKkAHj zi|2ie{Y%$&uPObfDdC>+U2T8QPfkiEN_OQMdzqGP+sNhm!!qM!d!-~XSn^17dQc&(d%t}Wb_BIjs0GY*i> zWu)ayMy+FBtsk29v}Y}!*lZhHZqqc}mdtC*?T{}0N*j5PgZ1QKF<{A>cI!3gwp;A^ zG43-5;CU)>wJG-5=i+_0a?el3xR>yd+0XfG$5*!TL9i+Ms!JdJ)gFTyJ84{d`Z8c|X5>!!t`bkPS85WoAvIDa%rpnTIRWwr4$=Lt`_a)7m&DkE^uFus-Ii zv_7_l#?NDT;LG*$-_OVXZ+qr{j{*Mq{_o`J7vKFtZF?M^Qldp+t*KxPv%oQ+O+NHN1ifx&&i)Z^~3|P9h`>db&{(;A} zTL*;@Pnr8S#lO$`c~|3+uXovp3FgT#A)oR~-gMU4PnNaiI;BltK1=rWF^{&5Y|G4= zMsxh;^IBhfZbMtH$7hkpuWtUipTYmD?)=CP#|r<`F1VwI_fAVj)jQ?_7j{ESN z#khb?c1p%Gs{^HT8>OFZ%Pr-l%{*E^)8^ILu1#$j+BEOfEWdV33}Cx+-aL>YN~a-L^-%dhOl zfRiumf7T!Ke)juW|2Mto$Go5YexCI+?;q$rKkj8IvMZbBGv~RE_JK6qQ7+&5(vG&Q zAcTJ9(!iK9ADPAKO6p;y9P-V;klXZ?J?2ma4n*X*7j?-KBCi~m;?_T@tcU{AI)$2nc)qb>X8c5*qNMZQY% zapW|<9#9KaTr(m5{|@@`BpFGp(q&C8T|c{N|9*qV8`q`oDzocuBvP zN79*N?B?~!wp>@{v1NNsTNhpBr%fjPO!Jm!wk=cRlh2Q|WoX+_W3xThMrU5#&qNJ; zz}D&w?LBXL5B!hz?|*jqpL$NLL+OM5z9jFMZ>#W*8^2MvYJK+_%X;RXe(&5L4)noZ zmdQ!UjqIr@N642t+f3_Ur8B$u=e+*fY>&KxO}qZu)SfHxk?VET^6s-f*8c3tHTnG> zenaT6SZ5ryth?vu*bf&lAY<@LUXEpTuzYUAG|AGEV_U3<@)-^=_T{#k=>+u!il|9tKaQ&(L7Vk7)>4Sn7x@Ai9j z85iKgGFd4#<)tliM!KrJw2_xt>&vxyd`w$rJ2{V!dHwbCeDZO7Jve{fwS`HZ_c0G^ z^7}o}_d4?o-Y;UF!TU&=hbjg$yOhJlP;J?lwC$TVCSWhy%)a`gdx;!dF5jLXc5OLb z*3%!mzvo;x|F^u4{lBsB`~N#kJMX6E_@{r{*U>PL^Q7^~Y`~4o$WYd$FJ&-iz3khI zN&PLij_hK0ePCJk^%!i&dg^@qIqflW&ItcM^qFsW=U=Z49+~&o^_=;lyZ`NTL)I9? z8s0Nly0-iM;{2XJT*#t2b7@+B^q1Alb7{j@Dci=L>t;XO(Ke8lZ?!C=b6V!Lk*8hj zk*2Jv@&DGxc>d3C?~nTUKmDvLp6{&r>zd!t&Z_m@`zha9%fDR7giM*wnzXD{r3Wh0 zUpBLbX{7X#b$u<@Zr;z;&%DfMUB*J@M)1#jl018Z`zF`@JY(eD0`?l0tm(4P+?MAM z^m{pzaq@6rK5H4w99ut^X{*we6nRaYBtq(TRnOV!wGOx~lq)WT`+=lOJ)j9sh z9>9KY{>1+Y_Q%Bk|D1ltrN8LB<6JlYymwXhdD%z9keW2Ckk4@ddnuVQ%1ZXkTQBFW zYgy*mG}>nZrfowX@}@K6w40Bg^U2r1bIk11*LnWVyuWJ9uEWN2S;l_m{U=|zg?-;a z;`jYvLMGKPW?Bs&+SQbiM&!pbZ8=Z6%v;a)2P)SG&2i_trt_YFe%Y6_BKzpnE2v4#=Km>dcuo zbY>hzkz6jfrLUhO+xnTeTzjtXIb!43vv6*CAA~U<;deoJM~Z&h^#AXIeV#Em@0WWu z`;GK_xs*M*mVLC$$eBLYu?@;eXKh-$?UI)}>!WSkdRb?G>>ihPSkC)?mdm*Ltc?TO z_#LFW`H%hHL*M=xzW=xF-~A(G)WrXs^KST2?fkD?*WK50ypv}%Jje%WM1EviTjtiZ zKJcgwUD`9JIbHHB*IDC_(608J#^z_^myh3bLc_h9G{SlxfqnWL@0c+@*D=mlwZXF; z$NnX2{_WUL|K_<3`;hV_d-5lfl+!0lix$A>)DuVh`84A{r^80EBw#vTlbwt_~*M*nR9rNe|gDyedQQ`{jx1{D1%wc z?#4|oWmKNCFC1gf+O+Lht{t6)a?c}cSa+;PlV{AAefk-5q$b&S-p|<2em{Evj`>+* zXZ;6@@(2T_)!MS3X&I{Wl_~1mhC0``u5ICCI_qpF4Xc(L3$o2|-8F%EebB}Tj|)J~`^c#-^|J%OzAC+sG|F;%gcK6q6eZN8edAA%6;6jmMd693*6Z?Xs+$IYTbjuFmb0$4Q>^Rpj3>pK%}l=~uANyuU8atJ+}?hVKy*15UoM z`@FA;`O*dlvWJ!l(p7dD)=z%5ThF%e)5o;F>RhMf-*#j@=e2PT)U9()5f#DW6$pH`SqIj zm+X`8+tB5lW6eC8&RQRIRa#%mtF%7o+=hACRNF?*n?_f$jg6Qq`)JeDA&t(*fD)zO# z^S8IKD2K8kquS-sygJ*l!B<%qdnx)@A5C5Bo37IO=CM7eGxsvD&Gy)r<(SwHC2lgF z)x|~dKl$p1UTm%ZW#0W8-d{cY|E+oVe&+Dj=~r~$L$BjJiE*?O^PJ8ecNOEaWVG8e>vZ$FJ<=WS0%4?=GpUO-rwt4 zzl;y2<&fi-4VlDNm9~y$=CgmcX-6xT=QeVhV z&40v_S?fQ-|Nk4_vp*t7P5ehYJ4`w|m}SqdF8+xDtUr0TRK9Z@kbQKv=XCZVop~eO zi$ystbya{qFfQ-$xir=vR#U2-l;@cl?MW?DaeEU%Gbd$A06& zEx**|AhRZ;Xj#i?*~xyUbD3$|P-kClS#vGr6b-vMZ#f#yx#p(Jc|i6h&F6S7+&A{G zxE79Q=;2E6zu?VJ{3Pfd-rirG{6||eRDj<~!TVbjfWQ z3vxcEt(V!&T+6*$fAWfq+lF?1(R`-se)xap+g8B5Q(&o{Q-^K#V9p|yf1>1>JYqbMA^qS9F|W?dnbwzlX4Smh zqD#)TVYfYPxgKfT%i7OIb1udJ=Ku6z#~&Et{r*S3-Yok*>mTmCKgR_2aO6T3<&?av zTBg=V*0krmK9-@im6|f^dOSIwV}NPLd;GG^dfNPa?0hc#Gk0VCS{MI}hs>>mi6h?q zh2LZN9`;{d^Zz)I-7dN7e{{ZwUf2Ae^JNc^X8@UX(u&N;kqnl3?AX+0Jb+KjoXlzWC{@-ni-C#ufeeOpitO8T;u&^gZ^E5%&A|eXXYV{QRFGyyvrY?Y7VRGykNC zTQVY-nN`c+$8`47CST_9A)S4z()v+fp`Pg~E!&onCrvEo-e}Lq;V-k$Ohg@g=O=o^{8rJk7EpwSc(`Z=E zVwpDc`Wge&+Vw|UN1uFr9vhmyKl)I~K5KsV)62Pfo%vPkw>;}#Qp3DI#{f8x!Cri7 zuhKG>we4ZE4r#d4mi@Jt+*&8wO_wnMJNE{m%+KNTxo-;mKm67D_x|81csS{aKR9Nr z@jvgfd#>ulyC(JkiMfvTYIuPoSu(AbIr92qE6a14?5brqvrPS54%2d-?bgMnJ^NDb zv1In?SC08`@7P}_>s4*B-|wE^);#OaoDY;{FHjycyV_t&j!P}0nK#=geRJM6bA3NA zYy7zGSyNucKR#JJ5*+80-&!@2}?ZKjspXcRVwm0oKVs z=S+J%M{#ewguzl;Z*i@d-PX?T^V%&ukXvaGaMsLz z0j)1-e2oLzvFYz|VPpK4f8P7&{Oe$!dxOM0YWKH3^RqF@e;m~GbFX=>^USWUbC&=7 z9-yqFb4-9=dC~`)%vw&F{8J|P*3lm=uh~|W)=zCbFb?Flu$lLmI1l=f>wU+6c;WXo z>*Bns9oARuQ}a8Otp7`9>&&lQ*F8^I$=sOEI{TFNs+^USU;{<(&<)wiMhP7K`23~9KL zTQp^`CDT=T%V4$i)n7i*ruEmRmier$Q}SijDzf}#a#Hf5C1mb`>W@#X8sqv{*7O)^%;Qk9^M0D|J!l9 zWFC$zgFP9S(VQ>iME1weI`WRcw%iUjIj+){XXb53P22Pz$9pyNf7s{$YShJfuXgx; zI^6S4Au)${i|B79w{_;>M^0rkvt*ezeBevF%&E0kY1`*BO`~OBmdiLm-a2UGgKhX( z=H>sHZ+GKq-S7SNkAo+F{6C*t5B$+e-Tbe6&qbZ_gIHBZ+=GAmB6|Srr&Nvi@?6Eg zW$-53XzeA>aw+@ft!utYJJuTu@G)(BxgFB{qtOXTkr|-|Eii zR;}+|KNzTk0~iPvrd`b`SCshzp=vedE*bq!{?XG)}80v zWmLA{N*lVD$Z*#BR@;M&4B%*i_WEY1<+Qs1mi%c^;_HZ``=Ud6OrTZXO@ z+G4DrPjNnZ&hMI^^<%I3dL4GgettKEcPsfU)*2iK$Ai%KSqIe3d~UCA!xq+MN-fK! zrX237?37{GM?U4bDlgZTSr@zfXIu6+O}XPf_m*o~_uQZPSnz+$hkyH<^}!!4HNgM; z^KbfZo!{=RW8RZuUuRC??*Vb09p_0K3rxeJ>8wdB)RA%0h-KQzn?`50OS`OVC!f~@ z?gP+A={pMCIqt(hV=>Q;>fpRr8<*a{WzUbXp3j$i$3*g(*Cx_@wk*Sul5H|=S!Pw+ zKwAFsv97i%E%%mL&-;}%KF@r+yDp_aa_?EQajodPbuhr(pY?CZ8Bc!wrZLa|RS#Uz zS+m!<2jI1&-^zVvo-tp$%%bI*GQ=`jmsNesy#CtJ#sJC?xz}#n@(=gcW1OJ>(8ug& zj{h*o8l2~Fy|}Hz&e+fY?PSl7-wZFuevXem4|jfltqJyR)6bImQp;cV%jqhAZ1`9g zPR(bVj9YGA#>>3-&3nf@j=pFAA@AIu{_przgPwTJyW25d*Yn%)5Ae#5mQb~iNl-|vBE`F}t4{x!t^uB)#5ZmsVD5d+|#n96>&tgGc4 zjZOYw&@%5+sVSH5Tra0B&rEBBap(D#qpeRl<34?cex{}$W%e2S8JBypTZf(h3(DR* zdwx7$fPIdExxW0P;fr(NyogIpv2VK^M`ju>$*W0o-EzK{zf5O;YzlVE(4Kdh)=&Pk zUpemE$B3_-6Z8H$=l;>}S3L6Ull8(Mtu@5|0T*2VNF(n75C`bPa*obvnA0YIXhmj? z5!p_fy4jY;Z|kD5qw&poeXK{GzLNW-{Yd_O*5CB^d+3|jzOVb6%6Z3Vd=B(Hm(1Hc=0p8?2YX4wh%%!J6Fj%kzGIPsL~bjQfhm#`W}kjRBm4V|7!S z^+?GvOl8|ZX?@X({^Yp_+Rc}Yd!MwM&+NP2=Q-$w-`riE7*{8t<`H!}D*s+P< z1T`+Y59obBb1&4Uy;pLo=04&p+e6j4K6T8aSr@_<^Xo^y(G{NOGv>19hINFwF7t5q z;hO$UAJ!FqzlURTzu)m6J~(#Scf9A^GXL1A-xT|{OI(uG%xkuhmT~#6()#7Hl7I7R z*yq}qfBIWp-nkz3E&7!G3Y+_W&e_q!71)n9cD?%(eBZa3zb5&QBc9iH^ABo&7l`Xh z4B$IK&wRVvcexj?%eWup>C>jYZ`!h!VRR|@4QA7a&xC!(0)C^DXF<&C5n>g>b2o(N z>InOBP5%Eb-bLY=0>?o7$@~3`{cypxf%B4oZN>v*0oPqto6xIo-@&54Yu z&H;Fb1^!^qJz4YKAIi92*wMxYx%Iy0yv$pNJpEr^%WaoD-_?V8##;6#;9B83y!?g% zyu&2p1=95Qd-z=94l#*2iSvHOH^w=xgEv^OEX^YZGA-?MK{qVya_*UH#j!E%yEQc;^@E{k~5bI7Wc~d8=;x``Vua z5CgnU%(Z1*7QJWaY$J`$dzrOqd`Ra!_dMH7qiug6_Is5vAAqGMVgRv*YvX=DbAMt0 z{oD7}jA`)AxyZV_qb;)>P0VeA`P?SgEOSj-rnRdx+xn>GT_4V0*45Z7r%mp6?kC=3 z&K*1FkB#Rl@K0Z?lmGs?|FTbh?Y$+kwdO~F|J^RTXJuzT#5p;3*QL4cu*3cGo_Md& znSbvccGKuA*2y;7upRB>O{2;8V!W4~`2b}+S7Q!2oUuOFr7hZIpP_2r5BnT5td}D1 z+Rf*4C5@f-Gp|jgdG`=5Gv{R*hD+8n^HpUz1~BKhjiv#>&O)#I^ zge!Q@Jd>AcbS}&J(w@h7`NxMe0{iqI&MV(@(u#eAd{gUw#>trbANhf={CO3!wc19A z|M?ehc(U^xpzb*7I)H1I_iMOM+)M9c?z^Ndques@an_c}dyWf4mE@;|}~D3j1|+t&{Q^ zf;QP#bNrX^U^WzU?x@ zjd0$p(UImqj$`iYuKP}Bo?F-T%X0wJy!*m^%yWP5EB6@o^VrD!^?u`r*cXf+-S|@wUYhJwzeD}j0wa8#(nP>*NA&;p1vUW zoEP?N&s_ib3ym;7P@|*3KZi4C<+cCV=p4Y9`t-N9@X!6u_mp&I+xwsI zz5X&q-u_|VA&(5k_+aHZ1`K5mz`Wmgd>{SBOZWLXHjW7{)uhW~F3aV()XW7G>)38N zPhbzT=@`KNrek}4f6s9rZ9G8BKF91m^;)RC|M+BEe%8;p-_Y29`cvO%_FdnqI50~5 zPksM4W=}Z#n(lMdI>-Lp7BPVJG~DO$-1{&4+-q(2fqefh)27zf{xTTfLn$W);5U>x z0DjE-dB5K{=P_}NReWZ4Dc7guoqXoHDz7ca1#GOVn&zJ|Q@&+Av!89S&%O4(d2P&l z|Fq{k_1Jf0?5A%v!G5$q>$YDS*>%6MV3hdhU?xRb75> zpy?REcbkj>XqneWp1A0BQRj2#TID=x?<<;lSQGPp$ElU;I{OJ1Jn_|gMRG*-DDuxc zffKk6yc6j4s9Q4!AZ9-r^J6%cSMRZGlSj(?pY6HKc4Q4b7~4ZFCkDWOuQ>qoe%|w8 zzn{5p-pBM9J(tX>4C903G8smfcJsNO^?TK$ylMVv-?hGDzwDzK_c;!)g~zYXcJHJ9 zN-EjRV|&(yk4- z=iYzH$ZN}ehB5`aenaJZFhA!2_*K0VjGgiIBY)am^Yi)ncsy3wgkNnroo)J-{NqC% z?Ac$tWx1Zd{9mD_V*t-R^Vn}ZVBGh3)f}s$&FiMdPMT+#u+Q<=%|88;HhJD3{c_c( ze}830azxXk%s=Nk?c8gh>#PGxZtKhw0~j~CxA5Y)ug(nNV?QuWxqYV8wmBHrTT|{F zfcJXx`#_i8-+jNI{jX=f-8~mR-{a)i=@&#SSMR%@r89ILaBX|!qUW^G+;tJXIk z1NaS&JohKgdpsU1+T+SLubrAQ=2Wnc$ZFkvvHv~)#gG5apN%N*<%f*{{^wtK>$#oZ z^If^Fxpe^dj~Kvj;laEy0Bt%ml>39_Wxv6WAAJqIHGFT4FL8_a0hkLgC*>WV{2ZI( z^4RU;920gq(5}sMvAoo!e=g5;^()KCQ^q*l^c;Zp;h$^boS)D4IMp6&zPFT_M{`eM z6ZYvZbA&(<(K6kne0F~4OlKn&n}eY}Il9GCYS`CR+CyrBn@T*q^Q3)!$PdCIe0oAvOu zJ?oX4a$;`NF@S3X|M~Mh&U}p7MwnA#}Utu5&k*v9nZP0 zJJgGYQvJ>1=A{Ey7yYz;JSXPb@xXoH1)`cIc; z{A}%xmXF4*yrr8Ap#N5XuDZx)pAyGjOkJHlo6TpO3?tfQ?Y6d=Z|%0W`_CYg(fjQ8 zq4)RadLK0B@qUM8Pu1U@-gOZojfnqSk6f@>=eo$p{lV**>M$9AE;YV4A38CburPU~ zMbp#8ktufG06vX6*6MN5^eyjKrxCU|_AKtnZSFa13vDx=Oy?V)QjW0kgU=h*e&dB` zomPkcjMYV1tJ|K7zQf8!?-a7~R_Pfq{@n;intv#{}u(UUzx zIy7f-^DWJuGrF{N%30X2gRnhA84H_l&)Ktny~cO`bCzc1h+Dp;`E`=!KjY_-PQIUJ zb(n9@`ezU9Ijh^s;#*ymA?(MaX_oJovAXQN7B}CXv3FSK00H6>wW5k-Z<|r zw#7O3eeN6e#?N)FxRLRH+aWW%#B3g5Jj(dhhogS5W*^Py!T1i}c%D2z-O8r(qx5EF ze7?<==F_L~i~p>pQHNjF-b+3_=kuMFwKC>YHd7vD$hY^|Gk!YHTE6*KpFJDZ{ZB=Z%NV_w)Sv{j!#B?~2B)4tt-U zZ}nt*pI_d}nQwIxx3Jae$E}V`zST#*FUPD7{7lc17q$88gZE8_gzNoRJoe>#8idEQ zy|j_?KTR&V=K4K)E~vie0frO)onNh{OP}8f+cyN!bm$D4^3#1f^ut!x(xP$W3!_~t z=hM4AV`cEk_siIGR+hM5-haj~>zDDL@yl4)-eDEttKCRC% zXFsF7OdLDFXw2v=>RZ0iTGY4lmL82~qFGD#`5?+4zMXCL+jG&lrTf0s7xnE~d@FC^ zXnX8g%eV4=+bj+LjgPD4g8z(PFXjAt{c;x0lyC2{a(1Slb$)25zVtr4kKPx*bj(eA z8jQbly|@wcKTU5pVDgvs+*^I&lu3@T-yY>nXvlZamc=uLO=eg*eCqY<_QT{G&H8oP z^G4@>84FvUm5usVE}hS_Q5P*|^^@+0t(-mYzt{3|`O#;rE_;vp)I(W(zl_Nj%d>KR zy_^xU`98QaC(nfczNEwZ&}&Gu1E1VFDi<3zSbihtf5xR%|H*$lAbWy7=FkRv!an_E z3P)+p;!(bi#-sJwbEFgY<5t$v@s0ldG<(K;|2g9!-?y-pkJjbK{jyfxZ>yD!zSDm$ zTHcTQL%`&xA$3DD{paYBj+uKEOflj*&eX1Pu_=)!u9@(9{Buc8;rN}dGSHO z|8%3g@6-do766TK=AN@UM$^8ZiJy(`qWKojlyCHGzEA5$`<7%;XzwX3Ec&ZqNFD zw7lg-`OC_YPuR+tALWm1&znsheb$c~k6K#voz!n>{<|#Ae~vUOV_`pT&zNs{)IpfG z`0cUZ=`h}}PrVNfLYJZ5Z`x4z`P5aI93=ctw_1;1wOr2yAYTu(41jjHZv)yhhb)NF zuhF8P?#qm5I2yOQjmE7Wd_T=-AK#v_cas)Pw>-ZdD@R(od`qKTG;GhL^Zk15S!;Wy zIQ2x!`1M#HqhlAP9`ntQkN@-}^rA17qYocZ)-RIOAiZ zOMJ^S8ufiYkFYNntd4ZF?>}exlqc-xSsi8zljpa|!uG6{w>m8D=kpGGr`2cWEKa_? zGy1F_x95y+?RoRbw=lki?KwYgVctFO3CH)w`zEt}4EJ}~Y>V)WPmjm8uHG9qY_Mkz zLjGs0+7Fucw_xPT`nBmY(TeF4?%g+9O-H9bUmKnJ<)Ud8&sHaS#)rla=KIe_>);uC zxBon0i(9_chi`d)*vjEsK4HI%g{^+SEP3hVM7laCYw3j3#rYI&7nbkSv|lbA zz5D!RW&P)Uezbgh#`3J*Y(CH0bGhobdaS(pmX7bg+w#p%SAR5(veqBJUe0N-uJ7x7 zlh2vt_x?zS_n`sS`=q|pZ-4ctd&`0i`rJXx|FXssZ!&)M4&9^MADHe<9Y$-ME#V$Y zn+xC@4f}L!Ve@@jPM7BMh#%%T;|aeG()@TdZ27#)!d92X)3t*#_6+3+Tit$`Jgdj@ z{dhDSEl=ER1FP54h?~3ftJU*-&hnWqJ`lRVc%OA>kvm7<@$Ro0l!y1_m7(FYBlIVXMP@KQ9_4{^T}y&m#K%KR`A%H_ z>cPwVj(?g84>jEv5z-i*ZPtJKF0}(1N(Mk1*aFA`)}Ogs2ztfYynwLrq|Y0Enw2r% z=PA1oYn0=Pg=B`<&%!H`YhezetmwPrTf0sW6ws*laH+r zzQ*^2ZOr#ohUfFV&--F?oVez>|7#4izfWyA*!92H`R0RW?9%(D4}=YviC%nLfIBAz z1C?%a0J`B$S?mF$X?)`yqkoG>`Ni^$7mPn_@64~$%J_9yy}k`%so&GCa5RMYq0Yd~av>ZO!FCVF`x3Gd$nZWy!<8KX@5F z((+Fj|Fb68Y~n536|VzDAKBhxdI}oC9)PC#CJ@>;-Y{M;ejwe##v6XzPqTD%4m!A_pEUjt(daPw)(;iCY`l3O^L%>%J;J?nPj0K`GvfjLXqdS1QY1B=5OS8CNm!EH8%2U>FqyLOw4`FjwhB)`HP2c2f{B-*MK=ZxvK3Ii% z|BSod`PRYB>}gv63FUu!di2z_zgHQ63~vbfNhe=uhu;?Noaep~vk8nRqQ1{V0*etx<-qVMpZ;aPhI-|Dxp%>gXkf0xy3by$4M`|g_xe#;o1$6@0eUJaq| z4Kv!{@%|-uzVdn+?m76AKEeDCIHxXu_*+U-Hg`098`?((K;N_jT4O(nZ&vtiuPC3u zW5#=y=ku548!s9U+B24J&-nTFEP2uNT<@}HjrZ++_MBfIVeMHlu>uR;2OiRfq9F^CJ??q!)`OqXGxXpS&j0lK?Au=680#zF4zqULP;`}vhNJY3 zoI>yLoe|#{Y; z^YE9?^TeZLkZG*yJKfp>@5{TIPTjcc%FSQ6ECc6!GLjDg{s*YDAO33Z;t@-eLFI5K z-y548fVQK2fGohlH}DU?OY5)W!*f2L`TR(Fwm5nIvwmHEx|Q?mGG50g-Qrf}`9HaP zH(2A~e6-p2$Y1(neAbZmeN>jvCfWn8Jcw_^**!b3X8sE~4kJHHvD?=Ud_=bN^ z2HdH`caN-Fa?X*q8LyjukMg_e`NqWaHjem=pZM_sbCMTtc;!W-lS9Hk1oGD$jPnQFXNaH64O!^!u|qFXS2`Xi zJ<98}t+DdEKc0*i?WBLw=2nXy``2ZU{9ENA!SjA64^jTtA$T|0rv0=#KGrn>=os4d zY2;uDN9BRVt^LrtIpf*7`1Y*TXZ8DhZfRDgvHI2*v-hQ)C*1V(HlHO9sqmr9{~^#9 zu6y>|${(x^LLbm_W2N7^w99yMfBSW5Lt`onwx;tXTq^hU4Y>QojfWJ!M>|{Ke;tu4 z?tgn~%bEA=RGax=Sr=$byw#Z70^ifV(AHtGeBwL^{^Jjgw4GhiJ7dxnA!rDFOKD7108lWG_kplnMLjSBS-|5wH&VB#X zH80k^pwCaroS;5=tufVYvYWMiY<_WFZ+Y=|vZvpy7T||+LV^D?qTlV7Cq7d#db!&p zV7;s{(RZOO>GAMw{gCh5PF}aO_xdNRG6H=lXB7B9C;F$}^1@Gp-qYOK!Gn39;FByf zqI{37FTcBc;hmp;Gbg}@a)AQ>=Y{^6kNwBsPAi}NQ0D=5&ZRIXNUwtrq@3~jK3w06 z$r;4s*2%qm?XMcbGW8XNpPM{vjg$w+@SLk29>D>p~&ANL>>TFzLec-^@0w!;5FORsKZ|uDM zi4U&b{NC8T0`pLQsKEdGgns3{Z{By<-21lIm=_fE^Zu0u@VL+S@V>0=CFG29*OgEF z>6%S%jov2^59Nmo{J&q&zxu&7tY)-;2p}96!?F?qJQP4cg{Ly?W?~m8Mk_m&JFCGeL)uFCj*St8w~zRTaQRGFo+0{>?joPEf8H(7Dctd0*Gd{z`1{!sKBKHvj$N4X+l??Ck?NW_+~3{~3p7e`Q?$z3{;3jg`9j=$;Y_nY2$+isHAbMo|22l=Kt_6P{@nbNZ+-bEZKiMhSB$%K;1PeG;PcGEwuWeJ$M^Z2evl^f z`QkA*B|FZ(_aA59{_5ARd3V7+?f}zf9~H7U-aTVcKN&y!ou-@g0ur)0a=WZBLhFkNx%1+n;}?@GVXwAiV7#!>W6d+~UG~uDuZ#4w5N+rYDDZznBaqkoFMj09Juckz zxd%?)@aA_r-~9YvTgqrCY(|5GP%o4fa& zE_VqoNtTXZy{FB*hjtvd_T@jFx$&*9UUc7Q)|~t3zn_v<=L&@yZUhSa-*98UuWx=g zS$_6?pY4C{#y2*cw*KWWbY1hp&yQU7>|fd~dE%eVWv?7tyNKTo7{1Ki{|T?=a@-Ya zW#lXq-_jJxed86A@7U9F&I3C;ta$pPV^+WTrxVw_@ZV>wfBE$bH@?2&oclg|NnuZZ zU%_mk=L`JbKm%WYuU)rpUD5jW>rY&9VutH0iD z%F-WoyK&Jkx=mW}>r1Ym{~L8TEc~^k{jA&66+gIY(fY59zVnG!hpxVF^NnloSu=m_ zh6z$v<;^$W+`0Z*U8uQ1Mxem|4KnP7mlj5#QH(%={~HAig+>%cpg~5U!2b<0?1h&W zMxarQK!N`o1q_8o6h@#yMxem|4KnP7mlj5#QH(%={~HAig+>%cpg~5U!2b<0?1h&W zMxarQK!N`o1q_8o6h@#yMxem|4KnP7mlj5#QH(%={~HAig+>%cpg~5U!2b<0?1h&W zMxarQK!N`o1q_8o6h@#yMxem|4KnP7mlj5#QH(%={~HAig+>%cpg~5U!2b<0?1h&W zMxarQ0Q_J0D~v#41PSqglB znk&s%V2{&+t1=bX=JGRE;Ie}t!}A|oe&_TBwpxCMK3aAVtV&lws`?;E`+{xN&!_D{ zRds&4F$@RC6-v_p@AYXLpkr^ZNYj9=mWQ8a1pMqYLtLYIK~NbTp&HFg)4&?dOG6~v zYQDc#1FLH0*BZf^*|i{yG{05{BF(SWfk^X%phe9A*cN?%qyt-{`H>D(Me`#>UMssM zjn?X3q=UO^Ki}E!K&|daI#{dw5d^o@uD`|rY^|MNV*sjh@+f zSAGU~QUK=4-8I51a! zM)C*=FiUy`56f$SH62ZGl5usRr&!A z;m@c+Q~6udKOe%MOlHUr;mrteDnA2&A$-YXhWyUfzYGAS@-qNXY0qZ>U{#KM%gzKq zb$(U40Za{Vh5<|sZ-xO(4PS=*)bM2(KrcV-0Cui!f7$`8tjZbb^yHYr=0_K_S=_c04n|bGy|~8&#yfIHM*CkgEhLBrh_%Qm!^X? zx|gPdHJYDBiPda=Z4$51JBdVOK&1J#IuL1otp;|E)*nHjGMXP5;ab@>8(6D(kr9lH z9<|lrk;>Zj*C2t~*)>Ke&FgD4AkFJ**fD8dFKAaZs50_cbyO?J__&k{vhVLvpt`m~s4xOKN8m&usVZ?njDJTHl0S(=|K#_k*d0`De^mCg^5?rJx?oEZy_6W8U8 zSaAF~&K-A_h{#i7!D*Mrg31wTgybi5fK0}H^126xxP-W((3OZ^Cazpug}5f3BaS1F zGNs~>i#$smadDqKy7*+^Z&-s7c!4um@(n~wac#wQ5Oz4t{z#c=2cK4R0_3n-=20tCKh|K3?3(;?59vuDFZERSIlZ1hH5T zaXrQL3LW9@l6R#mqh-&R@R{QHz2g(a9WCx~aqYxGSI`%-0y#lj4nBG~`0zK(8F$9N zwK(uTM%+o_!0RHx5{$16V)4PTcw&^e2|+wDC5R#T-zR*W-iMX@HeM%g%133ZBH5Z5OIJjux;K1K_-Q+s*m~rnS?o@FX z3O?O~c)WisQ8YS;7u~2B2f<>=s}i?X-0f1yy`mg83qX&H+ai@cE$$g}q=|ciGE(+F zdFD=W>%^@Vw_IpvUXUo7BJUU@?;9xe&{NWpDae=O#T_B8jX3BMnbi1oMB~OE+!;g0 z68+m=9C96*4(7drL}HlWJxSto#4Q)MMjqNI4?QM=;<-dcvo}jS9QBRT&L{q`;)Jue zH96zb|EoB!*N06n?z6pl<$#ZyR}Ku_fPXf-xbOBRlGo()ZhtC2{>)#O9d+UlO4}dt z^>|suTT<8aQs?7R|J~x&id!k~pD*+m2P>uUor2HfMNM12Ro3~W|4N*C=`V`A4g9dU$Jm|m zKGSx`2hL5#hb~IShA&M9BbFzFkt>|f@2C4t^HxgUiezlWvSfVN;$&=){8oCu>3d3g zj@wz>ZO~s6r(E*$vd$-dCsE!6ns_o6#5PJBZWeeKAsd7ihDo@Gq+xGhGa#q16&fcU zG%ozXU4~WdclaILj}v!}$adlNqEUkXbcrvOLU+bvu`R{zkNQf{X_db!zGCFZu|CuG z#0Sq8oCR0Ic-WF;Fm&;rV8|kI3!NLhK>P*CT8?y=S6z1K;$%P_)HiCC(8UU+rFg%Y zdrGbtxxMI=OMX$(w$qoTJx@#H?~=AvNgL-#TgQptTjCdpJ5iiZ2go$~+VFpk2Y<#x z)UVp{*w@F3J4fuVt77q@>m)o&TvZ|#+g#G&sI4VuT)wTi$Cw>4;qBNk;p^eT*Z4yh z?G~JOD~^K=lV^*&p7Xup%SUWSo-2=wjCQ=Ocndz@y$?9o=~<(R1-rEkqB~+j570u%l_URA z+~u_YiWikUBW=G`=wQC+tMOu!UM+n)M;x@xoPjlphP4eE7Jp%t6wf2;PY}Gj3BNPn znj&LYRnn~G3#F%B`t!uqlXk_B#mIJ*=ON}Q#}5?dS>EI1gQJB|E+np;V5Y4F2>J?6K>yjo|q+gx{|gSvf&67Z*2a zzNPfcD}Gtjd&(ZQ+t9(t^&#l)EI2fVJkt|GtFh6ml12Sz>@GR2+fNh4rCX$*E8N;b z(EtgbFYZ`z%o$lbKn@<*zXOjy*wat?iwrz2mPlMIV=_d-(~9Epjm4*2{QbnWH|~ys z`LHFSEp{Mf`+lM?XE*E#h6x>r?U?8@bw|+&=l-V%{ClOZtR=|WQv7lWpCk^ufHlkm zs}Bww{@{+IfAo|7eoA;=)?wqLC1XkHkte)c(&M`AD(8nSH5>c@>h%4Ddo39h+KwZZ z@4-eW?KS@ICGC%VOZvZ3=zfyWKl6k$#j$?m>jR0_^WTBRAMCMx4;TG@Mo?5tzbBS7 zX?9P^c~}1$yH0F)!CmKS`w90&%n7R95DC}9$H(0(YtLmZ??0O(?DWF!V3gR2BHK#N z>G|_SB7rQJ9wdqf%b1`KjuwYbL^q-%>-X=#;7>oWaiHxZWzFt9!G3`7{M6zjy1r6$ z_4PY+KIQDXebnzBe#l>0zX_l#-wlEvvEL(Zki;oBV2-%i&L1RkY&&RRf6)VUFm%zL z*yyTc@wGQ@7g_L%jLV!@QSnHTh3qeM5yxDp{%N58@dtb6^{j;+E%ILWX5xdy09aUd z=H=gwG0rI+pM!rg@u80k*eZU4A#?OGHz$Kh8CRVD&r6VELz$!Tcwa!L&`uV8S}LRtT;14{3t1(L<&-#z%Hy`8mM3Vee65Oic8ol8I)++a&2+tkl)3S#X}dfUbB}xAIfqt zhi{>Sv9~zvZWTNq_~GI-=?$>6^KN(Sry zEg39*DH%+?*R3^~j6gQ{^p_L&2#pUCSukwL?zqeoN-r7k>v$ruR>o+o*oNK3KS5mm z(m?&;Z?+yXU$8F&`vGO`kJwan)x>}3n(7c;tIMH}Bjcsx8{$4tWIOTkw!sbqGB? zxy{iN^l;N#$zb{ePBuUbMt{&kU1`ASq1`%H>^1(+<;`2)FJm=E_yrn34zR~vKXRac z@HgzS^^S^_lwBl#|I#Cld!)GcyH`9fW6M~9`*2wYnzcC@-1)U+@Z2Ah!5beZ zgSU1jgV+BlxPRc%;9sya>>m?ZV3^j$=XuIMDzx#K(2vrC$PfJczbiWBRnZgctM$%M zp~=0X1JMVvj#$!n%EuL*j($wWY*ehc6kTwfIP3vzD8_dG{nZct%fe*W+aczJU-{6v=l|qnKKu#|paT^92>$SS zln%5kd~eTK7~h;cXEK8F$OiPpEuT#WH*9pWV4%o^z0nKoKgm8ualh%iDvtTo6Eb$g zgn#7BlAdotmNJLhe>AXv@uyv)^JA>-bQJ8*7Qa`?F{f-!445V3VQV?*WO|k~bS!H@ z^PWrw5B<0B_;!)+{}MU>k>D-3zbf(`AN*hVKZkva?<1I}FqCw~(D1c#p`VU6QfZVC z2j-+b@>53}*bLAEw#W6iJA08i1?$#z(FxFi%!SHi-LQGr(~$!M<4%UMPTEx5{-c5Y zj(-e2)h1S2ajN*26(4uTrUbmOH#WZ0i^5Z4zi<4y!}v{+^XPRPxWo7AOZdgVc)C86 z`zgGQcSC$F9sIy7#rIN7?>n;me2T7Loo3^t_ z*E1fJvFs!E0DDKQo55e$*8Bdq|L~Wi5HaYoMNnFS&2mxMF{f-u444zj{5snB*z~g3 zu6EW7BF|N?hq%8YzVbcT3(rFXFaFt$yUKjQ-tbN5`&g&TPnTvmN9n?3fIUM#X*lG; zCb17@J`}DcNT2Fv7bp#s516^L^>L?ckTLBQD=mYsST~2y_FWI`FZ^RM)%haxIiGcQ zS*K%`75AO?uf4MMz#g8*&c?1o&cp92<3l;0;(y`$=SAi}E|{CW2NsWpe5|+#CWa68 zTPh4s8!zLFtAVe?p%qIr-+$guBmA)F0(|g)_$TgN*pF3jxb+B~C)7b73}v5lVY0mU z4S%iZaM*kq+e)zsj~8FoQtHVq>|g$?i$C|j4r}E@!PCbJoWLT55f~fh77m~BF;$v~ z(n(lX>iMwV8ud#V<9%!bqXFpP3DF7nd|T$KvYyl*Td0mSAmdcrYy25BQx8$HqpP;DpbQ$w@GWPqX2lf^JSPVO)Nl@Mtxqn9K zg?(O)$+=0fU3TTo_afie6A5nnl9TuFcgltO9lT!>+|l#cd8%8#=jMT|^F8>(WUyJr z*yup#>Y1>QU~AZA^9^q+LtJGJzR@3gANeo7pRa9_w9P`Jgvp=3#my6I$-gYJa`3|4 zMY12!^ulYH6I>iCYl5BCJhZzcxEFu>g1-=;ys;!!(VVk8T}!*3y*$o-i(Avpf6gO& z!5sdF7Qp@m!JfH2vh-e&rT2Wxt@#nY|2vKrm>0biDRE5; zvGrv~xjT?Gg|fa=e%Z8n^L~Q%iDC=1 zMhDjsc~^XI@fY5gGn%DAd9zNU08T2oeB|eYA&colesUj~&syFcUlm=y-C=Ap9=uJ* z`}iaCv7uNC;JG`#?Dl2WeK8r_F1iC+fHqi@Mcx{19-{p+zT17H~7cm zv3PMwnVe~EC${K$#n;^M(>m|xt$5YV~%M}^G5lt6YegO z^Y5*$9KKetI40h@BWDFzgU$c1j`)ktkHwp|lxcp@s=Rf(Zbkj3e-N%^5qk zHG1%6uf}9O*sCm%bm#%T$0mgL*+c0zBpF;jDj8fhLfpuj?sAFaEd9#s99^(4tGpM= z0hIy2sMZHj`40`$C?nXzmn!cCH?U_fiZvW{w?=$R_x-hwUTKT*KQe?mRToGYns`v! zh`!;RNq#l}a$-*)Yo$$w&VRpkn|9pZe9b)GY&);Kj!P77{-{^oi7+9RLYOe`a*cJa!p6uPq0X|3R&7ox?my#y^X7f_I+&Xw_Z4r!7a3r3KyeqGp$$I_{-6HPrE#8b*-Odb zq5*Y~0i%*Z@5yexeccyCkNiitHV}?`y7d9%0oWTRtR=wT{`?&Lu>+uiaiZU|(g6Iw zTKNAB!92uW<$%$EV6HMod~i2CKpW=BoG_n#0={_``PzKclAp9c`nXRCMlFlmbj(i& z)CK=jE@7`BQGUhnW$Zf^_Rs{_GY`OjM9MICWImIL@BMT+GnA0A={S7Oje=3r zij&Ucd+OYOdE(!qTfbOP+^j?<7;Q`YP5V}8^XJ~%WnRWSjQu;-d3?;l8|Sb882{r# z1K`d)fG}tMz^`(c;Ex@c2mV)x4CpmMz5%#X&gZ@7>`!=_F^1p38;9&S?7^LU+Rgej zyq<1-78>Y1)nSxL2Bh$RBQyT!0mWW?l?7oOS;RLB*c-gd$GdiT7j|jOQA^&EOLE!= zWi6YuI#KSo%=MQi{!O}%ME1v}f67Olo%`VY zAKz{C5ZjJ9f4*{{huDsMCx9)79boeTl>wq_6?++P_z;J^qI+2jvX4Fb2s?l?9TP>? zn=XJB%pw1=|9O|%ePB!&{KY4%4&2EL9drm?&U+%10gJM?W$=Ps3E6vZKYrB;fvTu! z@<{!y_1v&eXHD(^$QQ|tVKwc$=a z^1*bz$pAY8V(F|2FrLT&T@w)g&PNx35oe3k4*0g%g5Ps|mf}MhcgB2^q_dW%ayQ4A zn_jq9>`deVn8Wkfg*etLSrf$mH2q@l!v}Zcb;I5KhlCEH57v}b{^x3o?7hiaS+lWK z?{!VMZ$`R|Uy@x1&Gklrg ze4m@6-29HKgT08G-gG*Lc^!D`+(Ix-?H|hf(Es49^dK~7GRSNJ_9oGzx#%&}0p+7t zY(Mt0-h5A9e0Z-B+2?_I;9qg=B;8wXdi8{L+;1cNpI!E2FUhy9O7CE2ys!43@Hn(! zxGOyf<|gmKU+F{W!qUK;Fm=814~ISTK`^{*c>X#7Td>bGIgk5rwH<&hsJQ>o@jYh< z_~sM6&O9$48lW8ecgPJ}L(sD(vfjaYWY!dI4+$Ay^GonX-Yfr$Z+f4&*@Lu==b@uq z_|sO=0magu<0h|OfZ#u7>aE%L1MI3zGuGi zwBfEk@*u?9@)c|F4juW-1BkySJ~Z;?znm?2(Lk{U$L6O4D95>S^ar-py&?m^&E^EG zF{GRCrKJPG9X*H4U%%Di2yXCpO4f^Q0j{Zd$md|M{4Q}HZ^IpV0ro~8*efHY-K?dh zZHtV%rZ12=`J!ag32UAm%J*W&T$ue_NDlm)j;T`p(d^ih4=Wxt@58*#_b?`F-V;m( zE0z6%6+X`J24}+f7B-pyYr;wsQU_t91K)r3BRLBuJjPmozP2EHNa$+hDSOHAJ7Wv} z=vm~J%6`E%>o_Z~xw#*E*(%>dY{6RR6C$_a^@jz2!x~@H#5bGI^u1wkar2=M)&tm2 z%&{IM`!Rcv6D@DJ^?yztJ&XIL_DTM?z42CkzIC68L-cH4uDdy)PtI~O9^eP&$bIa8 zo9CM>fQJq96yEZT;_msHCv*VzFbOKogOl~-S7o}t-)KSkU()!tVbyEyn=-Wp7iOSO zwmtd6_)X3_n^Gw{w0ce?Ly&E`Y@ z8|IwlQ5Rybb|7JKhA+4pJs7{6>{smn;dBA~PdfGi>rCB-=phUN6uHdar!BzG%FuG_h-51{Re&#h0oRg z7yOOijSegx#XCg{$bWGu86eoRr^NSwtP7&k^R)%B199xl%zh+;ES3JGWW5(=elz)Q zx36qGZ8{%2UuA&!mZ#W)xzUOFQU)3TTOa>u9GbuuWNyKlWWQPAdVtran(fqmnPwAj zdHp5M1I4;#wgIy6f2-@cN?i^WTyk}r(xD6fnsdz;-Oqjn`zv4xzw5dmG$6QxzuI~d z_UCwN2S^&vq;rb7m#1q0LSM`SaKzvESnmG#z1Vg)iX0e`-<w*y!+?lvSD zbUh~-Tsl@4E z06L%^&JkjJ*t%mnn$;P4 z?sQOtjcf?s@!7iLKcPzPhPK0I&q(Myv+Va9{+#Vq zJ5TuD_WV=xfY25&IxyT#{u4L(Z+!2|1|}7Y z%mFwtz25c?BXaK%8{1tQIXXXLm>gN$Q{LMH1*E}iDngF&S zdH@^G_J+W|a(FWM)Wyl*>|S}Ur-fq-jd0$Zy(7a2JWTd0=I}o906%moT9C3z2grdi zoYMD#t=1XhkKR|^AIbpAk#F*Xv&YEVY;s`G{N2T)mM2fGdi(~5|9k28g0tY?WaMJS zze)dTRdJb5=ER@*)QV3#967gb_=7bvz;wTcC2o5_Dcpr_e0oqk1#iRO$KG^+rM-qe z_`9Qx*SEWS;MkY1VGE9OxSx1|vsKtXg0C~_G)o72_KjFGX1-^<=womAn-5mdfb9pE z{5PGT*h`rd4M-S_;dgYt(tzO~mLs1!*;mcAPBlo@00jTzmp{gx5kc46-bgkI z)^RP2@6&=iR>){Ew)5ZZGg(qI(Br zgJ$0pQ$AUg8-I8N9N>TOx3xaC0mLSN=an8pUN>4W+!b%Z&*F;nhfW4SR~E;|*<4Wb zB%gO%Ir6~y(xDFX(=JN}r&hYXTI20pKD^I*Cf{YClfeL-!2yhG;4JBu=hFmfMl;6$ zHZ-4TbjSbI?ZUz}NX3H}M0*LIwF7r%)XbX@dk-SHnh&*9&9 zn&7`s-nB&V=bdRBXJrP=buyCiXU!M+Z#qEn7u~P69yAc*Z#d&q#@7k(aSC6-I=U{H z!dl*^v_KiDhcNGXYlq_{^#6IilfiLk%lg0+w?>gu?hDU@J$r7@H2VYK1Ab|-M-B)! zmZ$iKY2dFkAU@Bd3sU+(WB|6k=>e557Ka{$-YgHFdN}{aSPxyA9t-dpv~XuaXus3+ z4V(oEIxTp(&iI#JbA!Xb*Mys5te0PXXY2Qp zeMR<__|8+Y7pxe6!x@ZyXE>*9KyaqKluPAFT=`xwRvHi={FzVqIGZf6G@}vp$Jn)Q ztgn%M%yd|g*6aG6iT*Q_9d5Wq@$WG0&bs4&t;4_cn(M1#e0$Mj{0?#WwOvm+W6K`w zf-Mds)BRv>^FZbC5Oa9hWC7`lnfS)P7FTSAzwwpFEgbsD3(b?b@x5WMcBj0L@diiM zO|bd$`OP5iaJ`^!GB~rRJ2S?;6Sl8k3v3Dc#iLh*u&~Iu{I8d&6Q(!%6%Nkj#JjD{%=3+jymICcJ)N%e>wBHDt3*~ zRL==J#NpR=@Ct3>8%g+5`CsI}^1NUG-z)DM{vPIrExv_W(@(`itf^ORJn>Wfk4%7; zLfS#E@J{p&{s*60A`duRdN!!&&8jJXIpjWJJ$1!>*K?JVj$E!la&gSrQJ z<^c;}k>hnKgO-HVWm=ceMRp*Cg zlm^1G@H*$qS#x|&>`v@Yu;>17)@oC0CX2G;&pJoHnaSXc?#^!Hd&5fxyFH>U?>oE< zZ^ce9Q+z`{SKPrKCuunH!B*+R$6wOmcj!R<5O0(DCIeD&p#{ngU+VTZ;Q!3{?<(#) zHF?siC%7LXIDUEE?Z1`-rz_309z0`C9R1#NLKgg`E$~10Hp1s%p}a3)<45Ix;ZuCG z|5CJoJP<6wH-)>zbqxr<4|zUi4~A)0*68hd!JRwc*$ZMHg0W{!nzO&z)=Nw#pda|g z?7VBM_mJop@&G#G?kOKvlLJ29%nAKC-*Kd9M(6=L0B_2Gr_zQ;1Ee7XYz-LvSrfMM z1LwK+WW|5%p5lJfl4srWj2r`#OBt)4sPpW+H=D0jPyoZ_%0LO zWV+vEvEnV5t6s(jYv{mqf%t?KOTiU7Fgw8PKX~2jeZ$;j17&$0o__{;FW5ivYmwLD zSdYr*JfF&a!5%x8wLxr|)ViU_fNn$Fx1^lsG@e%M;cuK^ZjN-tU+}F_HY}6EA6oG7 z4`sdL{R1cWk@-3Y5PIQ$0@j7#Mf7|o-tReK5A+)EKXd0Px4dvV_;*>nxz6jq%||ZL zXIhV0c}DE2>vyTWLEUNJEBM1BtV=%iTZad@*Esv*VIRdGOw&2V-Q#u2DE&lq1Nt6W z&%2)#zGqxHFT>t$uKhB2AA67a-nrL=-xUZg8~*sVXUP8RQ@?Zd8{WP=Fuch_*PDDW zU(*G5qYuR&8VKpYm-%21Etu_(?78!6xp}|W#66sale`{`{sjl3TrQq zd`l;+4*8G62EYjon7wD%`}P6$2WK5=OE%jt#J~C2Reu`t<0SXR2c4HaR%iU%4V|UW zTr_QElk)!4|Ck+ru{n_o$N;{bLRNzbwjZ_t^4atNzUl%=!#6rGTvM0}&ZMCOEKlbE zVVpGTg{F8Hyl;Aw^T#>Yc!cMf3!?M;OiKo5iQH$uz%Y;ctRtH($h)9{D5k_yv?2K> zBhV549dnd1p2s))585THIzVU`y3n#x9($JWm!MPhR9ZQ#IP7LErp?5g|09`9Du!p@ z`C6Uvhi>ezwD;uqLYmu^@x9O_u<`5FwxH_&kiUI;urM@W`vfNc z;d`T#lne;zz<3^60Bz{=qWjTre8b2+N1S=jgny6mJHe`K?CRSUzg|<)&;7{Evj0PN zanEr&2Q0p3VpZ-nfQgQG`0fpUWG)8(+x!oll=nrh!XYMa+KSwNoO4oimEqX*T1kYN3Iq+{eWR{x) z4x2MW=YT!NXXby}#5Z<*r@Q`wjnaX?4kT&D^NKlf!Qbct9_Kl10re%W*c<-h0cRYO0$vvRMm*pw@MgC(Oa#mpN=iGN8HTH`~r`H8$3vwQRi|AxwYH{9`+x5YQS4Re$Emapj|7Z^wOpf4Tf&Mjr){m}L+AG!2zr@!+Twf)=7 zeK5W5&jbHf{U__Q=L{ZGA-_fQyPWu|4KPx8N^k%(+KqhXH(X5KD-8%8=-x2AFZik~ z@G%eZ_4NQ@lLg3s=6URu>i1hh1I*2k=eCxU%V$rM^Z)2_Xb1fGR=?Ze+!CB`$IlgnNJuwVEiA3Nu!_G(0t>f{GVC($9hiKh3zNj{=Njf z{9X9q7xo%|t>6NFu2nuJ>^*sto|((G4ha7<2jF}H>u>Nlb|8Ad9KgzYvM?U4auYtQ{ksr_zHX61g?Z?jZ^?us0 zltC77@3gKp3O^h6YVUh8-_qe{#b3%=Sn(H{@O1#TENx=Xfj)Dlo_1xI{ZeM!4*Bhs zWZUT*SAtpV$+u_L{S?R{|0&X@?+t1LwC{g|tOMSF-H~}65V=Gfk)ez&Sg|e#e=GkB z#)h@h19BitGr6xeKu7~h3(|km%x(Ftn;H83*EV?^`f z-c$bS<{slS+W@8m_`Z(yd-?#@Y74;M;BA;o+|~jOcj(>1T29KE>}PG)=NI^&Gx7QE z>l*%?3E(Uz*xTM7?Rb5=lU2+IDu+A%&PoG9=gbEYhkSi9?yk8bi$kmEWsPzHr_Y6Z~9*2g1^cD z>5uAr@#&lDe~|-E3ijwnaL3N!>>2OKzUIT2?_`eFa@w7@fLUVDqRjJt1y%mbga0Yo zY=GMfY%yrYb#eB?bLs%GQJ723e9-lQ-{=K<8F9 z@vpdgqRNq@t{Ty-xX;x8%{dRSwScQ{bTkf@;BQX%g?wEA{y5=t=pG+hKqj-N$Nhcd zWnBrpaeRjZ-*Y!-UhBLI-Q0lrAu@!v#AgA31=Wz!u~_ zm@V(idjwyl0m0t%Ke($d0DEz?1(|PsXH1}Xljh?OM#}$p zIhmghf6~yAnbv;beQX8nDCX3h5#l|x2c54xj}8cVAN+B&&F&h^O9lx3mBVE(ak_gC z*el-fzB$2My~r2{ebOJb`DF~@p^VP$_jHqCmsiM`UF_0i18 ze|hSEd#a-E6qNzZ`%S478IXAn=(pAQhx-5-Yxe5s9}YfL{OLRW7Fqyr(+6M#y_o#3 zg}-3WIu3WS)UpGF=NUs}C~Ng#&$}68#+$lL1}NszHcgXs@>69bPTk1&T(*F&3l5a_ z3cX?nz~6>9vfk(cz0aBf@{N95-x(8lpZnxkhjiyIvtTcC{wv2O%LdQ;`1~ioc>*|f zUGscyyUzfvBmVkWA9pWANxy0DMsD?~Oe~2GGvjasd04`5@m?LGz{qR1VPhkO$xco%e{(*n?Bb{>y;B$pqH!eHj4n zUoZ5*`mD(ma5apT2Ew@Ve<=3}qZh0!@z;eXnR7q`@OU;FuysN1LP6JqKfdaHp#%7y zcdO0|`^kJCSwx?)VbtcEl#TD*xXXH9*`PT)&w21mdd{!w&Clk~`+JGM(%GmDY6q0` zo%%*N7s#?N9O^Dx7hL|b8(%On`ZqbqI6wobxQqwqUb4!6lL6unUsg>6*aY0gip8kB9qbQD*wfv$%a39N&`YG%Re33f`U7Au;qOxSCsa^ zTj)TY^z-%Y?moG0L)~{hz79 zIh8{Wgt81>z;EO+*4z(myqUt>#zcHDpbXzUGUv1TUt0f;&<+s3hxfUQ;Hlp_?5Uf1 zCi76^f5RVq%?{MG5PQX6!n6}z@b+#uhv5E*oH9VWBzU=c=3}5)i?w|eP4B{P1gS?Zl^buPK*}@(+a)a?>jB<@*_i?)tvJQLH?2Y{1N6=#I&H2su4LtMr z0sq#$uUC3I`I_NPiU!R3iLOug7@vJ_Q2Qsgz~$0c&R}do9?CeN^GyyS{~3GbS@DVA z{uQ^M$e!Y@pQ{<>tjXH<+!>y=VIK1;o->>kUvM?Np@9%%`_{~-0eIe?)n~$I*^6VJ zkaa#}7ZYIAl&lr@79EkFy@y`p!T4QjgP;{1=9yc7Zx`;!MG~Ef|>EG;poRn zGiP|GXubBRO|QGnmjX@#`vL#91E#9{xv2X!rN#Ycemk!<0Vl_t9H<=W z?DnTb7r>*;3DJv61B|nbsnS3gR{SN+_iK$ayc=Q(wuYtQVCCUU4SVHNn1UDSJn!Xe zSmHcqVV<$DJ|pi&zgU@6Tcr=|D_{@yp6d8MKYI__5WX6pY&vGu+X~_7SJZ8;=i_eS z{eVAJH6Q5cu+8A<=NAu{xjp3n9P*YS+d197XfZ{E>AcY&W5aD~H2g(>GX4h#v#MJVwjAA8uD*wed`ttRG;f`<58|Ieg`-G!% z#`3WZY%hUzFj=?B)7FDNIM=nOXyBY($1Z*BO2)d)to!!P-sfTeZ$I(BRaw&eMmHxM zwqTvi521m~cSacY=0gLF3v|F44c3C-9c(4WAHGtZ3*U#luW}-!324V(Xb3?0{FY#nHTxvx0%0doW9M#uuj z*<`+rtMV+^3oVeQczM3zf^Yjg8kRCv-ms@GqY*#N$}9F#kIHsvCJet8;&1igH}FrLm%+F;hY~shUyx5$on?dV4<`SVsF^sr^`yD>{;S9(&Slaku>Igd>1ftv(U2Gx6JMHxAUBAka-km?K;fZ_)G}bzUzC# z-TZpMpQ>A5w=5pCKPGnG8^14-y~#KA+rb`nr2&xxoF8HQ1}~7aP+xXq%bi|^xsNfp zp&v+7Ts)jr7I>Ja@YR z!}B~HrrrKR2vzK?dtcxCbsobz>emzgyr$(KIWIJLWqiUp$0o{$FM2b^S-`s313FGZ z1B@N~!`=(`i?H?v53=UMn1eZXU=7S9-!KLb@G%-l$qGr=aEK@Qim9X0eZg|Kd!F?Ed&)NBIZzNy*#nzK^yfVk{FnQfe?)&W)@pCr3y#IM0 zkm?bCs&77VEpi~AVr7_#ue1>Qst*K9$|?_g&!nESH1W;uyD z#LnNz`c8+ro1S#oSH!#C@n-#Ce*p037460@j|UykihnbijJF@N?CAuyuk)SeJL9omyB7bL89Blx51 z!Cd$p-OfG`a){q{#m21^erHb*-0Nc7hy9lO6`9}fN{F4&$iz z1)qI-&S3F7R-E79TNBQfL2s8!{a_B=5qI~Z?IrHImm_C5CMBDVTKb2RRzG(c149_$jP_d zCf}^?RQ~OuvLN>vf_%o^bVO7(W0xZ<(m8OaZl1-~;MwT&`Mf)G8PW6ObpO6|_@a-F zp1pB~*m-K-bzSk;zU}4N;MT=&ApB`!=Q(%BTa8|#^xoyRH_mH1dfB&&;N2_7fm}QUFpN-E; zGW|6m{xs?Mr4PqWn6g^we)bP`lpQr~{Ve&d$-n4*<3a~=pT$1d201aQ3x0cBmihcH z;rTr=nb$QLwd}XY&)qOycwYP5`Nq{nJsxIo{)~use zJ`-;}{-#9N?tOKPF1i1mW7|(&zrJkf!v9S$-+~S}L(F+&<_z^_C*(srYNLR+vtMPe zzDU+^Dz01kn~pO!F23g3uj%)g!O`7gEk~|Mbh*7A*6?lM_Qr37_**xQS-2@K`yVNr z_|nh)vc(Z|?w#6l?8p}Lmp$hlp}t_P(YcIz1D&Gt0xie- zbgZYy7xpcwt2=cvZycAD`_Pk#zSH)U4PX5C))Uu!;jnp|=AOUtjbp9N_-!VwEjoGC zl>R}4zdwG*FWDTI z-={7LI-go&oEPj)mYi_U=Z-vO-AiNJ%)WnV>FAaBww_S+Ex8lx59K45eONYl?(Wk5 zGm@q9+bE@dL}vGy>>P2ySI*ZY%ZAL~)nxSY4_Z#R`FE`+-2BzjaW~)DapC4Ar>=Wx zSeN^^cDU=qWQpIF;P8`U?S(Gow>BF$uh(dF7&%Ds_q%fJ!Uy9=&e~X<=sC8Aj<7O+ z{^&1>>B(gIkQcw%e$<-#&+C87<^fkO*)Z{(NsDKlcm2Y-=i+WyGPC=#yThwKP^r8&*TaxdQ2>8H+NI<2`isWw4J*te*B8ZYsj2j&o}D) zPZ<8`#`^3#UWpxf^NX>wmfRn^YW~_pk7aiyE}FNl=(O<*iq04}ujq8#ghfS{%wJ#B zeaVJIuLW!4CoFj&*5#I$V`r^<>63$Xy1_XF@K4w6LRvTi1^f?fQYheGz#keY{2iJj z;P^lL9r1_e$Q&BIem7YxX8_An=KxI~6#SAyWK7Cs{jvf6_5{Hy|FzqKpwy4UeqMo( ziMOaOu$6eCI!-hQQt@3bUTF#XxEwjM_%@fHdgE3XPgUrmsS2gB?r)W=Agn$JDqZ{o z%MV+)&Enw;wpu)VL6ya0?syA!WTy4VehD=GZm(q6Asz7>iV@o(fHQt zd~IM=bzB=5jaO%DgT3ZzgQIb;x!Qqf+-tt(*N97pqH(W#+QDdio8LY`q()o@AR6E5 zmzVq+aT$lKMy>%`U4Oxp9cSJe)%-{QToan zPeZR!`i;_mG#=%jXuJl%@VnRkwEViYx_}Hv4T6^L)?f&YdmU7P=5?Sm<-K?%ajyd! z_Zqy4e6N8Tt>y@AuGb)Kp4T94j`zaO?)lUUD_uPG!c{JAFAS?sy&$YUB_UG^CG1h> z@bP3=p;Z_1aO&}}g4E+l_ds=VeWO=g3;5agqDJ7KDAaM8xGHh6;Ar_@{w~x1YyS7H z{I0;ea#neNySI16<-44Od{dQ>yHOKzCsrbO`gaNWE+-LuUf%Z~;=V8L2jadd?hE25 z|Lp&`vQPdxA$N$m@^9~y_U+mKZM44E9FcmDl?6due#j>wei4qaOxEMFsc~S}r493X z>~Xw#n?$@-$MRU~j;(^`Z4L{{n{|;Me@eQ`-L_{r7e7PNPL{mmq|D*5mK|EhTeho+ zH*HxIwC-4cV^UB3kC#}g*~oPODl6BqXVW6@>9|6bg4?2eMFChWw??-Bp2Skff#e-fujnPX1< zN}@%Z=VUzAN*&jW>nU}f9BbaTos2E(TKk74_EY~8rjqk`%1)el?ZexHu}qjB76%=c&NBy8!Lw9RE?`tR6p2v_I-K z*|1(Ebq@>@MW+irw2c>+?)&=AKK5Tgh{f6*)+8t?I~I%*#U)jV6VClgyvNwT$M|m3 z`Z;v*9{El7-E!XpZja~O9S}9sT)Cl(-55z7F}XWC-gE4SiLPgVC6OpvBk$@h?>r&a zq8;b1_nsE^q5neb38BX}G6H7^HdCeFUzD?pAEz)KvWR}V{&M%XIew=yo3nEGZd`WD zvwM_Y|jd69*q~%fZrmaMc*70vI`X6t1L}^gk8x4aj)^@yWE|^$O#>v@Owt1mFPIgJ7Y4QMWwoy zzjnWqu;qPsPq6u#C>nfT?BTI2z}*lSnkN?-g)0~ zZ|LJPK2L57$K|)~o-FP`zF~umrPRxKDqVTI%{g>w-{)y}VlR^*t<`Xhk z`N5+D_)%~uzGB2zL>ZhGbUdy+OYgZS!ObZ%6pHoHZ`zv|UEKennB%*h)if`-(|3Nu zg5NTL-tArz?jV5Axg&1VcdLIZz{UVRw{X<=WrF>_i0|`z6V%ObUGm#^X~rNfbWwI; z?@iLJ_VLOgneD_Z{V$#QAhZ)N{?tVyVuR-G5nA(fdf0d5lHK#oJuTeF!WhuLjbC@a zb9m?1+&CZ;jHjc0t`QIMrmXeb9~0<+-&x}K7r7sX-+{tzsOAOQnoJCuyQBQ1^F~S^ z%33XYEWM4GrT@X8mCVr(mpe_qr@W2*3ZL;F#vED1eI(F3c-tL9Pl?>7@9V#q4ESv< z?hHeQbDunIuhCae7Lsm#rW~{b#ym$q`7HtcP4gd0JwJ9d1z+&4;lc~(oa!;yjh>L- zcK>D*(FZ}-OVZ224E--!?0#>i=+Yreu)U?<)v_KrkF4X~4enU6yEeFIg?lzsMhjoS z8{DUY<1QV3=Yf0l!4w&nZX7gE@)tfMzYTha`@Jn_3?Act7Je_3-~V8IxKo%mP!Hog zP-wun7p2W{X?v3^hAo7Sn?3Zs+OjZB|C{!ouC!8K(d4jr|5?8Z^=&ow*fp!)are~I zccXb|fP0D-Je>^A@8j+<;*JV)mBZz?WFK%g0c{6se+(=R-C#p7#{32n_LKe=mW25| z4DKG}o@wL&Jf**JFJr)cNsPHq12P_Rr~FS^w`_i-j6rQ4NYnqKIS=bN6<;}OR?Lm3 z!=8F+7g*3&9C!M2r;^gX@V(v91wY!|N!-!F9ZKBy$K821y_tRt&=c@Azb`&W_=`G5 zt#X+2J7D}a%(z=zKkc{IYz*+>4U+}cbg&y5XnythsnY+T)qP*DNduAoS6pz7j!{RE z8HxV0z8#LG!yZ1MP4K1Cz4TqjLHcdH&sbpVLFfGD3w`Il5xw6`!q5P}a{|vk@B^V^ z=`%Dyf8b^Av@u(k_YsDl-~}ANmCJ9)DgHu3$N~CpG{EoS)uMrge8cvY8A5{=CHIwv7hbkx}}fcZn{qKmo)4hbBqDJ8vT7m?)Ku_@1-wz zdQtifKO^7JXN3izJ#^ZNJ4SVai`Pz5JLEIbvbat!VbE)4c2^~NW z&;aWq=tXFNcGI5)TSDv>yZMuiJGzGX;)18#oCsZloJ{o{8W3l)aM?@F4tM=m*^LaB zdwW;Xx5V<7w2y>+`={x^nMxb7;1(|$IQKg#+NU1I6S~EogVwpb+4}AK#{Zsz`>?Y(S^n#<`$Uu{Wj0yTu ze>*%?m&&iQ5lg-z8%VL>nzv&eMlNuC;Njn7$XuoU7ClEF7azRf<4~7~Eg^Uy^XCgb z=z4y~Ajp%2kV}MUtn=d*VU>z!1JYwkwM~;}&8Q9y;*jTIoCBqgeUC8%S{c7lZ>OiLOyNA#| z^BLuTj|QyY_(lVSxo7Qe!K2%dnzE2_Ko-o}?0(Blc|OEl@t1eP_pBQj-Z};$-7Efr zweo=Y)_>!HB_dzI%-QTZKTHf?l590`O?Ud=YGHUMkB5KpsO4%S$+u)nYViIL!H;_2 zIr?OGiurVp?PLAcdj}=XSdoS-0={I(Q#jj7BNtW9Sz-tauXZA*W6ueuO_ zrTY+nlL6X)p#$^)I)!;C+C_V|G~&AO)DBSZ&RxOJg>Yj zb_cv~I$!Tu6FHz`AbvXht^aTQ)7i;A$2%JU?2!i-_7m6N@jYW~d=I}2UE=xx_Nl%z z4$?RJ=kq`GZ#;lJCGVbZM&*gh@zSw3ucQBo$s23;f5Hakf4Q&kGa(kcbo`L}@RQ-L zV<5Ee>p#E$gpL0h1C@os2hg&~LTLZY?ha>_RUz#&-e8Z82V44TbZ>N!uK(aq-yitC zdk(r$TPQ_WDg&F1U;RA&5BjhLC4WBtH{PrLFB-Doi#7TW?{ilk{Z`p0c$@soI0i!Z z$Vz`47>mKuPh{UYS37y=)=fj~Jz7i669j)~z{bGnA&UP)(qH<|I2b)(H&ye%E@WVn z32WZdes_1jcU+_Y*U6o>@+b2~>A&LP@Mlen{)1ym_9OeCf1IS7Q#m00u0aD5=blN{ zMzC?t>zxeFmHx|GO^W7?_VKIUbaYOi(Rteca2$*mlmQf(E$AyNB@ognLk*3h{$a0FYaf*YSJ$H zR5oPZ=d}M9ji}xKYu#_%6kRjv3wkGDPwu3d;A9qaS7<$5|LM1m0sR%6=`*x$cNCLP z-_e`Y!Fm8P1zrblF>|K4EAddy_uU7qPpW z4PW?<_P=XoZT`PvoTkZ|!E50iJlw$|cAM0J{?p&`Lk37+l+9L_vH23Z~a{+=|6V`$nSJ$dlbt*JNf7HzVU$3dnztt z0`}mE?K*u^#Lg4^#V%1>;L>4EFY-IF(1qE$M)STLNb!L5mHt})!5x`_4GebGcVcia zbFyO8a`upek|E)5jd=3ExUajvv#js5>DB#*cEq8tkzMpp*Lwt0(*cZw(S54_QqE`s zx@Wxyy04Z;(#MeQv4K=CikwmVSo}){xpi*V*XW=1*B=AMC8Y~J8L&mhdd+*zzT~b) z+AsG@akodSiK|D@|MJn!*7N0GS%1g>6@906qpUpV?yIDZ$`MX~b62$TvG4&rz&wa? zP#GY6j&F3Y{g-h74}KeJ?CMDW1!Hh#ZAa&cqr(0RzhN8lUid|2q0qeP0`sl^$Ufx- zXhFt-->1N?hL2MHAE$TO9JX*X=WT+vv+k|M|4oN4)Hy->;q%(aKK5Ti+L1d`q#f8R z%)!AKIRH)LQZx|uUB^MnP!2i3z6UnR{3mPDz1fx6DBQ`*{-RU->`fCihuimdVf!+6;Ici|1d7WC8Ja?6kl`0XTtuwyK7C4 z&<5x|+J9&v#q%;2$o^;k;BdKZYqhKgZ*$D=R(#sYZT5DsGmrtPH6x*e%Hd)Mf6?s+ z(qA8Y?Z2d{ohbds_6K`pAN*R)`+5&`#o)Ql_B(HY!=CflLgQ$>tw83vtH=0X_<}7ng(ljlx3dCT=H)bRca3 z83YBfAh4Ka6ok?O4}3sb;uF#3dk-g2c@||UDr( zzVDp9_t|@&efHkxoR3E17r)gm1Jb3~L5!)4W%R$d1;N?tf=8quu9d7acLP6snb~t2 z#ytG=Rh!-X2Kn%I^3HdiZ3N$E(}3R%ce^>19}g+5{}bGa8KZmQBYdp**xb0so;YpV zhxbn>f91*kpnU9_8yxRe8 za*gkrv%SF;8^`!w_%jCJ->1LO7ykT>N7Z-qBf5|Nw@WgB-xxVY7ZNM9K2Pw+-n;WR zu5I4ON0#09HipmFetj3*YPg+U-p>2n=+OV%N>6d;U+0xB9~rVQ-FY=`-!WhiE$v)a z=xsP>=|cDc{F!^>r}t->4wXMKRDz6^)#s3l+a+kJ4e}ch5Fu)7dBQ(e_%IbCt|bH@3yD2kL%%zPJADBD@DMaNUJ;B=_sQn1Y0ICn?pub_F{d1e`$6!RycnNoPoWVZuwRwP%28uZ5Q!HvUGh z@k@*b+ROZ=1MNY{0c|kG;J1b6>3{17^&c_I)wemF#d&{RjQ@;vJcqsmZ{O#X{>r{j z9q3Tz-khMD}kvHs<19@NL)`GTfRTo}mxD11pJ3 zBJZFpp(*DwVe1kD96lq#JJCh%EY)HT}t0Xm*oIY^OV3b8|Or9OlE!53&D{E86h$nXEoX_vj4SrlRUC3xO{X&wq5& z5$t1jg!t2h&NT_O$EL|vpZVK{Dpvk$>kszurav-$BN>4on1|p)gcjJ2&|`w;C?$0+ zMn{~kWTiV3l>MK12At8U@R-#h{gSEI^*Q%*r`7-bLo2Q}`zEJ!Rcheo+dCiU0KBu$ zQQ+^Z(RtV=3&($HXHj9rnrq_;wd^}eUm*|3MLR!$2mR;i!I%LZvM=MK1Ydhr-`jC^ zb+VVK?!}Xr?USrue%k#nn?Iu{drs>CJe=}<;7|31L%xR_<`>(wAGX>LE?T}13 z9x!~2AH0rerw4dh--0iA9)K%&^Q^-edO|NfgFRbN*>K;n>u>plp*OfP?lEU`*W>%4 zXz)Jqr~3YN*M#{K77K=M#(M+Kzv|QZ6>D!yPhR$B;zu-FyaR7Q6E82m)IHm`*5Ql( z5FNDML%ypOZxqbhaNUPjZ$HUU`qbDkue2`iyL$VP@q0&ld;s|SD!W%V#;GAQGINYi zUiMJWJ`1)@D=1%cOS)vmFEtO{kDj)%lm2)70gn3a_yKx>ulW02*{?4b%xt)^&yve0 z5Bl0uX2;T2JaTT_W6@=qc6|FsRepf@`}U<1<9Nh@^Nq6Ie@Y*}>GqHJSa8WW?O9vj zYu1HV_no==f!@=WKi<3S{KxvvTytNq*&DvpWB#@kJr`Ye-bWk1al+J>v@SR6lNvKW z?p=HN2ZOh-_aA`2uex~c^`Xu`OGRgw9kqPM!)K+s>&$@TR(COf@r@mA`47ZD8>Hj5 z+!G$VdVAEZdMjtUDe3Hq_9A z#r)O-R6)i2vroi{`qA<8L|dHkmmCRCKdyZn9{zizSZ$;=5s~~h zQE-p;-`?96=C`%H$9~Dtz3{EJFnI7yJ^!qpe>#%CHqPAPgT>$UHV?wyD&I)cy8*75Ab|vPw%6Im)D}Hb*Uhy09Ze!i(F_7 zcN|0;(y4eGm%ejI6S?x!b)BQ@#2_cXS2(e@>or7r=#ZcH0e^V%Sz5~&4p18-q9|Gw z^(($J{?s`yL}yLj6OF9g8;`BoubiD0F1~Y5|9dU^!{l@6#)>Z?zgAbVb z&RQt){4ah&ar52o9AwTyCU1)T!8La{Uo3G)aPe!y93Cz7C2eRebFJDurm*gYgX3@r z_|sQE$NL5GfD@KR6KnsLStARq&=9!iZgV+6cgW9$Zxi1aKGHjX<6?Ql^Z0((>&`z$ z{u6mjtfxXAz=OIhhVIrptF8Y__b;wj+daEo_d?e=90dNHYrY2$rs9F8REJZ}|GUxM z(MkLuz6XabkGgmhzDeR;zA276xXy+=lqmun9O$(n~9da-T_n6l$Wz|`sbJJB1M zeU6DQ$+zG;{YGvku}sV7kWZ7g)TZLZf6VFKe~fU5dR_9!dvWLl{+!~I?Kvs30m?V} zQL_F+Ik&18*opVCru0$K`z$p4}&)gZu>1*JLZbq{IZLelXJkD z6ZT;6IFyT*lz*8TJO2k-?^!Gy-uvkUe)(~Y-{O&#Uon_jBWbYLC;7sEb$);1K={9j z+Y%=ue#v+G#lzdN1b+D6-{(89g9q>7Qzst_edT1VIaHZ5qT*@+AEjQ9{gnOb0Ka@w z27CInp=W9Tig&CI^c?k3FSG_`=uTXhoDY1`%eK3<46H#Ur_IBcT>?9BZhPG6DD)KX z6aT&HdDnO3t`Il1+z^e2j3I(Qp0@gLg{Kb2HVJg*T00IM;16#6xugBWCHH1%Z@NMH zj@$s^aKH`xJKlCNc;e^8%exlhXe<5gOGpLMZk~LiyouA@V<8V>1Xgpo{&42XJzX=@}{ra z0{rpnTb%DH8-Cp%B7Gl~t$xYiXN>i<_k5Ebcjmj#(L#3vH?awyqr_Sx56f2s3%T5k zyT~Oad`Uhg@^jg@#WxB4EoU7)AU@)Mt`D%A+R_ybKfGMvgM)n%`16KMH{Qvgu;6pa z`b<|p?Z5}b5smhOxg!pY0qCEh;(g%vYY~BuaTb})@Pg!e3yFMUZM2-n@Gx`U7JnZnjmvMN7?;d`mzi{B*4U!qw+F_eZj?tw> z)m!HRf5GgFVy)|rG=@gv6UY10*M8Ntv%V=PmE2;Z5XZ!(@$|Piulges+tqjCo7g${ zzR6Xh570>ym%5xOZyR_V7;k;f8}J+K3H?3%^a1}{dY$JXlY#s>jaLG{craEBI*K0J z8wC@SH6G>bb|vsP8}GAzp4?{oAUkit)1MNXjS^YjB%UB&A3TPZyZ(UY9&W}~@^{cR z1~;&0!4J(n{OBuiBzF(FuMkaDPtL5(_Z$3UYvbsVx1#8t-$%iaH8v)sDlYgz(pIy{ z4Yn^b>UF-?J;;E^!DLv^fCm>g@vs?gJr1&m+yXy+z?wY9C(rYY5%9k60}ns6#~xu! zApgU`Z)=V6=Qe)F;Mc@6{m@^d@ZL9~U|6leAC;~Bp{<1~7ypy@i(DG~9q8}j_dLWi z;6q*j@SQ$Z`c$&a+|275^dRGx9}f%%WLFn>_f}+45L5D z*(3h|{`c^k-WR;!0sQa`C9o5(XP!b{8hQ`Dfq!&ftmW-tLor7H{tVoLKhp=uurB(5 zxdAo@{0}VS>}*obEPN)Rf0Taottj02ZWMfWtmz-cSifm;vvCWX%$@;vvm4MqiS9gr zcM`q<7jPsu9b3a_FS$i_(S68+jm;Hqj|*^sU%KKU#vI^Br?IyM@Q)QtW9GLhSLjZI z|8wKx(EII%RmjDp!FN*a6$U@gqW{Pdhqt}{F&!#AGCY*k59Eht_B;` zs~sN5qVW&B5A75BQ<@C?-06P$fVmB8yj&ik!LOX*&A=Lstjfd((j#UV{k2BA(#0{= zSL7_9@1Ut)4+8w}=?CG*+6mfQF21qxUi^;SGH)YiXiSY87r=orjy*lFsWNzY8HRrn z_`!#KcXpUUKx9Bn8AG^?Uj-`8c0edj; z471m=;g2RQGZ{!vTCzOJ-7|hOT&R=0Fvc<9r+nlsmut+J#Jn|ooMo&cr`Q}Nz)V!6{-8~wYN zuR2EgcE59aRQ(42*jwHX0(R^n;Ad=s?$~bR?;*43P4GUEsNviOyT z>lv5ZWoz`h&1_%~;6Qm01|#1)!k?S$QPiVyT~FoZzM70>E^mbVL-+`|X@`<_7?Yqs zYg535F&0{9>sa~$zJrhOSD}x{TgN_~yxi^02(G}+dJLy;;2mpQbHbkvy8f90K<=~j zN=N%n;OCb7UWQ+)bj5VblOcbMK7bdILB@2(WY!zf7sxRFLQ2K}KOT3MM+zSF3;6qs zcgWQTH}nrUp`U0|IY#8B6wbY90o`(qY3KAN&@yX7#E7fWA~?*oQ&jIw$#zT0)OUN|y9{LhKglF36Zn@OT z<9pO#Kj!03U)qnXKV87j6S?JU4Tqw|R}{sQmObxq;Cy(ajgvumpLqtdiR}z5&>1}J z5}bxp@|*wd&@-&X;GOONDVdSpLZ)Tgh~A7-9`@%>yY@-N0ns;CxAQzV{O2I>^GIIB zTEkoWvUJz_qkp$HIKv#d0uSbj*!hez=yzlQ9DIH-JWYPImHH0s*ksJh(U0gLry~`CeNU&}5y|KwX=l$%^UtNhpQ zi!M7f>^yt~@bfsIJgvh^5390%J>lZ}3yP}NS86@h4&@R4#l{O~uQ)oBKWLZWb@JK9 zT7Y=+(l@1BzEw2$qViL(f68LN>CrV&{&eN79?9n@;HUay&i`_#wZy65xHB?zDsH%` zSC4s(qw{B6P%oW*Ls8kvU4ZqKi5SSg+!dBUb!dt|^Ict)7kex&^y zZqC$|`QM?w93}j|+P7uY` z%91#JUbXOl&delc&{FKRSLK zFEM96@Or#8l>Ml@s=tQ8;%lO4`E^m=OK%^NzYG4SHH^p)Sa_B4wiKU!Qgu*Q$NJrG z_~@W@rjI>7`~R_iaE`#4QY_QbIl1$>^u0{?hy&sSu=z4*#;J7nyWBeP<6%1RZsu2d z$aw#LzRu`4H~Pp)Uk=Y0`~7f4Y2VRbqBh z`t%`TP}IlQld0Rj9Hjm9#M$%l(X&($JG3<#jGkfxf~hh_0!k6i|;cxkoRDF z_wj6W@|kQ}VQXCqhLnVHQLp#H&_(;*{?GME^r4T>k%{a{zc||T=*vNOW?O)&N{W8*mMi;h9&1WrA|6yy#NTiw{_sP z4(-F^^h-48+{Ko|1kT`#9Zk#!`x#pw{}l7`?2CK&CMfYwVXv0fvCn)f=eeX$9kPtN z^R_)~ZSXxK6Z#qrb+J0-s-3Moq_?a;X}kUwH`kzT`~l1n!9TlgzI&Qb0te6GCp8#0 zv_+*W|DJo&=|gB%aeoH`_#>Oira-~6)X&AMEFG*hS6<9t^FYWAQtN!vT$4ds(C{)ora)R@0&+UjQWKj06- z-@sgp_4>9qm25ZinX+-lA4`mh`1_Ktx_tzg%K#(r%xc76-ON6fx#Mc)(YEZFIm}Sdy$(j zcJo8#FwDWOe%|@F@X>LRUj|L+f7&HpL|-v)E3Ipyjoiu$*<(A1 zR@{&dR^4X!N9F4tw)ctg0yq5*{**TN)^}owrWrd3^S8aBEPhT@0z(aheZDJpc z4-=Pa{qJ1)e3y#k`b@bX*1m_v|H>)5FXKl6R(x#cSNAkf+vq{Y8_Nf)ceqce6)#pf zxkMiDwSae~ec?~M8vp6&YV+M|Z>ig@{TZ9mVfCd>{w6H0XTC4rKvS?u{*4`Px5u}j z1-b}$@OdEX@Emy%=%q0=ju-J!dfg2D!JmG=>$h$X9qQKHJg;n3E$zn(u1LrAH=FKN z9?~hAx9>OK4`(J3lcGKP09p{2L588T*&X6J#)2nWT|Nc!FtpsoIPtqe1LzJ6_+!c0 zlAkl0Q2UPdRyu+9b2dH@M|bQAgHH}icyQ6<=D!+I*&N_kN9S0qLhX~I%9x5S$5+aE zKfq>mdDHowhgUj(FtHo@3EoGKp?`D_FAZ1 zKaA${CM+OFq<#E7Z@!a*3AJ|^4Mxt|Z*3uq@B(8he9r}3-1B;YcDVQ-{6N3ZcU;KG zxwFmZtNl4{qU~VlOzZQEU9MZ{G8dQ zCVZdJ;%Pm5=WA+vJ$f4d5c>+fqOOtXiT7&hHKXeH)MSKAM#NJ}RLt?U=eS)0vj^LNg^AoM%G=9%d)__~v z{OP29Zs(M)Fc|tSx}>{uFK@%2W^kN4r&TfcCdpBge4^yykc-wL{%RJkP5PfoJtKOv z50TaZ-#B3P*9xh#TSX^6tS;I&7|8h?Hq&TTICI_E(wRFH^Vny39IU@)y)m(DF21Wx zXpVfRr=0&#;p~l{r=IZKIkE6=r#UzM=OFF#hYnb&*q7eC^kSB`G17){2$_4hO7A=>xP<&K*lhhLbSfy3YL zstnJb8s|;SipO>JpljdFfjul8%Vh2xKl)CXchQ4!yzt6&PmzZzYrmUscRla+^YO^}4fJ=97KJ6Q1^Ff#<*yiy>jAe6*B;sJ z{@SgfqqEEZpVGfa9n?jg=BB{?v#(eUx(|K|+!Dv@%J?bFBGirS&tqEqr998NGYub77F2brKGpzBZV!xW&e! z_4l?~{uJkwtiG+)#>a`ZtdTw zUH81vD!YMsm*v^Tqh>Fqj&T0vhOf>OD^^@}ui3df-)*s+Ip&9c9!Bhq*vO4PZDFpg z`Sae~G1bKe2lbS!Xf*il{(Y0}g+;yyIbnTP{A9=>k= zgdJ};8Q+i(Ol|_>7w56?{)2m)ct*VWT2bA0P0Q8xtVZL3sAT1M)!}>+_x_g zd*HNa>}v_Wt?v)K*@SJbcbn7G*RaMSh~{jycf--uR;H%bjnV(#FkQazs@9<4UYD!B z@Jnv&kR0gUQTFb6^XwhrYkD*uzsP=ftNl{X)c8ep(TK{Y;t?}n;Zp9?lc|ZdE4!`u zsyw8c-%fOS6S5zjzS+4y4F9_=jH(|AyJYycbMZ7RIx;#L-VA pck&M~PRgPP_KB1Cs^&fNAnXUg?#(_uTW`_xpK2d!5kf1{3AF4CsO&h}`5!f|&@y zfd4WOS!wvk)Z>U9{L|Te(i~3&>DrtA%RqMT>4zYv%p43&yiD|`YFWFvXjs~~S=nm% zy12uq5oElMue+tSldYGEmF)rt*9odcR}xfJ9Bd}28sqw?zB}L6-eHoThwUss14C;+ zCu_<^RY$wacwa35;9~1#sp9M6?CPoIJ3+Mxt`_{Cep^#jrRgJHP7_qQ^cSj_=ucPS zyLs5E;2OBPHOgeGkdy`!XRSk&~jbk}5Rpql@7 zla2L{d)&P}oST+rW36fHZ0lm{>g5UdG5_^GK&ig|k6Zus>s(y^^-fPO;Ud_sovdTT3rD4?{OMXYFQko&J6GDtx}m zC}Rg#8#f=%(c?8+e)=cP`~+kxu=KLk2AamzQ6Om2kV$G`EG-rrUTUG}FF=|<*#d?> z@Q;n9m*qd8uuwzb44kEfaejsJkI%M*<7VSvw^%GFKR@{k3>#}LJ2wv(OD}B)7s~~< zn(nR(#%un3^OsLH5w6x`S5GfXS8LnJ0&RFh!@MTm^wwUZPeM;R=AA~M%mfm z%$JSQe#)?U(V;C*> zFk3h|Yg;=KXW`Z)@q;aY|Iq$L7yLamZEH8zMYbNlBkw?}T7t1^>*1+w=i%m}V(ISg z>|kw4%TCQjt~TGSy&r~(ikF+pFPg9!<-frAKS-c9wjK_@BUgS|O7MKn9nI<;-X1#A!SAhdo#_;=$`Tp`-x z_J6S9H|RF)wI7=o_si}72HovXO~~eN`4=!hzwJBbe?jms*2?%FLQ0G8=IrL7?`C7G z4d(B^z5NT!pO?Q|zg)22X(QG17vQvRrq7aRx!|Age!l>Q6Usz6Y!)dXF+N+s7Vrs_ zOQHfkpC=UY2{xZ>%fiw|aSUfMg(A3%LlJx?N?}4KkHR?|7A55H*lh!V?`D!LE+6BG zP^OUL@<^eO;tSZgfGfh8M4JGZED^~hMIw=q6!CBlpA>R%l*K}M@Ge_G3fcyMGX)r5 z0NVyk@I(|3W#dc{hs7r;l;jd(tbosB;%th?MTNMC%@s1a6vY$?*(?@CU@R`H?G=as zb!?I;;$s-jrpEO(bF*91xEQSWFHOF!;w@90gWlp*V?>d_mi%fKe;~U&t45fSE86OUM;*Nfw(V znM@7=E0>L;@Bm#DqXcY?2G8z-!>uPOd+2~lf4j}2^Pj@ z5*&em;E1?Fg2RKYw7CMDgAo)9Wpe~1%Aqj0o68fjL~H{7OG~A;0q}tbP(lC#lq2Lb zNgy5&Fce7&aVAAlZBrsJ5t9ofM6o#p!2-YC2-rN}3KAD``CM4xPqy)gAA{KBH51jATg9q9iHkV8AF+#xSQCy}FhykZKv}9#*cqk?miUEK}V!#O` zCO~n4kSE}?NJ_vVL_7jcfz$Rea&Q(G#o25Spddkj2!#~DU~!lvAcDtfTOI)AaF|R1 z2j{Xy6prG!5M$zeHbxOZ1i;d5Z$ZQnF)`4rERKle3Q&r~MFh&?18HGwl+`u>3WOif zAe%r*5tGFcus}wNSfC-A7(>*ya-|3kM?`T@l*vO$A=m^Ii!TCN5}+a`t)Sc70!8ph zT6}|4C)gq$7o;Lv1RDW4#bdIBZPNk86X9GYE+n}klH%j2h(ilV5Qex2IEn*-&^8E( z5(}6o!FVXcGVzB|#XV0s+S4F+~KEE5zYEF|LTkgkx!0W~8+Sp=Kr$hMCWj43t~r@%JDL>Q0avj7bsj6lkPk%NjM z6L}OcvIus;1%1o|8BKpNQ^W&O;_?X=*t~5Z5$K)}3iXPypIdnOcql_Hmha65M={-x48lV2p)>X0sEGNL#PbYGXV|&$^+j) zB;@hiJ_Ugg3@i|-96nenTp(l)sAVwlFrZ~7liM~O2r+^uV(}>sDI}NzE*nJ!JT`}i z2|?lVSc0|{i;#ms_5$|71t|b31yY$z42ADzgZIKG+h!&q2x5>YVC2$H4hj-L!~z?S z5(x+{E)qkv3ArSf0>A_@ zaxn~)HM{Lo0Gog(ATWxSN$m?*eTToE5- z!oHZWnl=du#Geoa2Ls$JS}w7L7>CIQssJmMC*pG2R_|b4Gr?D50qTH%SeQrzbiieC zd4!0drE{Ar5TQ66IM57VfOEmo0dt>8@j%&vkpLzz)iwYo3MLW71Sbl zl=g(c;um8DUwvT%wqx1hR+uf5YMVy? z12oHyAlOzcbsJkd>t@iDjg7UsB{&FHb{t?RF)X`(2aS`qHnt#@)$LHWEe)EZZiQLl z>UOr2B^x7bY;fDQ&-6b)+u)R~4aHQ)Z7{25&=ido%Gw%om!JzVs%_Ev@1Vh;C9QDM zQk`HC-&Rf8F`4Q%HddB4wj4I-oc6BTiok6MmNlwQ+Olz2HA$*-tRW#~OIX|3T3Lcq zDTXKU@2j?k?69RZZbRdm>{wjeSlL-wL3&J`ZD-v?d>nNUkv5P#!>nv9nKl?{-8MqJ zy@8-nU@Dvfr=HE_2t**@x!{EHaf~Twvg6xkuVyGh6e3}usOZ25AH=+nVhT_mkHuuM zAkxt`BQ!yQ4};0dM+IO8L0ks3CvCKF*r3lbaM0U!1)8C-c|uAAf0zVDuLYDi&J&14 zY>W>og(of)5K`bzvmv3+5rX0a#U&KL3oxW$Sw!2iyLm0(m-E3H0!#D{@B$JOd^_;# zA>hz-Mr<~dPeJ61$7PD;pfs(8#YVx;q-aMU&;fX%*swTK0J;rqJ~4DbGZat&5Cg-( zEN?y|2;Okmd?6F;ElR{}+q!Ckf|1~w5L_^8aM13s7SL$m?ttGUWPuymwt3ME1#aOH zD4PvoSa9IL;DA61#o?nu7Pzru1TmVSKoE^7fFKU&7ced$szieE4eAc`EDm^XQ$I9A z5wX}{E`a6EMQQAU^C$v#fQT=Ih*+$){huZ%YzPO5NH*uss1B;m*brm|FXT^XmkrS& zU;z$?B6&^R$OgxZ$%P;h0l^+If|X4>!f^;zLynk&fNv8NAw>!xd506glI{Vl;ZG&JRvUNkSMr$m>BWzW+=eUKyu)d{|R0oL zXHd8zU_2HdB4&ReUkEx}1{NI%PD}vo$Pp3{&=cVp3+02!*mhvN3A+S{OCc&iAq)ob z41oZ`)ItFYkv%S$Yhb~N$46k8LVOsa84$~(=>>vIAc-NQ#s?{iQDVwnD98dC4N=`c z!YY+H8{N#WPg}62hc_gXj$456+$jSOdC@GVQD_W!31Ep(0BoN zSO^-M!xBIMoG(V|r3o(r2rdBxHspkxtRMo=7N^B?sNbKKnxB9ms{^@v4E?quK9fzSLitUBW-(mbAAn#p|JWKtXCV9z zpurI3u-cBzwFU_E0c2qa$YcrIj#vLTAfX8Iq6AK{Ar>lz{{K%vfNUXz?;#qBf?wIT zGx?u@ItX;Ze)Ya0C_vwY5*;Z zi4o5H&lN#PT0n#{uftLYd8zUiL z4au~&ZN;B}c#tjw-yY%*O$14+Y)Flw5K`ge!rvfBtOXr`5drm6pxXposP<{wBmJ?W zmVnx=vi}EAdnvmmAiy+usG!B(R2hU8Va&41VNF%gCj09g+WOeSPV@8 zQ?Mf;7Y}(FsGNjMn)oaNN&J7>NA1N?OF%T!l7Ki6N^DSU?O##5k==4d0Eoxofe!;k zh2n%rew^`!|EXXj2tK%*kXdE1 zX$c838)_SPkbi-)NO39@e$Wxo^7x@Bl8)#LA@;%l9n-HRAUJ-AQ~_DD`6B#x%;Wz7 z)ZXK72?%%%in+KPsO^G~{BKY;*hWx&0iNxjo*LL$|KK%Nd$-mSP`edmOF$qYfkjXb z6N9+27^QPR=%@uCx@-sPr@+L5(s?LU7N6HREpP-X8w%S%gU}^3g5R)@S^{b}vReXb z68=y$3}it^%-g*+5CnWmghL36$KgPgiTHpZg90LiP0)Y;i2K33{|7+=viVSi2;vPE z_B$%OB_N<9u-NFrOfDtj|Aso^wpdZSPpt(Y+N^<)E?t)idX4xE8xq2uAXcG1_Gj3K zgHsp_iqxQP_BW27FCd|e4hj^1x>*!tOd-b%=?*cv55Dsn6N3I70|*SW4xu9`S%pwO z$zzGWZ4Ky%B0z?Scu=Oq6`%W=EFOW8bW6iGK%hmqbX0_gLH>g;zNUpJod_i%>I5~w zP+QC5Lhe!sHBcB>{g8JMpVvTVK*J3vvhQ(74jdtrR|*Me27*$1v6+@O^uVkJ3;8FG z+Qn;-+J*iRoC}=`P3}4*PY5nVl2H`mz5-Hw2?<=#L8k_82M;O&AkF>LUxO$(l*p+AC_AU{rSqK|;V}3-mK#V|PI;bLoO+q1>_&9<}1xT3^*mtG{z1FVK7_b5q zK|o6f?N~#X1f-6jDxDyO5Q2u1MDdMLsKKS6x|$Bx{UAsv=!H^W9LglcsMG(hMIem< zrN}@8-(@!K9Ai*ZDnudu$P!;>V=PD~LaF|bOig=LHWV3m6d;h#P=^CKtY#e1)`$p7 z8TbUr;&8-|9z&ss5URi+R{RYRMEsyS9))Zh0ToBTacb<2+8U@MHsr6qD@f?qfYv2Q zL_pgB5Qg}M7Koh=LN>u z*%}*yJaq3N_01xI20TbYgFzxjymwIFHPF)M;l8Z?#j@$c~wx(WeeIM4|QjZ{!RB(^_-!{iJS>QVX7SkdH; zf+0c2Mj?(213ttUMDkr7fnX+JU;y+_H6MSw1shb!LlZmv{T?4_ul0{}DM(&HeJl8~ zbT>2)2dfsCgo18VDEb!PAHnI>bjXTe%7qZB;Gm@dYB`}f8EiPHuc2#fVDbP*e9IPx zjz8!n{aMS_ZXEGDYHNayS`l4>-yz6`lyS%4i0+rBdmO)6Bkc~fK%qegZA}D;I+$p{ zf(Q-Gv~=l^0Eam=(B}lA z!4V*%W41=19kn7lz1k6{MnJD?hnyM#UC!=mcl_nh_{GnM$B;o)uVa>XqPO(xJ9Px!e0pol~7^wjsWD|~>GVIWs!J*qb2)6iz%+Se! z6GA?Rp0GlzBRavx$G9+QfgWB%h#%C1-a8a#?f?yb1JvG>2HnI5Ar-o-y%|Rk8-dbe z7(l{fv3UaV4J}CZbmpdb;^f%AoNrT@sA(ED>wv=A)O5%={{8yI=*4@4>V#iVFs1>b~a41fJs#(BwFZp zzdtb8A>$9(GzhVL_t)B+J?79!P@|_%P)RhC0F6 zHQ;_aO%H+vx*?#2pB~>YX7rdN04at;-SV$CqzJkzAnJy5ej~$9Po2X>BA7$>jYZm< zh@x1K>xT|^XgO#WY$6UHvTZOk1rk~uF*?(~+u0N}hru{Uz*I9J+CGAbK+tT-1%DeA zKj#mE9)u%!kkHlBWcjzZOphM6!hxz~AqI9b&1;a%0_T{7jsbcYj`$K1N`qlooB*u6 zpYjNTC42}&02lMc=YCMj&;Urn?!Ey6%s@946xXs~Qq6Cqp+PT-ASX+ZFg6Xcwscn? zOi}~$6o+nnn0P8SLBc=+s8`2%FiNyp)Y3(9?Qv>={vcThV-mjMsNI?t`apSX(5x^U zuxUl@E{fyAAU-xsI>5fM2n`4ZM?!BNUHVD>29Cg5=olQqXfPPn0b#Xo$fnC;U?MD3 zpg`j(Uwn%V$OrP-P*C$-X1Dj$pnZjau}To;|AuT1G^_$e!X!5erf`WL_2a>C&yHCU zNwQ#6Elk(^h9j_Qd9WU6N*C}zB#BMgJg6IhSQJcOfIWiDrh6gjq915+N9if7;sX+O z5Fi*A0z*ron(Dj34sxFZRxZp&p@qNrHY6V^YlP6g{-Y=k=m-j%L4vcPcu0)?;_osW zEG(EdNsnFoW<%0+)SjLZP>nDY8EWXiC+YwY*w+Gx1Y`85T(OZ2ohnd{1@_VR-+Ho zpmx==@u3w5$}*vM;pf(1cqY`<;!xxy#!%_+ID+PFAR*{{f^kECq-mizv!eh(Z!nl7 zU>*a@{(*T6vnXjmbYT1s0YSkT!DYel;-AO{ekGt7iG{O&qhm|}nQV-JX-F^{u}L1a zHwz&EsX-3~|4|bOs<&O`=K?MP^9X4B|J&9;9>Eky$hU)@0{Rl0X#o%f`eDxFF9g}H z$}xeE9)|*RzrHzs6pZ76dGQ3a3d8garuc>yOd5dEg^=(0W{g6&FFbuzA0KuFsNXo*vjz1J5^mKgz9r^uk9|5x4RS*wF%N?{L zn5qL4L7`=do-_gS2>L3Z*#H#>W51TE2P)F^mt${g1FkF+K1M-JB0z(b@DqxDaS`r`t|Fa@c zMRbcN)PFJAQ036>6+uLd4vvF~3X>jSa#8yML9_)112)Ynf(n;E00dcMiXQmShS7rH z0=9oe5a58$Rj5e=D;xcdp%W0KhtXIt6deYPH`&?H21U_*HSimS;F9<&;eZ1?2(5#{Xk$^on4PC-iNBb@3bH3n0YzPe8Dk_DRT=fPjwRp&A4<>_F9x7*k_^$RjQf zg3ui>Ckp%!DC>tOn|wDS+S?5!f_9;QAiLeX#_OmRL6ikb86jl!r)CYm#nxyef_^>} z3^jq|#BZo<2!F$aCOW{Zq34?aI=GBBA|RO!(_l$d^c%fLqLzSY7ot5~Ebyo+7@hLF z^L?6G`JYck`}L7)tvyq1JpBl3EqG`!JixZ;fs@)`7yQqAzdWj~>6!`s@Ly-|ric52 zvkO0(P=iCC;s0E2dF!0kZ~gUh%UgfmIos92OB*_9n!c^Y+rQjJKWDr7Idrq&+48p9 z^jK1`FyQ$@sf4y_gf8P1am2Y=8AKfp{fp2=S zUGux}lzDi-y{7N?C*1$fGw*&pHn}7J^K(lb3AF{RzhBY}u3)8gu1bhSW8 z>o5PJt9AUexcV1eEfCWB%fIMq9X~Cu{zX>{gtY$hFS=UCPm8O6(bWPWt-t(>uGaC> z;_6>?wLnPgFaM&eb^Nrr`WIa-5Yqa~zvyZmKP|5QMOO=iwEprhx?0Cii>rUp)dC@{ zzx<1?*74Kg>R)uVKuGH^|DvmP{It0G7hNq7()!E4=xQB5Ew27WR||x+{_-!nTE|a| ztAEke0wJxx{EM#E@zdh!Uv#xVNb4{EqN{cMw7B{gT`dsO`pduQY8^i(fA+5jsi>}u3)8gu1bhSW8>o5PJt9AUexcV1eEfCWB%fIMq9X~Cu z{zX>{gtY#$RdjV3uj31K{Z6)CDz>gR6I6Xvb+kXIjW~cHh>G>3nfeIgr;Z@O+YqEa z5B~j#Al@i~T3~r|nF)z{5G|rR?b`DT}s~A)2VVhJn;Fg+sZqXWs zig`)%FXL`V$r|H$D}=sPQBoIv#q>kqm+x()2mDf#4u)UmOayLh<(5vdC#rhwnV0Xj zufgddx=z13Ah7^$0Uo1PM#^q zY31_9?p-6*Ty)3m3iev?;B(&8=aD$?krX-mtVIsfJ_jbOXZLRWctDN1R16(tTCuxjh8J&(^FlPEFhM^O3;bh>NWiH1O z=7l0TK6|;ZjZ}26BRgDz~Po08z9cHl1lpjBBaP}^FD~$76P#LK9a*j7U=l*~2eY{jCR_)nRB< zU4Hk(Q@2NKFXXd=ZcrGbe#y(ZZdnIRwNe}3#|~eTq*_5pjnBIlNNoiR?f<|QI2p_?(q z9bqXW4{NrhWF`3el^>fuO>=-r#ZhDRg!(jJ<6DTkLCm~}D-F}W_8uAJ=3e~%SpCFO zySTUMgS&r*AWkp<$Y3VRp{<19ty$LxS&Jp?n>hsm?_9^v*vuG^RT7 zS=D`=B@HPh_^N5|ldN7krA4fj(3z);*cZ#}>K@!Rt-{#&q5rK%B^qlO z^Y@>8lu#7^b>dL|DvPWBjh}7yzfTV=`MP}Rw(04zabXQ77~#Z;dzy33?1m z#~5h-g1OJYzyignH~Sl3oNc_dGS_01Qtp*#9VK+q@T=ReM}^0p-*!B0LS35PzBtC) zJC7}>$u`$ngb`))zvO4RQ@t{yON!A{DF&IYGONIsyfhBB)#3O<|gTO zseWF`HrP%fyCEmN?p;G}MP0=ff6?aIN{KA%>k(?GuF8?LX9q`0y5EkU()t z)6&$S^)WNMA)8J{C|@oN+b}4wuy>gDgw3Ok%}UusX>QV(Nr#^$dvuD_?CSm@t$evs zx`u!4L*wxkf`DySh^)(mz^}uL#{1fQa;h937^|dTZ#Z+;ff7ggwTSKAgN*YTfn$Wj!j+b9m-l1KYc<>4tv2W%8oj!FH(h_6s=ALDLF!gw;7gV!h?cgPP z0U=h%&hnac<(T-=#Iw^feLo4VuU=9Y(pd^Yl+xu4jh!#mG}hImz1Hq&vA-X(`_$f{ z#_>5hhoytc?mgbmMs&4aPMWhm{RTrqZU0ze>KMNa@9=4L4-{)Pmt8_eOCuRIpEK7+ zR8=qcj~TdYdidQbx0WTOEJZ?ZILgg`_h74M!9&g3ugBB0doEDCgQS>T9DF&4FB9>) zwfGjr^pR;Uu(XHf8i!IyFrHMMG-j3->whHtaa@Gj0v zSX_2yWTSm!$(l181C~sF!TfSNc`$B%VOD1+t>;?19L7yA!cE+j)}%2Kiz9lg=SL-` zoJ!w1SMvFQ#Pd7U$GBZ8j#aX_ns=?%8sXecPahojDf?>J_$xg-A6V2kKmk?o(D?Gw zAh^Lbc9wcCCJ&nGVG^Svqy1 z|DE!<=(|bHj<559sN5grXP8!I`G>f}DZ z$NbvTE-J-Kd<$h+oAX%_8Xz3{BzbGjF|8>`-&45EGodIkP9D*DQU5gPQsaK*!OF?w zTo!!Q<3&tXvrMp2PTY<^*ecJ8q9#uanGxIN#EMEzna}4J3ZuM&dEtRyi%8!A^NX0l zW~&s@>G_ecjS=#S505eKr#-Z2xU7^`_x4&pq|c|Cyqi0;OR^7MiIK9`+!Env_GR-G zTe-v!O4}~vN+jbKhHdR78yPuME^KsC-HW=#jy3tRlg1Cq9Wg3bch$Q03y?*FBwj4k zT`FBAO{R8iZY?Q)Ro8EetVz;l?#+0Jl849V> zrQY(BkI0|sXw~186#OSY;@k>Iyo z3t!8fUZSIW?S;GC$A_ws)e_N+;^S^FP8ZeauhLw@h&00+)t7uYxIAuH_c!)3>l6Ht z?C0|sr!rN$9=CDKe-xxWeR=H*ExD87BaigFo?aS{&Bh^x zucJKVE(y^c*^g(fwpjR~)AFK(hU{aYE}WOVKR#jhL9Jb*wth^`IxKPZoP72jHAEvJ zF=F)H^9c%%w@h{4+cj}9a{t)ID#qk-`6DD{mTY%8c5ZH-R(9pq6+wi?4YO%u(Cj`- zA3q4~B8Bq68i~)TS-Uc8$%nHKtq}Vy<+T=hrz#E|?zQ}IZp_5Ny9<_>A#U-#vXAw} zrPlYh-Ma8_a>*^Fy%mD%o7smS2OVBEdZ9$w9xvXBwPPj~u6aM;Q=j2#QR&7`h>vz> z_uNIcvxm&t8T;|EdZY?E2k|YHnROA(1~yx&-=|d7$?7PsKCUU@ zo33U%E4-_3kE0_P!DSgv|6W&tk%VY+mhdAt0=3<3P7e@s|@ZkTw;{U zPQ8o4%X9;!vv;_@@u(`8R|$sm{C#5!rv=6w=U~|0fx8crGxKXrm3wbW}0<7rS}Y0XWyfRat?naHD(n&mNN3hFz*>>T^(YI2wo_PTR%+VR;E z^6Ac6`wu5x51G^@d9p+wg@{~UVs-F#BCfz^me<|%IipTiRbPImClz&T%bNzN#DcKn zj<@5^N&BW{&od8t*>KU~YuQ@B(!uha7>&IqZmHP>?jP)PwP1E-f^BJijJZ9svFeupkWR>l5RW^9>uX|{Tum!Jw&k6tT3vMKjqdjk zTPz-)m>+|<4?N#;1ONElamCtAnlaLL@dT__{bK3+a7G-le)JZwg= z+44rYRv6gJdR{In-nSzO3lcw>Mdm%^D=Y& zy2Pc+_~Zr2%=K;q0*4T0mPcQj2Yc-7Y;avBK}LIGr#D{LlPtsI?XE<~1zMg++Zy?t zaic_XE%$M%O7`-smm`YyN9ZMBjY{XGPOR`t+KwMvo%ab%6znh2Hvgi~N!FyZcR|=d zZLcNCHKfjEtdGcyvzPIl2z3y z@xl_%++OovozBB|E^DmM^w316-WjMnDSt~=QG%bZ*Ow74xfZdp=)|Ghy5LlrMO3v1%G&f4fPeAtaG`?_|z zCbLK~AXmHcQnXL3yP?X)&(pyL(u+NxheIYcDI;kjAg;k;Zp>A4tfuycb;ApBJ8)(p6s3tIG)Q zq~uvXNgvZB3x*A2^p@ElIc#X)sme*HKbiKvsC9X8|q zw$Q*4mCnTR>4y5Ig?^u=XK8LQ^#`wa!O%Jj^RK!=e(?*OH>{$r77j;>7VGERT|2iw zK&ZXae2a(6i$@9DH{9%`e>my$G)JEGZRLUweZ2;4R{82#y!YVIgq87rDUw}8lAp#0 z+f{`vj|h!<=!MjMjyZO%tE>c9*Xx22GFS9jA<-wW>Rx`);J~{vw-I;g{DY0GV)Ns~ z*9Ud$9yIPdUVbWnc2D`feH832UoS2)O!?ect^34pw)xsy5r=j~RlG60;;H_o%itkP zCB5Y?>G7?rW`6D6sB!MekyXns?Cuf4@RZ4uoAvT)wri(BrF`3r^*znIV{`U?>_%m|*ZJ(# zNj@oaQvQq7B}8J#>WGnZWVvz^g%X>u^jeuUJ5ndkDRt^l&*RIl%)DGQE#s(9LYHjs z9i(n>pCKV~61QVxwfE_mvs@Q@xM)ZR&pFZf^~1I6OPv=#t_xIS6lW?S8s_;U@4Fw2 z+H9`=sPWXeX&E28=bf3DFKd6~jDeTK8rMq|Tcl?C1S<3xR-9ORBqCyH?~u(Y9>%Li zFrFXmdEsKEZV$%f>jjjy0 zjMTtEo(p}YmP>S=K-OH@;46qMKGbu|r*4B@-|Q@#-l!ZieRjCFPhzOFRIz#VX87hs z$wfMTH77O07%KDYucu3E?7X+Wp3q%>X1(M7w5pUO$9vM`yC{vzn@#o44tP2l?%jM?Wvuz1Mfqv$_rW zU~srzo1%Qyq{7%}<$ak$V}mz!4lW4GXmsy}Fpi_M{OlH9l#B~F7p=2<@8CK+6R)7T|T?@aya7Y zly@fJy2pWG`*P!*6Xrb~8#_df`Fttk6nXVges@7n<;ZHr>q>)Rh1$L!E-cy{cj3NK z&ETvrjULk+PYiWT9URg)A;w`?mG2#^T}Ypy8F|sR!J=F1*JjUf;e9Mg8tYqp~A0w{lmkLo^&)(+h2FbLs))eUc%Jj=gVxKjhHf$F*91b zJl%Setar7yMMk%@H{P+ymb$sVdVX=mi_I+M4I3El@AMd_ zuHMT~xe%}=&ZzfVt2g>#34Nywaa`+o(?<$yj68yR&w=C}rpC7)$CNFx_#&cv*<@E-!t(L$&K`v+LcYs>;+IMcgxAx;u7W zT%`EWvFvs7#l2HB=QTzL`PS#XZp>et%m{cNA(Q#cVUIa;&g#svtjpZlWhFbcac0!$ z3p-a2b2xqE>6GJmr!jHyHH}NRIA(wRwBpsIem4#@oYPQ3M@b!dXi=soIB4GKCHHQzax4r&`ve zIWIVOBB9{O^??ZuT1MMG%0?aDptEjx$id>p%9H!8Jict%h8rB;xl0pY7!Hlv7M{!A zo;)YeY+Iy2f$*H=^^rP1N_&Z3S#2&nK;xQ!+_6*oJfLX>4lh;skPQ;GYp zv)(Kz{%V$sBXv0mWsUJ8Cs=>@`lL(HgPH4e^v9PBdx1vpj{OYGFtNwdMMUmeowbTF z)BC6)2e&+!svJHu!E?yr9KC&lTOo6H+}oZG|w#RbPFir#W}pU*>Tu3XJsuhL_y zUe9wz8q!te>4dI|vzq)i(FnQX!8#d>Kl2Z|U8xS}6nsnITIW6Uv-8dyHp9W3U*xAB zuyU)J3ac87#@OGE9l^LeBi!G)OZL6d zv(>n3qb>;()s@Y*?-59OpxHAdmC-lVHh|@VbhiA%ryFB!o=F3=e34$|2*<ECS;!uklcSIWnyOZi8GE;X@m4@GaJj2brza464Qe=1%klq?f7Y( z#T&0Fw^zoY=}8v)VN0GYSQM|k;1W>PqU=`*FL}oEy(F@$?1vsUi=F?eaq;tg#B7t( z(!L=PnnP2hs~&|N$kHhaI+&%Ex2n&aEF$ym415zU-Ixq0^19bcJFWeA{xVPU-uHC>~wyVHRs1k{1xU{>`d_ zu&;(r4|*LLIf=?#fth{kp{p2bc8xi}IM}>)@3=v=Zn>S1FC2RprBCZMzAPAU>_p|) zt^?M_-{z3<`dCE;V|o*&^|xBjWit|V`+F>-U+&A2;0HzoS!6|PqF;Ys#Pt{k~6 zx%W~|zemCsMJJ8@7k7SGc9`@xWnAf*J~-U*P=No+EgKt_&*bl@%s8^O^PrJa)gn!2 z8zojODE+vcPX<<)$^>t49DPxBOjgz+!!89^PVIPi)oPyec7wGmrcW>FT-4Q_$O=iW z33sVHcxH4|hDU0b9-@(WK**5Xl-kR(J=2fO`4Ul4soS|v zloKZe@7i8o>l*8*_th+`{+PWf!?Dx&%17@SKkShX&Z?c+c;QGu&@*?^{K=&=m-l(^ zbkgi;wpF&Q>_OL^OZ%qTakj)74p6+;_c>EEGJe;xa}FzW{dQh2S$JmmrUg?j7d56$ z=;>z256K;NQEv}pwD$K1bvfu(mE_q6 znGzEEaPb?hM{=>T7PsAwI%p9&#w?soBtA*3(_b9Q zbw>^%9GY!ONgG= zOMBIJ#L?5te_>via_`Z`$mCn2P6W&Nbc?zcR6Jp@b~>WMoWT70_Q*X0w{%8$^)aYe#S=&E}IHNEj5~)qk zS{qmzU+A$uF}z`vE>;;lSN8etw^HL5OAxO$ztpE+?KeMiuf#P(TUbx7t{dd} z~oQyu%{0D*E(EMC#>}&cQi3vl>-g%Th?mANSqoRwE2|Tfg8&#N6J_ZsJ(u@*PEcXE2pXZBBPR~o>+hE z4Vk+CQPAYo)Vq^PS+_~~0`;Pj&`vIx(siLvRKmPXlk{qz-5I_0z~}MU9Hiev@_RMJ+PkR zyN_L+_-;hmSD~EM(*@?SoiEIu7sr@rAWYYKxM*u!gaN}Q)p1tTb(hfwuNKIa`JEit zWn9m($Fc-FLLe5*-^4u=bXxh=WkU+*_pl# z&L_=YIeFL@Cx&MWyQXxiifFu0=B9rH$DcfwJ^v;pV%1LUgWQeU#>Mwkuot)91un?m zsGmODWJ09Wl^8t+cbcdk5Hdk0<)DMFks#cuQ}x zRR>dd53_V7zV1m7J&@m@HRHjWLs^3aZ1XHX(sIo4rG#c@ z|7~gyo<)rHO}IjgT&?#Wg-J}$&h z)=LI8NUmPtq}iQh%2rN2FYW&RQ}(<*3P@d{v1Z-t$FeViQm5OM-udt~WwM4%FV)gp zeKOU8yURVn8@o9kn?X)fwynuuV>oJ|!|?bOb_y%zYs4Iou@fLhF2Ty#D7vO z%9Cc#pCFN<7?~t|vOe{B)Sl3XYYShL^xaS)8T_OIaUUZym|LMURt-t2Sew4M^y27R zja};vFZte^K5*NId;3*fw|nG72jz}F|7>{wPYbs!oVovbm#vtN0( za@OSFq5Rpt?w`B|JNqL?j2>#T*2@y7UKi}R`2KBm!=77CLQng7OZ%TpV!W3V9gp&WWU#2yF+6zigkA;I*n(N1v$%^@$9H?EF7$_F<+{E4Dm4*2dh_Ov zb2t)^H&QL|_Nm$HPInDLt0(rY*?;y+T&TLOTS>o5(@LGDght8TAtk4c&)MBsCn4d= zrg9PYK6_ipX$RXX{wR(yb51eQ>vnF!LZ5Rt!ukizEbWtA?l@$v;kdl`kgYi?PWn$P zxUN#0m*1Ne(qB#&(eifWIK5HOknb@DS!a+~r20g0gv8v=Q9Xxm(f%Z%x1`~c#pI-b z(8zbpg%&c(`U>1wl}jV?@}HhVeNG0CGGmPG14SZNI>j}73A?y=Nze_uuDN*4fb))s zx$5&_sS#JYa{ZV0)tUv(J6S>(*vhR9A*S5KgsD;F*_ffyZh1sGlt6SlUq-WI(PTu z?99+}zS!vvdx_jgn@#Wg=GAFutbA6lAKUHF3I6@`Ly^nwPMYHy+vE6*PY*@YWDWWl zuGKtxX^eA0QGe4Z51hOsl-~C__kJ81+D)qZ&B=iYr>fO5C&VpssM>_QmhPt%VKQih ze2)Q0-TjMw8+Ti;y5gUr@cNRfiS;DD=7ekWk|M~&1&GH53uDQ|Eh}z4;@|a8J@nKl zEXI-jI8=lcS0B+^=`vBjLft5Sx!}f#hLpWIXO_71mM@Mr${$lV>>+nR*O9XqMvqM! zmR1tI+}I^9Inu@PO1KQIq8%2T4n0P&R(;O4m=qb z9B4N!`pnS-CZD%<(YNw*+9}oNLZz!+=FFMK@zGAOCk#*QCM zLRA5;2Qn73QB84~O>DXt6jy*m&Qy<)^|xQ?AaTO<&80J18#iiQeVR34-N_-zja{cy zJW1O%F4IrKaYhPi)#J(SMvIG5GuJ1r+dgfpw*+$R(Ph)l>0L|`9?8Fbc5cVH(*~11 z&o>C0XD72m=Az@mDLL7Z8@QiTvz_vn3%^K5igHfr_w5p6uLEL>Uu3?fyisfEdn_X= zDRIHo>U%mjHOuxL7;I?}d}#I|Bb#3H9^EybY$+VSz_Ih8S!;&HJ9?g5(Zm%JMVB-4 ztyA;!MnA{P8?GEyr<_WnB^?9hqeO!@Pb(^|oMSWj0cY#e+sARu;*egQ-A^8xdFC{8 ztSUMdLD$}nRlHCf9-X&$WOW{Qh)SV#UTlMJOwb_p6vcw#^>>p)YeJU}(4VzDSn17_ zQ3eP<^5~(bM_zh)sh}yxwJ&x@7Fgae_dg?{KJBpOEc;a33r2_cOLi$3|pwDl5EITKkx$8uYp#`?{Zs)h1 zyh@g2`J!hj9hJELz0j1jh4xpAAL$&uFPp4!YisstU*`D7kIKAcbd}~H6DOvUoF0XJ zak*{7`#v)qn%$Jjl*Gx$><(FQjlk zkXnDY;;sV{*rtLFZ| zr_4KKaAySBxofmi{zX$ChkoOAM_J7~dVOW&hWG`SQ|i+3tl|t`e(%CF^_zlKbdpog z8$V4mC}r&KrMs};=9~pJRKURgi@Mzyt@GLD+(PW%QEL%t`Dzc>1U@Ruta^Qc0}h#uE5T8DF^5J zfsuJnOKgBo$(zFqeHa|6j>_FG82GuojJ69wCqXjk8bR~%Yr*@%T1(FMqyNYo+Jti= z!4ko(dEeFhMM163b+WvZ3esXlwN4ayY$hTNxrg|*7FbKZ5n{qM>N!1AX)B?;4(?ME zT-5I}Y@f(t<1{&nImWNBbAHx%P920NeJC191lT2~zjf9&1`r>}pKdu+@}1)%Chfk+ z^@|1w;VYgw&ko8x-_JiJ4g`^A*F2}>4+@5St~s!DTx zh2BC(HiRM`nxn?KZT@`7bE`c&pSyoiS`|~epvht?e+Y zPLoA*G9=A{k9Bl0L!6B8Om!d@8C>VTd4wV8RWxqrpYnDih1s;BVRK|<`$pomIL>FA z_IBPo^=7KpZ<(inkQD9?^fH`-23M$800ElWa^Ao&z+`zO{8q%KAF$GFEGq7UN)|-u!*J)m>%I;@2F1*LfI-+UbG*edJ9VKSP3?)#G`c z0_m?eAu1ospZ<$>OGN4N;g1nD-fW%LO}`&EtOyfu1&;;1Qd-W)ytte?5xdxryE52) zIXGw;%@m(6${5_u>e6ji54Mo5{Lk40VU00TO&6lXVnG_RLqkyPN3#0$m+Egn=`E7Gy)-tUWStH6W>7bm_Yc3A;IrqQd=_jI%?AiG)v)@!ICmrD^gTSv5G_&FP2!1mI4Nb~o89y1a#O7zAL{L}7vz^_GW5R$Bp)bH?H|+O>rrxE*jk|4m zcY>b$uYuyzUhBJfMBVPK!k)BvtNu5gL{Vd@wd6oAY6v7NH8i|r5{sD(-E}!{<g3 z?^;!tJ1@hJP#vJB#T1eJbI?e4*=*gG!4ZClWZgITJsv+O>c3oGhaJ85vO$#w!UE6o z;IF*B82w5TM?0Z_<<;$LmvRM($DRoPht0Bp1rRPqDtHo)pC&~$e5G{Cm>hkz7+ExG z6s{QYw)y!J&QEJ)yh6XRf3)?a7gBx*3)(RQ7Aecy_)0TQI0Dr@hXw2rU4%$$O)uU) zPs!gC#jQ|j5kO)zcBY+U( z1J=k$-|Bw^*^?uGjBV@CQqQ}08*^&&4?x6{Mzxo>qC#bW*O!Ks@B zyP4*KQFZ;A98sDRy$Kl?RcEE#^SL6P877e_POo)1YIDa!o|?@Z3*x`<+)$qJQ>CKa z8`QcLP|dkGp(}>^nESU49`OzL;)ws=noO zn*mRZLT$F%FIYe^Sa&W*#5lFTxZiTC!z&dbI6A_z{b1L&p`I^#viov4v%2^7q#C0e z5cE{Vo#f3Sk%O;1(?i$MdG8|dsje@rM(4+*r2iuU05-fZp^()n?#|*7I+*1!Fk4@{ zs-#3-e!&#Ju&7kd+!h4v2MmV9<12oODJBWML_z;lKiqy*gIugXB!3GdsAKek6n#^i0^LdURBv zW=pg_cKriFrX)X0=o{Z_8+?mkgzVZLSyAETu2^oe0o-)>buc|APWR3jP4M%0V~;n| zdCKxG$vz_7d4dZ#0K}3eAy8GVSs|vi${=i($Sv=p`W!T4{WYGvPCqFIcH;5M1J94R znGdz=+pUpv^9)w=R|5NzOvMn`BYw3em`dWKfMwof|H{nCX^3d?SNmfIJt1CUSOz@m z4Mygsaov44l*LhIj#g~}2Un=pu#9h2b^u(h(v;1t0|5Q@nH&f_()Bm#Kw;fI?vY}~ z2ij-s4)q_PFYLljN1wgNJVm+1`Ptp|rz$dpHL>N>rRQv9ssAN+;@5{vfi!qHNpS;A z=!7FY{17#*KXCC`4J|xJ#RJI$g_ggDU545Y#ckwl%7Dy=PB)gmSV!CztBaocY?!F& z{IH;X%K>_ORuO^=;J@#V?wUTY^|fJmU$`E_II4DgFtve&XH1$d(=9GGYd)7nHJ(iU zbT7jQdz6PqA8-j!fsa-zk&5FmFkwBV)qfIN`tH}wbL3{NJJzWn*DdTQ?kj}l)%^q! zZr-?dgG#E+KdUQnZM%?Bb`I0rW#IXn4%h5Z7VXuNKPrkycgo!V{wr8|O$95%sN?uE zCUn$lD5$zjkIY^1;0h&SAK>Yc631LELl-?Amd-=f+qG0>(sa2XF?_qVwKx3 z&&%3WUxij)%@>_pm;I`AA^I%obX1K+Fuh1SF|Ip_3GkhS@o{DAa z!YL>#P;*u3vv7223x0j7!k;jaz{=v#kvB4~SPGInI7}G~J9OMO_1n~cd~Q$b=bhOW zWG39tFfW;|Jf3MHV7%WOfy29iB~ft^X_%skDQ$z!x2Xy`3iN5dN^z=QFPsG?JeiuL*$pdwuK$zKj@^!HrvxGM)TrSWNTD#fyWP=GAc@%r8mkF-!nPyKBs z`5W;GVb+23I5C;TgTsS9>VAzp*H4@;`eY8jBezH*0w(Q@QMcx+Bs%`)LYBwr;=Y?04=qWGNDOLp z29WjZ3Z+zt<%vKYL8T0lQVc@Zr$<%Hu_XdVeAGnm^6kYrImZ#rj9QOxf>HPE6gNJ_ z5Qip)uz2z`9u9qo5;|O_cP!jVncB;L#)L-J__JLKl^yL+$qK@=n}O%+dS{t;Qr|#a zc@C;g(w0p?_m#bEI|#X_&~;cnNWAEBt)6{387t{A!fqD{ttbH#WqluC zgntkYHD;2MUY~~)OMX-Q4}kjY&l_ub=_6H1#e@o%LQ3&EmumO%ztXPe7=gu}0fkHOvW*{y*~eV+8El82Z8X}u^}3kkxZG@QKc4l%7cZRd+X%4YpH=-_UEL7&VjBYK4#;4 zic8we=XDsAZ3IPDzbD=8W>MO6>%&N#98dW;VKB*Zbj*srWQ zaF|9Ises!!6+jOlT$d68W?v@e-HQ4C>?=m8z7A3qEX)p6E3jp}5^fsjsJRdP)=(v% zD=Xp;8~kcY^1!G*+C&F!-&!Y)E|BfUAMh?8lfuC+@WSF3hNS8T5+5y@)Lmql(9W~z zYWb7>C#0Pz;fDdT8rZX)YL8IBR0^~A+kyE1Gm*^L&rq`+BGtMLdb))i%X?O8Sf)di zOE!j-es`$NG$hU0RcPqlU*bSdAyQ;IQ=;oirLdR-nEj+QupQys0U$8$UM?U>{>KH?tj5K18_8 zGO6RGj3qQ!Z}hM-t&c6safZjtI@)y|H8biKoEbdDw6J5zy=51j#@7^F92NYQgcG3D zZrvtc&FPAOUTNjK{491L zH(yi%_nm)(?7$v&nGy<*1PfaZljTafykqSsFDuTgFxSOZ$B`F@G#?8g!S7sR6=0W3 zHXDM^YMayZFMBjqjsTh3Xm!W^({~v@@pUcN<9u|Vpp=_#6 z+^t8#aj-gvHIbt`3!8RyQkucrET&`bXVuaz84L^0XaTkRgG!!|5e*%lHwDJ(Hz{x~ z{i>-5|KZCq5m7|?GYeo>Pd&0Dphh-<>91tz`>R%TtHNV^W1Ekyw1X?TULFS;Ro6c0 z$sEUrdS-@&hE~;Z%yBf|M4bDeMg}pErsC))K$uHPo>!4ifFqhQo_uJgZ0u zU-kM+AKJ3xuZOe()Q~UN#i}|%s`^5Hv_>nP$En52ENg29*9)ulAgT*bG5GDxvbg5q zLNAtEEIm_8(YwsN$mHW<%jbmO8~+?+G`XEz!{fb49HiueWSA7Kha~U|#|xe6b(Bzh z#`)y1DGh01bm^`gUDF&XrsOwi^>(QMM#y@qb5p*8o31b#kN~Y!Uue5{$CYYQyO4}^ zdA+2kO6DZtmxvsYoj4E_B=P<^%9aQtF987!AhV%oHYKX#nrOTJ7>QaJ=e78SX}D?v z694_R@F+n`npICE>U?^J^tca#F4V4m==G6R?6dri$c_1`l+&}v@>H6l}e!1lGx_)1-xM&cPv#C$P6PED$7Dj9>0`e`sd8p+5_hcf;{*7Bc zNydU^3kY3}vKn*??o$uVU+hn+6QLW=jKEx$FQbyu&l{wHm$`;aYlj-KD42X?Fsma2 zre^-}K1ZpEgAmRJ3<3650~1TYVkQY+`r-7rW1Suh11tNu;1$%F2GcGv(KaI{ULuN? zL#cyFpRF?RvAsgzQINrDsM-c5~qw`QI?U_NZ}Ml*L$j=b9)1n9+eZ-NcB;idEd@Vn08BGXd6pp(vf^Xmx6jmm&<5%**f zGWu@{w|GVVLY8?zLvi^HtljYQmR&j=Xn4voKY>b*eH*|({!NP9;wFE$JM`&ux=gJ$ z%wftPc?jM)s|)+U->Hkl_)2u#@X)ot{o?&qY|&X z$JI-|cEt6VvmJOPb0`?$y*lFiEB84fp492}-{pjz?7d&yQm8GtJ2PllRjQzkZN9T}d z{dtJBb97kJ%f9yfU_cz)>1I}OP>wWY+P&HR05kPc7G&(+(Wpx z$T5kq^HMA|II7bXy84>X6RZQD@+|}79Wm9Ee64;_Uotqh>+4p<57oTq#iJC^llCYm< zE3HZcxs~~V7dJ9|p<~llda1`ItXD#)$G?f7I9Ge#i=F>Y&pwqAz7dHL{7 zq{jpGAmbsA(wxm1Z`}EYFPW-_VdA%r&a)2SY}&S(dU~xRZ|ip2ZdIC|M7_s0PLpg$ zPCNRp=*MG7*Hk309c>yE|PqAwviqjE5h8p=lo zDVdDl!;@`>!Vt~^bsQeD?vcSB^b!YdDWK%x&I=b=EK7sO+<4^7_gg3VN6&y)I=M7o zWYEC^ppch?cVd`^R;}|T$rFuM&Gqimk$KY;IzyE6SJFbo9R~nQ%be<0E)CXM?*MlI z&={S&?Jrb&W7!A_oTjw(w+{wfY2Upbd^+_W$Nef~#W$Keo>pZ-6ibsFK7g`K+lwoF z+JND?mihyzY7@EjsAF)gAwB3G{~jQiyM0KPL&pIUAtCpF4l0H#k!F#~RYrotCWQB6{~;u%Oi~#q9)P4&GMK!wR&6@hS;t@EDX+M<#ey)jHB;>o`f4v zba>$;9;yO7UbVNHbP}i3{gzAb7gMq9ei{Cuqsn_M+4PF=Ih#4l_ive96O>+S zrLYsYUuCsdxa(GLJYf^o{EYZW-NfWd)A^#OESd8amed*4>A-an|Co3FN9%R!YVhq- z5aKc#qgnyBOjP=Gc_XDPZZIdB62WsaCS&HIIkPBInM-2g}E<#Soi@d zR7}yeS?d!kYth!e;T4kMP57%esvsdmLO%cH;|p@6B5zZi{bT(w_?R>Vu+VqhCh2DU zgy`~f`u*Ramjp&x{2YNBVNh3GKc=;!j20#$^IGcg1d3^0;b!B1PF-FG7C6!= zTB_hFBYgLiIc2!b$m$?LPT-4s4r=^UcZc z(d9CF7lR2UAt7ip?@tEHu{vRPP*Jp&R_4oWE*@Q!BGNZd$B;?0@WBWVVf1dkzO)uz z3P4T(LDsufPv-Aq+g-Vo)ffiGP)I(1isam!V64`f$znW z`-&f0t9p{d7;!L&`7I-`YFyei90+*_Ju%r2FgdYrCH!ic2WqMB9_Y+cYlu;i4eAlj zV5dduFPGnEfs_{lYmU&Rs}K5jbC6AX1P2cgM|u3+XY;|uz3;U8#4<4?ATHs_AL-IK z_BKqf7sYbV#E`#qulH(GoWX(n*}D-;XIDS>B9C&E{4-N-6|}U+eeZ0p5-v@^5}&>i zSWzndZM>*opPjeY%nt88O0s^URMsI@gk*-LwNgY}^67*0Dor$hp9H>-0br$FOvwZY z%TKg`j?w6{Rw?w+#@;Nop{UZuB#3vb8G z1gD+LsQTg&vLu<8nC=CP)!PEE?z_nzAaHZxmudQ5N=+>E^!wJ|X|gVHG_HQeyGHq!DO2g`t%9T7!-*KgT zAePkOuInOqi%&4KUF3Rc?deV&1x-0pmp4#syYzLBAz4ysLrXcmiY=w4oO<>rk4TsU z)aC~2l6QPvp=DpQ9v_g5a}Lq4JG33P?eiQH^Fl{`JP!cjg<%2Zy$=23_5-Xcytzi& z(Na2LXV}zQnd}aXXPG>))Efza)ZzqvnCRq#;@tT-*C~nMIw@u;$#^A(*+9N?!V5%{ zJxAh6qL=MkR5G_qo|af^X=uryJb@zYJloIc%bDi6^wli;c9BEBvzE%!2TQ$_v4)@`xQR{WcnIDO@)w&M(#cT%FYe`_!l4zp{zcNh_vS% z4R>X=moLF%U0+j$YAO@Pa;92WMRm0EIG#A;7q!d&XIQ*aH2DOf#e{{KuDAGcy~k?t znIHZ$%CTcMhUPw|=cJ@L=48G@SjRzB&GSy&u;t4xEb|W$IW53?OG2J$L% zg$X>cLjb1#B4CK7yV3Af@97{Vb~^3o?sxZL#Q;v7UBPM?JF()OAhdvIR7W5qBUT#E zVk&ZL27Wusy!v7E5&zl|SXjYYbAeGxLG=InF%BXp+7WxV$+}yqmU*NdA)aUZ&F#l? zcc-{c@cL)V1}((@sgk`q>CX%-PBIHAaY1~%nTrvgdtwz5CJ=)?QAjbLaNQS26O7yxCAF)QtY**fHup6{`v@PjKTGc5LvJ5vI0iaOLC76!0CtlO-e987 z3fE}Cnh9c`Yh9}6^L20%jLd8yX&&Sctng{VIGz#TiM$^6j3@437{O2&u$uB}BdnV% zRkIk?6_i|FGXD}DDIV<>~`1k`R zptKhEDD(RPZVe!pfLe^9fLM_db?V!`AA9J!WOW5l!68V5Xz{rng?_pX?D;xIQmiP| zjQH9QuLv3ux^R$?7#?>43Obu_> z&-i6vRkA3R0?N`i2@0$hN`f=Bgni2n|S_#1Ad5S<^W zKQh8ERQgC#(!D%AI`U|Xv&c%@-Rs?Nf~lapmirOt%!t;U`G;R02*R{{u?l4i^YDUt z*&bgGQC>7;tN6|bli@}ctj1Wl?cnFHob+G5P7m5m-?rKsx7qp(@EN6|nM0q|;VE|T zTHrbPLn#PtRL{cs9n=`;>-NKyWs#GZbY z+z7wd3y+&4w@l;*<~G|M0(q$z#`}hQ zidgu}1fR1$zCj0@r+KS4I>~;k+jhy`@neU{6yOL+y>DP%HukUv`AUb%tLuI=AGjd0 z6;Fw)6#ty=Y=B&8(tv z6b;L5k+<*h3(@!wCnM0sgsV=!7cz}R zTvM;ZpfzXZ`6HoFmb}C>DdYNTjuXe|Uh$4ep$TZGay=I(oj?ZJWegql z8^sRPJ`y5XGyNTzZctTln+52P(^XL{V29W(Ci5?#QRIR=(R|AEZFkvk^3&3mfi^?E zr~wD(uYZ^9z)CwZ4Nl7sNiWQ`SrTpBB00u)l3wm$-XT#Z<0Bu3U0^1T00m^Av? zSESlPf6t%YTBCA@gz)XuAG+}}1HGkz<#C<|aYQtR)gv?eqZ`c_Lp&BD(3;7O{3&43 zXpw}8Py^7MEk5AD&*Mt!qrhvl9Bv2;|i%+*U>KMdSAxwT9w<*iBf! z0(=K~e3E>XUU{=983OSsA=*yEHVup!ML`5N)|URU(=YPRXeNgW*1Z0=PiOiVRblcA z#B_&xfU;nycf%8k9>!kbaU_ILc41NY9Og9pJeIYasIz5MLry_685u(bpXUO8TP=RS zC`;L<9T5Uj_}*ot<2o!`3%9N}i-pKN#1Tmzvr8WT9z}U`&SiB}(IAx$W;g^7)5{Q> zW&D;Oz3rq^d(Rk>zTmWD*NGB+_%(NYb-XX%0e%~1l#c7PsB~RKo5)Yi7*J8a#|Wf( zgDh;S20PGEsj5)@FZiVEUVUrD$6qU%AeDRl=WKnYg4m*F;aXMq%0zsXyNVKCGMSYd z(YX-ji~tsO_jzRQ@lU_qFVLMkIG|X(p_Nf5oqCP4d?LZxZ_}+?24~V<6HpO#kUGQL ztr3k`+TUN+KQFKELa4iXo(J*YN*FA0%-Or2%-KE2ycbPwbfU|soZZBfQ zS0H}e_1dbbOCPQ&Trv(#d^BP|%t*PRsiR?>CvaOU5%zv6LG$A8E+xT}G+& zMS?EdK~395?+L}-T!=3B$YZ)wuq2CiMUh38SJ6A3TZw(3`v>iQ0``=77RRew+`l9+ z(^}^{ia2I3KVt1`0@gZc`@_%Eeo*e3r0fAy-;oytU~&UZh^~V;wTJsNnRy5GzR|rn zBxUI=ZQYU&6wA#?R*iaVP%C zb^N6(;`1M6Z;H)#Yf5r@=yp|f%bfMC6`XOvN)~c?8d8Hl&;Q;NgjcowOy9^Qx}fQV zH0(tA%f3K8HT_*%KX=oUdKt7t`G5gJ_)R`|xPa_3BBm=5oe96rTH<`5u+MMvu|td* z^`6m~nqS+f3b6hmKu^2oCz&ZqPJWC~R>HC(NJ5ZQ<`-K~WDwDwk25ws>h^=cR}X^L z$UH;EhQlK%K@33W8;0wDlMBbYxT;8mZYI+wM*~1ivavu`Ne!$b--<1LK!=;H8^FrGqV66@B`iv%|gc zcjYtMDHtKm+g8sy^p-*(P}8MxJixU;j7TnkP3@hbhPJNk!Z4 zGiN#X&nKU0hB&uk_`*@23VP-Gv7>zQA)y}SAWr}wMoF#p(5CWDrp26F{Cw{;$}loq z4Yf67u21)ACuwVWjKC@fGVmF0q4rAr(=TxWPlKn_gGXOWas3-*P>9ONnB1_b&P2*L zY7(>Js{EZz*^BGaSc#lFc3u5mF1#asJb7f^RsnvvX2N+S)k#?udJ?>HVLMj$*a`xe zG3{k7`r2UH>IdViHTMJg;Gp@pT=qH;#5cqNuv8~wk2hquk21>`Q)b83o{~s*y1x9~ z`7yFP&{FbOcoN)pkPN?>Z4|Y`&l9RA^YNY46YcMndl&2D0f>(?w#R8uv!7_@$Ujjr zdFl5;k=c^ozP$|~i%)j&n0xK@9O?sT4i!*``KArS1W3b1pqAs};DP-KE6=yU&#^+% z-{PbNcw=8-lcqaNIpUvP2Z`-bRTj3=>FCc6%X~>Z&Q@H3wyRTnJ7Vz{(h#7rmM#p( z@$_xPZ}60#+XtD1GvBTGxac$FZ!2Bbut&`N+`7q;@Z4m?0Cpem#2&^zUgqcnq+OxA z_|x5?0KebxJ$XlfSWd+mNHd~?U)|!zMA{qFJx*H$Paw0$`bpZEibVo$&y$tk!*PAR zUNo-Fs;f@)Db`A#H>yXsGn*-M*LjmLW54n{z2;OJ>gk!OkV~}(VzxlR=L+XU#@Do& z7zTCjhBs5IOIIXS$Lb-%hvSPu=wDy3-Lh$XVrzft0i&O4cHuSftl3vT>J{z1{rzS19QdSlQMv+Bx?>3t^JFI{$m4 zo0jjKWeh4}ud(=_EuK!qlRXS}(c>rOg~Ja%#hg)_i(kBaj`G{S(_fUj8y5$vE%Sea zlG$)n!N}<;9HltP+rZ0`G$wv(NPLcFunC&O)N;kWo#rz$Q}kjZQqAy?6fck9CGl1K zpS^bC4x4KJXlvS>#D62%?8kWDBmzh$zL*khVmLwjrIS83e(nWX-JJnfZx{|K%JmdG z4yz~vx9=jL4Gd|X(H)Q}rfu!(#V!mxXF-!B z*7kkHqcsv!uk5&)*Y})1e*ej=zse7;#-vRo{kvc({H1}e(+^8b(9GY}!dD%LFMcMa zs+%{R{kh%SNlDI~ztfgCqC-Oq@v!Fcxji8>(o+Ar1ouR~J2;{K)+~w_@WJB3#Eh57 zYJ4nPvdtD*f{IP-zqp9`_os1l%{ot04V4uzgMuo4K5g>UIeRz9cz87{1=)Lavd{ls zTh_aamXHk_lbl3?wl}0#HheV?oo8PAldG2Dl*O}f(_=KuQ_r0T8`+bfT_on@B zn!M_m8Q8@S{&q9_fK~~Fa%;S=0&ca)p^L9Cp+59`FZj%bd?1Kcz`N-NjjCGAz93+K z)e`hYjJ|_JMOd>~1{*ZS`fU(9IlMl7>zC7wKbu%3o-jKhxRSq{4^=CIj}!3bT&2M0 zF%TE6IkT`9W_o-WCk|!;*o3-P^@^cY1ID4Ff30Z`y2)}EJ{H01NcXW3jDP_q@EK%r z5@5D?F<Ua%8IH8X&m!v(BTDTZ(ytwC?*gQ9t!rl+d8NGthCc!RJfU3_wpN?P}B{}7ybv&!4G8Vn#|NY57`6o4lHqXvicn%WyYq&PM| zI1HED3#RI?*Oe-ZH@$)_dYOIzA$9o@M}2smTIX4@umCI!-ArpK0ixeZi{-hbX55Hp zczaG*v5dl{a~6UKWWEg`F&}Q%3x(~ zhCeM?#oSQlkH_U9pF#wghyXW)c1_tK{*!(eKej~tYx8Ff6-T_?=Md=_UW(zNj#apH#O#9H@dpOFqv4>d!zF5PI6MOn zUWvZfJqRX)&t^(GKuTI_i~&qM#_C@L22TANWC?{$Yn$1CF@p>d%CjIeoH8G~^7@2> zewr2O+ekw3oc8@ph1B2l;40_;C>E@`%K?HGp*n}6k%(1SaUkGhO6^$*ghX?g$S9}4o^A&So>tF%lA6-l2?~_;vXOi}(ypIr7c{aGh#EL8 zxOyXb&Y-_oFw11y!{mITtA62ZwQeo~K;lD%-lRSI24iBy`3_fn{P=xEsGeff$*IqB zeCkD>7s%5{qn_Mi!yTc@O=$}ol#(p1HMk@T`^txlP9y^&#zgANz~S7KZdLiyhZ;-P z>(Yar%%vo~Vz5PiJR;zVccIB+b(cYQ*9(1G$bdh?g(6KxuwyLp82goioDusWC4G|S zRp+Q7cZzrTh#}*E~&cefz7i%1Q#tmSz`d}i3*@0#H`m}r02pY)C|THNQbH;(_PJFz zxgA&YYEOZX1!~8OgV#-_LXt-`kUx@hNt%=4ML`a?q_Zp<>jiml?Q`wpkvMqu=VITQ zL<}`BpkifR-a5nkV|mL|mo~m@O>$E{P|1f^b}UyKNpOtTi+cjYYic&M4g<6C)x_OG z>IHn4)v@2dRB@Si7GX`}yN#9c@GO5`4U2HTRw-i4Q;5;i=)=#WQt}7)I?ckbIUkth zEW|27p)44)sHT>BY+kKjcS&;c0;K$Wf-GO=$2Zfi5$F3+s` zi>ka(E>@+N{N=(c#f?B>ssAk!&RoD%R|hYuGb-gYk?Oy$9D5823KH~@NV(J3Z}C_! zF%7!r;8WKgMVCd*V*@_)vHif? z8TsKX2V8l9=$|Teb>9i#_%Nk4PEnrYVF2X0u6w!?^5Kt50Dz4F;{mBqL8a-P#@Q9f;Oe+JbuJeRhI1c)A-QsM=_D{B{=9m?#TshY=tp1&*mm4MDt8BmwAT z{CF~-*{QN|ih7mFy!k1`s)iPinRDyUslPjd?Ec>la7Nm2;#t@onr@*s~vtWK)iHV$iLhj8t z82jdOWK%uwrFkemlwnEgqqjSp>7d<1^?KYHAcY}P$fq=(HDemuJedx$+$bMY<}=A^ z+|H-GVR?NQ6O!9Tf4l(!pjKFDBc^=_-GIPV?&7_%&G2ouzIpBJif?CP zYjm$@jU2zvu+Z0ug0&-&1!KQUyRAL)68v$1hK~;yDya{^^_b>v$3%Iqcc=l(V+{w>Wp?sfj*nwkpF1HYo&A#d%t?5@w-MQ=XMA6M zvgp%S_8r`_j+H~>+9j!jMbyI|QDC5xbxkvr1q33-L``lP5oYb{c{;cGX4QCg!z81f z+wJr$2{CQi&x_0cT%)Pe6KSCF>=7z&1`b!c94;cVPCinp9TLpQ{I~l#d~9$+AXFK) zkINy9l!>GP0nHqw6^1Fz7E|T1sZ|F#gFJh>y|?Xt-Y=hyC@pS$-3}`e`&Lj;w)FF3 zF=KW{2)&TOo&9r^&Yij-GzVW2AF5U;nNu4~2+%qrnlZnz$UU?e9mOra;*+dN8}t+*!Yav8mF7`8w_#)o)C}`;ZEj6 zfw_5QnHl(FWXm^dHRB|CY+LWFY>pf^tVV^}hZxB56efkuKtSnQzY!EoNc;fC!^RXU zN@F9})Q5CSA%oQahQ3-(tu%6~GM_d6XHr+H6GuCZ^@kn@)3nSTJ?BwnG3X?PDucN0 zJlx&-wwk+-r8D>wsP1$2PWwrkOyEKNx?D`DTaX!ZJ_%mCdisa)DNYzcaw1P zN7HU3gvY)%Sju+Smq##m|~-hVx*-lSci|3z13P&o>fM(UhAh1(?csN zuNG4|jqgp1{QrD@pJ*6j<6#j+4~#@I#R(D+up-LxK^r&3?7~Uqv1;i_?DE6?YOxft zjYjGC5|W=(!#f5TSucY#dOs!=S$Uw}i6{u;vz@04jT^zU(d;7#kjMf(X`KD_a6a^~ zvRUp_Qp1t-L!8>yG5VqE)8xEnr7(WcK~Iw$BHW65Yov7*VwyIE0K$_#o%XWCY$uIf z>*NcVzQ)(a3h=b9@ObIDQ1i^*{7s@I>r*@i(OKgHGPOJbsItYKd9I_M9jL*=;%!*QRKp@{yMd1N9&l41i zw92w|xMs4HiUbsg2RvCuJ-O`JRLLt;7SR1l_yHt8VRykQL;nW=$(iijVp8K+Pn4Xl zRjF0=JHox_wRV|K@$i;=yAIbDLw^~+du5-{hgZmHKEYA*=N1}NnA!M2y2nRWopGSt z7YHQj5_pW#P5;@T5FF<&KnZxF>^rf9^#&*GK8HN>+%}7a89kEP&wi$_;n<@D$b%g& z^)WEB2mCb(^bGt2|W);ObUHrfF|&e*~#5`gnU(j57L%82>Htaj)sWq!@T`uHjC4W^&;cwr3i z5&ISA7%U?LC;>odwY&6$C1MR1>v{jr=8NkN?*`MkO_mw@DZa z-#xxBM|Cise2q#ZW3I1@5q*bkf~P{jOXJRuxmNuc|GPj%1&a!$|L&VN{`CL%pxI#t xdXf<*pXP3wPN@JM@QmRrbW57Ko4V$QN5I^XU`e$5s0Bd(6y?-ptE4SL{|}XojQ#)s literal 0 HcmV?d00001 diff --git a/game_launch/wscript b/game_launch/wscript new file mode 100644 index 00000000..f298b54d --- /dev/null +++ b/game_launch/wscript @@ -0,0 +1,58 @@ +#! /usr/bin/env python +# encoding: utf-8 +# a1batross, mittorn, 2018 + +from waflib import Logs +import os + +top = '.' + +def options(opt): + # stub + return + +def configure(conf): + if(conf.env.SINGLE_BINARY): + return + + # check for dedicated server build + if conf.env.DEST_OS != 'win32' and not conf.env.DEDICATED: + # TODO: add way to specify SDL2 path, move to separate function + try: + conf.check_cfg( + path='sdl2-config', + args='--cflags --libs', + package='', + msg='Checking for SDL2', + uselib_store='SDL2') + except conf.errors.ConfigurationError: + conf.fatal('SDL2 not availiable! If you want to build dedicated server, specify --dedicated') + conf.env.append_unique('DEFINES', 'XASH_SDL') + +def get_subproject_name(ctx): + return os.path.basename(os.path.realpath(str(ctx.path))) + +def build(bld): + bld.load_envs() + bld.env = bld.all_envs[get_subproject_name(bld)] + + source = 'game.cpp' + includes = '. ../common' + libs = [] + + if bld.env.DEST_OS != 'win32': + libs += [ 'DL' ] + if not bld.env.DEDICATED: + libs += [ 'SDL2' ] + else: + # compile resource on Windows + bld.load('winres') + source += 'game.rc' + + bld( + source = source, + target = 'xash3d', # hl.exe + features = 'c cprogram', + includes = includes, + use = libs + ) diff --git a/vgui_support/wscript b/vgui_support/wscript new file mode 100644 index 00000000..e73d0b15 --- /dev/null +++ b/vgui_support/wscript @@ -0,0 +1,70 @@ +#! /usr/bin/env python +# encoding: utf-8 +# mittorn, 2018 + +from waflib import Logs +import os + +top = '.' + +def options(opt): + opt.add_option( + '--vgui', action = 'store', type='string', dest = 'VGUI_DEV', + help = 'path to vgui-dev repo', default='' ) + + # stub + return + +def configure(conf): + if conf.options.DEDICATED: + return + + if not conf.options.VGUI_DEV: + conf.fatal("Provide a path to vgui-dev repository using --vgui key") + + if conf.env.DEST_CPU != 'x86' and not (conf.env.DEST_CPU == 'x86_64' and not conf.options.ALLOW64): # multilib case + conf.fatal('vgui is not supported on this CPU: ' + conf.env.DEST_CPU) + + if conf.env.DEST_OS == 'win32': + conf.env.LIB_VGUI = ['vgui.lib'] + conf.env.LIBPATH_VGUI = [os.path.abspath(os.path.join(conf.options.VGUI_DEV, 'lib/win32_vc6/'))] + else: + if conf.env.DEST_OS == 'linux': + conf.env.LIB_VGUI = [':vgui.so'] + elif conf.env.DEST_OS == 'darwin': + conf.env.LIB_VGUI = ['vgui.dylib'] + else: + conf.fatal('vgui is not supported on this OS: ' + conf.env.DEST_OS) + conf.env.LIBPATH_VGUI = [os.path.abspath(os.path.join(conf.options.VGUI_DEV, 'lib'))] + conf.env.INCLUDES_VGUI = [os.path.abspath(os.path.join(conf.options.VGUI_DEV, 'include'))] + + conf.env.HAVE_VGUI = 1 + + Logs.info('VGUI configured as {0}, {1}, {2}'.format(conf.env.LIB_VGUI, conf.env.LIBPATH_VGUI, conf.env.INCLUDES_VGUI)) + +def get_subproject_name(ctx): + return os.path.basename(os.path.realpath(str(ctx.path))) + +def build(bld): + bld.load_envs() + bld.env = bld.all_envs[get_subproject_name(bld)] + + if bld.env.DEDICATED: + return + + # basic build: dedicated only, no dependencies + if bld.env.DEST_OS != 'win32': + libs = [ 'DL', 'M' ] + + libs.append('VGUI') + + source = bld.path.ant_glob(['*.cpp']) + + includes = [ '.', '../common', '../engine' ] + + bld.shlib( + source = source, + target = 'vgui_support', + features = 'cxx', + includes = includes, + use = libs) diff --git a/wscript b/wscript new file mode 100644 index 00000000..4b05d1af --- /dev/null +++ b/wscript @@ -0,0 +1,97 @@ +#! /usr/bin/env python +# encoding: utf-8 +# a1batross, mittorn, 2018 + +from __future__ import print_function +from waflib import Logs + +import os +import sys + +def get_git_version(): + # try grab the current version number from git + version = "notset" + if os.path.exists(".git"): + try: + version = os.popen("git describe --dirty --always").read().strip() + except Exception as e: + print(e) + return version + +VERSION = '0.99' +APPNAME = 'xash3d-fwgs' +GIT_SHA = get_git_version() +SUBDIRS = [ 'game_launch', 'vgui_support', 'engine' ] + +top = '.' + +def options(opt): + opt.load('compiler_cxx compiler_c') + if sys.platform == 'win32': + opt.load('msvc') + + opt.add_option( + '--dedicated', action = 'store_true', dest = 'DEDICATED', default=False, + help = 'build Xash Dedicated Server(XashDS)') + + opt.add_option( + '--64bits', action = 'store_true', dest = 'ALLOW64', default=False, + help = 'allow targetting 64-bit engine') + + opt.add_option( + '--release', action = 'store_true', dest = 'RELEASE', default=False, + help = 'strip debug info from binary and enable optimizations') + + opt.recurse(SUBDIRS) + +def configure(conf): + conf.load('compiler_cxx compiler_c') + conf.check_cc( + fragment=''' + #include + int main( void ) { printf("%ld", sizeof( void * )); return 0; } + ''', + execute = True, + define_ret = True, + uselib_store = 'SIZEOF_VOID_P', + msg = 'Checking sizeof(void*)') + + if(conf.env.SIZEOF_VOID_P != '4' and not conf.options.ALLOW64): + conf.env.append_value('LINKFLAGS', '-m32') + conf.env.append_value('CFLAGS', '-m32') + conf.env.append_value('CXXFLAGS', '-m32') + Logs.info('NOTE: will build engine with 64-bit toolchain using -m32') + else: + Logs.warn('WARNING: 64-bit engine may be unstable') + + if(conf.env.COMPILER_CC == 'gcc'): + conf.env.append_value('LINKFLAGS', '-Wl,--no-undefined') + + if(conf.options.RELEASE): + conf.env.append_unique('CFLAGS', '-O2') + else: + conf.env.append_unique('CFLAGS', '-Og') + conf.env.append_unique('CFLAGS', '-g') + + + conf.check( lib='dl' ) + conf.check( lib='m' ) + conf.check( lib='pthread' ) + + conf.env.DEDICATED = conf.options.DEDICATED + conf.env.SINGLE_BINARY = conf.options.DEDICATED + + # global + conf.env.append_unique('XASH_BUILD_COMMIT', GIT_SHA) + + for i in SUBDIRS: + conf.setenv(i, conf.env) # derive new env from global one + conf.env.ENVNAME = i + Logs.info('Configuring ' + i) + # configure in standalone env + conf.recurse(i) + conf.setenv('') + +def build(bld): + for i in SUBDIRS: + bld.recurse(SUBDIRS)