From 34640c343a93e32b7283ab0b9c36e19c2a2a040d Mon Sep 17 00:00:00 2001 From: logzhan <719901725@qq.com> Date: Sun, 25 Sep 2022 12:48:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=91=BD=E4=BB=A4=E8=A1=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AEWIFI=E8=B4=A6=E5=8F=B7=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2.Firmware/GeekTrack/.vscode/settings.json | 3 +- .../GeekTrack/components/GeekHAL/HAL/HAL.cpp | 5 -- .../components/GeekHAL/HAL/HAL_Config.cpp | 13 ++-- .../components/GeekHAL/HAL/HAL_Network.cpp | 10 +++- .../components/GeekHAL/HAL/HAL_Shell.c | 7 +-- .../components/GeekOS/System/HAL/HAL.h | 2 +- .../Libraries/include/WIFINetwork.h | 4 +- .../components/Libraries/src/WIFINetwork.c | 36 ++++------- 6.Image/GeekTrack_UDP Receive.png | Bin 0 -> 50172 bytes README.md | 56 +++++++++++++++--- 10 files changed, 78 insertions(+), 58 deletions(-) create mode 100644 6.Image/GeekTrack_UDP Receive.png diff --git a/2.Firmware/GeekTrack/.vscode/settings.json b/2.Firmware/GeekTrack/.vscode/settings.json index 5bb84e1..631ef79 100644 --- a/2.Firmware/GeekTrack/.vscode/settings.json +++ b/2.Firmware/GeekTrack/.vscode/settings.json @@ -45,7 +45,8 @@ "*.inc": "cpp", "*.ipp": "cpp", "istream": "cpp", - "typeinfo": "cpp" + "typeinfo": "cpp", + "esp_wifi.h": "c" }, "idf.portWin": "COM8", "idf.openOcdConfigs": [ diff --git a/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL.cpp b/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL.cpp index a1741a7..ea35f34 100644 --- a/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL.cpp +++ b/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL.cpp @@ -37,13 +37,9 @@ static void HAL_Sensor_Init() void HAL_Init() { - printf("Config_Init\n"); Config_Init(); - printf("SD_Init\n"); SD_Init(); - printf("Power_Init\n"); Power_Init(); - printf("Button_Init\n"); Button_Init(); #if CONFIG_SENSOR_ENABLE @@ -53,7 +49,6 @@ void HAL_Init() #ifndef _WIN32 ShellSupport_Init(); #endif - taskManager.Register(Power_Update, 1000); taskManager.Register(Button_Update, 10); taskManager.Register(IMU_Update, 10); diff --git a/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Config.cpp b/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Config.cpp index 1f82b6f..28b0f49 100644 --- a/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Config.cpp +++ b/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Config.cpp @@ -29,28 +29,27 @@ void Config_Init() } Config_InitFlag = true; - size_t length = 64; /* If load wifi name fail. config the default name. and password */ - if(Config_GetString("WIFI_NAME", StringBuff, &length) == 0){ + if(Config_GetString("WIFI_NAME", StringBuff, 64) == 0){ Config_SetString("WIFI_NAME", "WIFI_DAFAULT_NAME"); } - if(Config_GetString("WIFI_PWD", StringBuff, &length) == 0){ + if(Config_GetString("WIFI_PWD", StringBuff, 64) == 0){ Config_SetString("WIFI_PWD", "WIFI_DAFAULT_PWD"); } - if(Config_GetString("DEV_IDX", StringBuff, &length) == 0){ + if(Config_GetString("DEV_IDX", StringBuff, 64) == 0){ Config_SetString("DEV_IDX", "0"); } } -uint8_t Config_GetString(const char* key, char* str, size_t* length) +uint8_t Config_GetString(const char* key, char* str, size_t len) { if(!Config_InitFlag){ return 0; } - esp_err_t err = nvs_get_str(nvs_hal, key, str, length); - + size_t length = len; + esp_err_t err = nvs_get_str(nvs_hal, key, str, &length); if(err != ESP_OK) { printf("Cofig_GetStrig:: nvs_get_str error\n"); diff --git a/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Network.cpp b/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Network.cpp index aaf4573..baa9a36 100644 --- a/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Network.cpp +++ b/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Network.cpp @@ -17,11 +17,16 @@ struct sockaddr_in saddr = { 0 }; int sock = -1; char buff[UDP_BUFF_LEN] = " "; char ConfigString[64] = {0}; +char ssid[32] = {0}; +char password[64] = {0}; void Network_Init() { + Config_GetString("WIFI_NAME", ssid, 32); + Config_GetString("WIFI_PWD", password, 64); + /* Connect WIFI first. */ - WIFI_Connect(); + WIFI_Connect(ssid, password); /* Init socket to send data. */ sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); if (sock < 0) { @@ -36,8 +41,7 @@ void Network_Init() void Network_UdpSendData() { int err = 0; - size_t length = 64; - Config_GetString("DEV_IDX", ConfigString, &length); + Config_GetString("DEV_IDX", ConfigString, 64); while (1) { float yaw = 0.0f, roll = 0.0f, pitch = 0.0f; diff --git a/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Shell.c b/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Shell.c index ebcd691..c5de617 100644 --- a/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Shell.c +++ b/2.Firmware/GeekTrack/components/GeekHAL/HAL/HAL_Shell.c @@ -32,11 +32,11 @@ SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)| int PrintWifiConfig(){ char StringBuff[64] = {0}; size_t length = 64; - uint8_t ret = Config_GetString("WIFI_NAME", StringBuff, &length); + uint8_t ret = Config_GetString("WIFI_NAME", StringBuff, 64); if(ret){ printf("Config WIFI Name = %s\n", StringBuff); } - ret = Config_GetString("WIFI_PWD", StringBuff, &length); + ret = Config_GetString("WIFI_PWD", StringBuff, 64); if(ret){ printf("Config WIFI Password = %s\n", StringBuff); } @@ -66,8 +66,7 @@ SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)| int PrintDevIndex(){ char StringBuff[64] = {0}; - size_t length = 64; - uint8_t ret = Config_GetString("DEV_IDX", StringBuff, &length); + uint8_t ret = Config_GetString("DEV_IDX", StringBuff, 64); if(ret){ printf("Config device idx = %s \n", StringBuff); }else{ diff --git a/2.Firmware/GeekTrack/components/GeekOS/System/HAL/HAL.h b/2.Firmware/GeekTrack/components/GeekOS/System/HAL/HAL.h index 29e56e2..6431b58 100644 --- a/2.Firmware/GeekTrack/components/GeekOS/System/HAL/HAL.h +++ b/2.Firmware/GeekTrack/components/GeekOS/System/HAL/HAL.h @@ -134,7 +134,7 @@ void Memory_DumpInfo(); /* Config */ void Config_Init(); -uint8_t Config_GetString(const char* key, char* str, size_t* length); +uint8_t Config_GetString(const char* key, char* str, size_t len); void Config_SetInt(); void Config_GetInt(); uint8_t Config_SetString(const char* key, const char* str); diff --git a/2.Firmware/GeekTrack/components/Libraries/include/WIFINetwork.h b/2.Firmware/GeekTrack/components/Libraries/include/WIFINetwork.h index 332e3fe..20ee426 100644 --- a/2.Firmware/GeekTrack/components/Libraries/include/WIFINetwork.h +++ b/2.Firmware/GeekTrack/components/Libraries/include/WIFINetwork.h @@ -8,9 +8,7 @@ extern "C" { #endif -uint8_t Library_WIFI_Init(char* ssid, char* password); - -uint8_t WIFI_Connect(void); +uint8_t WIFI_Connect(char* ssid, char* password); #ifdef __cplusplus } /* extern "C" */ diff --git a/2.Firmware/GeekTrack/components/Libraries/src/WIFINetwork.c b/2.Firmware/GeekTrack/components/Libraries/src/WIFINetwork.c index 56eb1a5..3a6b82f 100644 --- a/2.Firmware/GeekTrack/components/Libraries/src/WIFINetwork.c +++ b/2.Firmware/GeekTrack/components/Libraries/src/WIFINetwork.c @@ -1,5 +1,6 @@ #include #include +#include #include "esp_wifi.h" #include "WIFINetwork.h" /* ESP32 Library support. */ @@ -9,14 +10,11 @@ #include "freertos/event_groups.h" - /* The event group allows multiple bits for each event, but we only care about two events: * - we are connected to the AP with an IP * - we failed to connect after the maximum amount of retries */ #define CFG_MAXIMUM_RETRY 1000 /* 配置最大重新连接次数 */ -#define CFG_WIFI_SSID "logzhan" // 配置默认连接的WIFI的SSID -#define CFG_WIFI_PASS "19931203" // 配置默认连接的WIFI的密码 #define WIFI_CONNECTED_BIT BIT0 #define WIFI_FAIL_BIT BIT1 @@ -26,8 +24,6 @@ static int s_retry_num = 0; wifi_config_t wifi_config = { .sta = { - .ssid = CFG_WIFI_SSID, - .password = CFG_WIFI_PASS, .threshold.authmode = WIFI_AUTH_WPA2_PSK, .pmf_cfg = { .capable = true, @@ -45,11 +41,11 @@ static void event_handler(void* arg, esp_event_base_t event_base, if (s_retry_num < CFG_MAXIMUM_RETRY) { esp_wifi_connect(); s_retry_num++; - printf("retry to connect to the AP\r\n"); + //printf("retry to connect to the AP\r\n"); } else { xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT); } - printf("connect to the AP fail\r\n"); + //printf("connect to the AP fail\r\n"); } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip)); @@ -58,21 +54,7 @@ static void event_handler(void* arg, esp_event_base_t event_base, } } -/** - * @brief Initializing the esp32 wifi network by gaving wifi ssid and - * password. - * @param ssid : Wifi name which you want to connect. - * @param password : The wifi's password which you want to connect. - * @return - * @date 2022-09-04 - * @author zhanli - */ -uint8_t Library_WIFI_Init(char* ssid, char* password){ - return 0; -} - - -uint8_t WIFI_Connect(){ +uint8_t WIFI_Connect(char* ssid, char* password){ ESP_LOGI(TAG, "LIB_WIFIConnect"); @@ -105,6 +87,10 @@ uint8_t WIFI_Connect(){ ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); /* Config esp32 ssid password and authmode. */ ESP_LOGI(TAG, "esp_wifi_set_config"); + + strcpy((char*)(wifi_config.sta.ssid), ssid); + strcpy((char*)(wifi_config.sta.password), password); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); /* Start run the esp32 wifi. */ ESP_LOGI(TAG, "esp_wifi_start"); @@ -125,12 +111,10 @@ uint8_t WIFI_Connect(){ */ if (bits & WIFI_CONNECTED_BIT) { ESP_LOGI(TAG, "connected to ap SSID:%s password:%s", - CFG_WIFI_SSID, CFG_WIFI_PASS); - // xTaskCreate(create_multicast_ipv4_socket, "udp_client", 4096, NULL, 5, NULL); - // xTaskCreate(udp_send_data, "udp_send", 4096, NULL, 5, NULL); + ssid, password); } else if (bits & WIFI_FAIL_BIT) { ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s", - CFG_WIFI_SSID, CFG_WIFI_PASS); + ssid, password); } else { ESP_LOGE(TAG, "UNEXPECTED EVENT"); } diff --git a/6.Image/GeekTrack_UDP Receive.png b/6.Image/GeekTrack_UDP Receive.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b0977151267ebcc455bc64b5d8511a5c23fd49 GIT binary patch literal 50172 zcmb@u2UJs8`!3FWjxtsTK@g=VA}B?W-qDdFz4s>4q)QDQ8z>?mM0$xz54{EmkO2gw zOBVt}TIdN7LP-A~oEe?(uHX9Kb=SSyC9uLd`|SPJ=Xu|Kh&9mDID6{SDFz0Hvzqr+ zjTjhCgfcMvTJhU|fKS}LAIt#XPCmYG>CeEx_44TdFNrI=&cKJv0csWj#y&0qAO}BZ z24iox#}57h&bI7Ba|{eu7&KMyngnNW%|!(`xkjuKeKa>vbC@8R2H(e?EKpYA)4v@{ z(2c$KO!MGMebl3%4?Xby_fMaENH2v%p>XLrvp5Lz@ zOlyzD{8A`{+1b3q%3*TBF{?Z1G7MfoD?rsp*^~rm!*Vr-TM12pJ}L8+D(@pU=U0^p z8Y%fc5g1(le88}E!ABb+-OqV?h)W@8dvWJ(hXHz%Z%Qd3hS!Vb2kYZX$?Pc1rW z+9kg4sDH*NbDV+U4(p+aQ2vSH>yP6dM;Jir5#!r5?QstM*t+`qhWh%~pD}arzLmWR zk0}>XTRTh3o7&Usp3s*0b?KxHv8;E-$ulsY;oLd6wUw1>AFO4=bb8C$4z!x{@*G!a zm(aQG*``_yBk-J~@oA|qMMyM9C5l#nGghJbe%JxIM$vFea1eIBeseEHDD9T5?}odx zrlw`~xYdR(2r*&n;o;^c7eIZwjfBO0Rsx~$D)hLh-3@aTcc<@PvoiGJ#vsa6a|oTn z;@WnN_w?!0tD-hGmX^#(6X{v^Hz0G{Z|2O{lDxdUUY@f<&CG-@#mi7=BPi`6dlu`S zU%t=sBwsLv=C-U)TPCg!i-?LM0%#qhd&#e4FTf_Ve46UTEs$qlo@;1mXsh28;W^A9 zIFGJdkk91I~=Zp%NMn`YVOs$Fn++#JNbPC<)yn1rfWOEQksd<&phkyNi$_Lp{ zzLYRU%gRH5#^PnVk&b`ef2H@FT@-Z=5jm9@MFF!%?Z$B-VYYDTRbkMmm)~4lD;%^P zYP*_)jk4#dm;URX2gV{IA}~}C(tlWmK1#$TCljNOGrRfPeXR|H-6uvwU{^Q*A2}L- zeyODNmC`4|=mqyfhB0%%jf?M)2iwzQqsgT5Fs!rpuYX^d7C@51HWKDjQ^(ts!am)E zZBN%~_xaHyULKPn#o1F9n^tpcCpG@M`n|8>W0b?q{#+%vQL_7Vbwrq!5omt;NH^Z| zpCpDAjfsS=ICh`Lg&2EMfqk>z%IjLEprC_kS4jQzkz)emN{JnH1Bq>^y>`81TcH8A zHB)b_irH%H3@5LzuOq$T+ne_EW*o%dzjW-@GA?A5r@XuzHXpj#qkM2XtM$ZRvn2Q3 ztlXZd&MPRdH&wNpns#g3oo@|OTb>WYQb*I;0v0-sud1jy5ioNS5)z^4qaeU5GZz4U<%w(cV5%`)dpc># z)z#Iw6Z0#{3$2)eQm1kQr^U`J3 zKrRv7oOZYKR2`1WH*YUnjHGs}%6 zt@BX6F`^_6o&(?4iy(lz$HKA9?onPn$jBub7Z;ZSnT(7KVmyj6Xy3Xtv=+J&xbqF~ zoHRK(DP0s4v=eIEwB3E#rzK#0v@L>+X(i0}b)?yaug`SUo3|`pfR@i6G{6Aw0)~Ba zz0lJa8W&JE;*`MjYnp%q4PB{`5#RzK4|e)&|c z7a;6vv~x+@jVwESy_MYva%O-3&}8K|0Re$2YgXpY=f#2-3dd&7?k&mP{QT~X*9#gsxeE1Q&19ha}2-QVeKFr`jSrmm4B4CwDWaM-Leu_6m~& zk3H+N^*9=>ThaXLRR9e1dO3!q&g2tmOl&GRvMIiq+F|7|8YRR&tE{X{HfuJLyq&av z^B232v9tQwL~DOEOno-b?AHuOK4J_s5Nq$c7?&TqbN5w^=D0@a5)0?B|Y-j=nyvCY$+c z$CoU{5)(>6p??@DHCbJNO~@M_G*0}HB3fYFsdO*es?sTu9WFy&YFsvnQ{_X7E?qme z)F-8oP;o)zT?!v_uTyi5N>!Y(6xpPfskE!%$@L_qp~>b65Rr11$e2gg)$^y(fr#L6pPYZF11;p z&!&v>;bl?9u72|NeI|Y3>j74%)%E0yDV4eySu_?Va~WT{xVO?@V6@&5eOlMXn~W5V zn!X9iFqsvsZ-8S$acPMCg66=QkHQbFyu+xQ_E_3*N=nN5!}WCtRoFC@9=0WsCTf$O zk<%2uzV~#KX*OUuw2$6sA54)-jDs*o6C&i z_l}#l*95rBrU@r}KzT@HI;I`U!YM>uh=b46dV5%2)dj|{x&-r#j$OYkT77pHZK^K*)d8dcKbvBJ0~|G<-96W0T{&{picYeSK2_vV3S*&S@njWyNNmY4Al+&<5qPD?AaQe%p#QEXo8|2`7R$Q6w&vx--s>dJ99;)IOt;RbEi=o1P)68O zWfX;N*5DWLkM7vG?J1eje<7b#p8&lzF0bv~^g*ZMK&i#*&LC$_`kE=86;R$CN8j9& zb8wK4hezoGzutC96A%9!B8vXWyzQZpum9A{nY_n_U-M@VI(cY2Ks>Xtvzu@7cU@^3 z@$mO|rO_0o(Cmb*8RCGkzO#48$|j14^g<$YBMw{(iXutWsC3FF0Ttq)51kN2U#0tK zYxj?i8ij?C*%60bw(uY&{J61b>;C9b4qKtQJL#Wl`d}3mXC@*Y`;KUOGP}%d|Fs9b z)$aJ3Cl(WAUev8t7qw}oW%PNGK%tS6T!vt( z`w6&KQA}8j6Zmx9q*i-KfH$~$cJfx&0!vpXZ$Yx>ngzep2Yw~l!q6ZI2_;3ohk2~y zzF)0*b8SQ_LyA-5UYRJd!!>it=9_z7cjfVRJ-iJrY11@kFBs#!&YZNx9M~`lt;6Wd(but;Yb{fqUqBY0L{#STFG-lMs_w9*;$Y%09MdxSlTTDRzIAm zy~NXmY1XGA_4AENCR0=Iy*$@?xEP0Q@bd8Tia=+$0>DDrwn#d^TXmAwY|{E5vZYXw zDb7?}ZhEPU;rLksE)Ubgld|a*&g>_<(()dKopaB)q+O|6AYOwRh0A2pUOW52@%V|@eDKww4=Y(3oFj=nNRR7G4CDFN6 z!yBxsX9Ut8dFEs)sHMCw-F=b2G1A*>HLR|1jdIrcgrL6QDr2ahUXa9t>cPv8_UrNA z^YJCH+>u=|B_YMYenN=Kyce|X7F!hjHDv6mnxjpyQZaF2T%j`a5MV*VSPDk#;8B4$va6~Zv!f(zKrr3J&reNP`;B13Xpt` z?$N89_~f2gVtT=7Ls@=AbgY882Kw5W_|!z-+fUJctGKmt(WE`&OO5-f(Q{aTzs>8l zXRnLvyA3F5QQY<44U?Sq) z^Ub(-YG!7AB_cYsq0(aFpOf4b!pbMg6A3kf6kz+_x3Evj&A8feDol@;I^@1*6AaW?93SWvLvZa%&6LXhb=_212lVjsQmYQbXCnU782jD9^%bPH70)0&Gw02jX`vLy-zxfEw5hb*8{#9 zWF`EYwr4uI0 zp-@IgN4K`N#>dA2f`SUC;UEZ1^X9u8sNofVG^0W5H$ri|Dby<(+^H1(Ec;9bLNH~o zNPV)1HQ>Bg#^N1&ef_&NJ>_pWQPXy%Nn73P+A#NXa6UkYGscc(k|}2k zTtFF*Lt9*L2mpE9u@xf%?RyIN;ib5m%cq?d$3ttR?20RX@ycGPKZ0Xv^YI)*qmKsF zO(u%!HrLn1PGwE3r)UvJ&ib6m$Yymu?o(s1S)XurwH3P0b9RC=;-PqdYr~7%*+5zXLJH)YuPeCIe);)Sfv8!jfSjsH(kBJK`zG)}5$2xgOqdd!kEWh;R80D!z zX9$G_*mZDIb^s?=*@%F7{Y{m(8@&^`g`K=p%K}+9ayO6$in+>`aFe3aZ(iXd)?~$W zEf5p`Ltb0J@~%jpcmJ(hN#@zB@$6Db^*%o&P~5^cZ&tYGhMlc3hk`?(}JY91i%3I~^AWs?1g(!~q@-01VqEKm1I+ z2T*+i$^dg=DDwOzhm5m+O19w3V3Fu&=xAN;4nZ&Ji)P!FzwceUcf6MyyDgi+!mP=Z zo0|^3^rr6>d1TPDf&Q7q;FVHxA4rP^pC`(0XV5J%isv5LXwJy0rYjVq6;m5Y4@$y9 zA|E)-G;*?jAsK)QMk)s0HlB|z7%6)Nav688U^Jh~b+$E!81^rw@^A>2DIHipA6B^D zXmr!w22rUvd?C(Bd^aB9qDa&vC(&qnQ%@2q+~UmTE;P+tP@M2c$?=J|K7SP8glEK< zO3HLo-e$i>@*7{D4MKXs=7OwORIpoX6bvEqZ4)&WLUAIUMI6MebX{k*yjdv>(ED4r z28V$mYSZc$xH^=aLaktwV|$dOuFi)^d@x9^vug6$Lb5otS4o1@?TAV^Ey8DytGtt#R9K6=hX0Y z(1kznlah*Cq@qBwQe>TVwzZc9v|GjcEG%QrQtIU+p;!048$JAjmrh?E3iQqIk*Kqu zSXqbMNW3ons1d6ER>!n>%ydV(1XJGT;jW@lK7+RS#C+#STKC_dt(PupY;dR;{VL?0 zHLOFT;D%A*xIq9o(Yj?25%&57d)iADI%)~E6-5uT52nombt)hutfWl%Apzn&QEG0k zY8SHhCmlaR_Yd)<;Va>_<>lJ|v@ox<%gM>1?iZ<0lM=(7aC#Fr`eY|APn@pLveb=# z)YD<4TW4@-`?6q}nQ);Dw%QDDzgeMWP5%^Iof()>Z)G~UoYZVo!Z+mf(PJ#eJGj*) zxZ4_yQq(jDgey2fiQ*zvqR&#-&H3m1%By!tgjRqfE53Xt}c*H{* zq<7xmWrX+it>71siVj^97(Jj`6JOfb>ukqSX%vXgSuK`Ub zUi~X6D_uwFp(#4rRsl5k_%U6BzQZJH+a~Y7yZD@dqVM&K+Bf;F0F`KMZEe(Hw@hyM zUatzdR>c@2Ue2@Mk765wR8yN{HI?%0O*6d!-l-^^&Q`K}1!`RRg%)VrmzbLjRm}oR z_yxg~gRC{Bo$Lfx8Z$HCfk493s|ad~`l!gC*C{umsIs=bg&rQ&JqIcXg}MY9ur+BB zpSE$!`GwaszZvswOvd@~bBGyU;u1M0$o+mW;G&`~R8HJfx2C3;`YN*UKPzXNZdI(F zJNBFM3q;=eew&=phdUN@1AWYL$>_I@G-*Y*4$!hh)LzSkJmZiQISTs%CxH4_|GpE-A!r@3O=I6 z44GNbN%Vb_E?si~!1%jbBR5U~l*#`DguESw+NENt?{_|BB+`*8A*(*E)IkJo6CoS* z!6r3zGW9Z(EnUB0ktcF1kKI)i5^=E36tQzm0puBlA+7>NPavmM*tJ^SO0y4LF90g_ ztCgV>rP7!I+P(0F6U7^toOFXhG5Q>v_)F;4BGIT>PoMc+}*4V`7D_74RN{Il$)%oBn5qM z<+tDe`S?sly?Yi~*h~69t$r~!9?~T>W}rg#LFd3v z?RlHjP0V(hjrSuyEN5on40>V?d9!JPcz3p|IkTwBWgRXlpDo0izt)_iT@>@uFB)7r z%*THD=B(Lg-QIN9lA2c@9mC+(BY{>0u6uYTESt^Yc6eE5Kk>G;+SdqbGsbMTAg-NnJShRJK*uTXu(E7*)Q^=gNUF zvjy5fqojGiP^Ps64kyD=R1ENm`}oYq;8(*pPyb4nXs|Z*#FHxyX z()6rBMNw&9FzK-&`Hh=f-LR=;FW~c>>q_ClQU0o>DThUNE2lFxW@(3uP+(}fJX&^oE(J;$@dwDo95LC(L5|5q#tI+fX!1wNp zpDaM3V9kq)EfXq90I^&Wkhpg*BJZU>6I+iz?e$^-W$p8!3D$5zV$jeq4VwdcTL1Vm zAmS$?1lm4Gs+r z4Gh=-d5emTLcE%dqEn$dB zCDBffd7@$%t!=&J^&1nGkzM{{o}(WnIv#k}bjluo6kQXJHIen;%ujToj$@AcWRkGW zN(7BU#Lc&l=t{r&sB&`m&*w~;<1?I?*GMXp;!e3wWUX>e05Tl#OhfO#Srqbb^8%8DB|D128;L0R?aq{Q%V_Clj@u=F_x7T(wKjf*>C6E)ER5G4_Cm z6Ze2BS}%%DMNMHG#*#jTm(?E#R8=;nU9Amx+x|eWqDi@{w~lK<@xruHa5MVDJ9W4j zQ+-hNpm%5?scIBJ4OCveq0c2{CJ^=|#%oirl>p>D=9pomY@f}|14-_+xvLr@p2FNt z3hOb0#M_j^%9Uc*DlSw^9M(*GHq_SE=H zZ}c6Wd0jE6d--6!zoR#a;;{6>#;raav7qdm%gC;B;q%#TBd?>TjKMZwvKNw0v)=-W z{};UhZsSMAPbplME@dC0E{YIlsVkxpy<$+b$t))7+f(2}-i@{iClha>6fH6V3(3l| zwzC65G;NcNMMSx{paBnw`#u1S3JlmhsUJYHIGjI9FuRR9i44Nd$SEiY@d6u1!hGm7 z0wQX6vFjM)In{94go%gNU;d2kw(`}U^K&Tnc>wkIGrFA)^s-a}-6_kx_>-4vrfH5d ze`Hn29E-SDdat!SwH}}=AM4^?If-*H-%Qv)n{h!vtH`E6vZy%e@-WX}WB=(QMMsms z#Q5@{0-xe<%A(DhqS+sFJld^TM|$g5G(tlsJ1tA4YUk$)$QCNU=moW#3~^{(gyMjmx<8k;Nb?~Yd$^qNkb@-XbV0(JdQ z;AKTyPoB^FpF{o&MySuFv3rVEf*g}`9=_dl zA=d21+y%b(=RoGR#%Fj$PjL2C25q+m$ua|){d4jQpiJ^M3PW~5Fk&D77bqjTBWVj1Ek9S2d0Q^4|`;57y*d%fJ?2et^(ydfTaPf4j^hl z_>Bn}#BO|=i|cTX!qmhBzKzg|jTOi}j6)p85s5^lumjZyu>`GZkq6&Yr~F*%g-vRm zU2in}aowgqb>rrWhDNu(o*o+%ePU-m#nJUZqAs zep*(W!%WRH(A{wF6<@On@5#`tL6<2g`-B>NPqpWfOJH}84t95`b^E16-$`|N4?oF& zGx6I2tVnJ2^**FD%wtMKWGN#Tx-^;%v2r}6u5f5=rXmGJ<`Zk1J#LrbS)Hs3V?v>) z!cra@xdl8}&JP>1GuI7%{8%Ud-EgHY((r~Xd%#ls;+vv03`WmZ^v)-AHjU>SP zSNsH1&Lw)HgK%PG9ilLwF?l_;P2ik9al6o+fRM-dUp&m!u80^n;oVdf688_dG3S&9 z;1Z;X{dlt@%(z*-; zS@4*~rW}K{TIl1g{Ri8e?|UcbT629(D=8fZkRK1$vf2|fDGZj+}2rh7QDlcpS=GFmYK7w5gpcrseZUyOupWqb954k z;qV=)6hRVV_7!w)7Zw(7*|f#Z0DkMLjLQJNnX!4J+UE3l{yuf`$yyf{?emCyux(G< zOKUyd3H$pUi7V}AVl>*XZ~NeJUOnY^SxKYz+f@P3-o8sgJk~xjmwvV>EVdG`Lnn` zBmOnR&+Gp;E9>+6dm^cK$iIGK@BmI0`4ax#?W1$fqyNJt|5wuZpPo5$Bc?xJ5k9-F%K~k@B6ptWE7H;{Q3P!_k}{zi}DI;_hC zYq6-+#jT)`nS>rEdnlDOHyIx$m2v1fvP6*trUho7WL#}hmL0ZcnQE;bj|zAHxwE8v zZ3fAnjfFUo+B3K^KLkmFWZ4dlUDZIJvxin zSJ$%Ka{c@VVN8>d?hdK)VX3op<4%lEvLT%UU3Co%K)hsxL$(hD+z>u5c&^F5X{6D_ z9U@&m22V}V?{n?a)UsbdK5NpNme_w-e`fla7rN;TOe}=cR3TouE!oa*s1}~H(^D#s zBt=3GN`2Z}sOr@hFhsEuNovH3lDjp>4a9cwWZAHcNiWAWeN>IIuFI%ZmHq{6>EQ14 z`7T(3VN@8ZkwVKq9mU@n75a71O9~MFMZ?u(Pv?_!9vftry)luKCa&re^fk!O2*spQ?(z2p6F=-iHR6Gz=YT zdH2czl>+6!}K$ zUu(`N>NVL+UuL5wP?@(ToL=)9XS~4ut|mV^87zcGkw{+Ciq#M2VSF~aGGP7l2o(5b z6#HY{=eI-DuQs=)yPnidRS3J?MDQ$F*Ih#r$otQsgAWL`G>~)zkIsP+y+x-ARjoU- zPqRi@v93=0bPO$5jPc|Uv7=B#`36p*p1Pw=TiL7w9^@N$LNSmJ7~yQW{H;Cj-J z;HIhCTy9tlrSX6K{2xgnxFu8!bt#&7>()iwa%L}Ve}RlzBeZNNriaHlZz5fA*b{iN zcrPj>jJtjZP!^$=B>6DF1Qh4a1rD0spid`?UaPG5ZC=uWvnke(yz%%O(ft?h>d5%c!N-i$zB1{tt6iYsqB)z5m+9pd!H#qP#YC3qAZopnNa$1+I*} zOb_y+&gA?Hj_D7USmKUOjX5R?Njm6;i$ya*t@aMy(rZy{rD$#1Yz?#DG^s zEFBsdV=3UKqNMpF>wL=g)*kY2;+G1ho{vz#a}?dXF1I@UfnGQS=WF(P-f8j${8qqE z)bO^xV@ZRN$Ow!DtAxco583F0mlIH!^8M9MJ}RAczl&0XdH7Mo3Oe&1=%vs#lJc`&q>Tkv32gHFgpNjxA(Oy&>rQDV0K6(YWldd1^yybpcm zHX*E!CHq38hoOzfwcn+~IHyb{9B4TqRX$Uf3Av#3sM4}#|7SS`J1E3;fx8C!^P3NI z`|48M@R8P!^il>)x0U80ziE;s{U!Tyd}vBdA*X@0{bz=Bh5%3Loxg0J4q@kSEDVJb ztPb@}z?2%4VkQwW7q*MJeG+lEDT6Z&&V@C@Tqh|Pr+y`AW-dcwBQy9;=_>#7QFd4m z3VIr%C1Y{Q6yY*Xp|LTeO(!Bd>8ujN1sn9{lL!7H&5#bmD?f6{*jqlE4JBdtsOd4{T>?Pn2S?EECz zhhP?oV3E+=+R$*>Rj7#}!u-P<)(8d3FSe|cEA_5HT`N>mrXC+Efk#?JfnAYU-w-2p zBVo6DJJzDuC&mai^@Il*@CW-U*LA-(Lv#~nmW%xJD0&{7EZtZD7k1bHryPtOeW1h?lxxU?MyQafLJ9+sO*}34|Lsj<=69%*8eS8| zSw7(fPPwam1`+nF5vKKCD=DIcH5;zRM#_>hCE19FlGf1UXzYmTXL(TL1@_?sWBDtN5> z;OtnlNOH;WN=bLO5pds`%n%Q>zQ{N(QkqCyBw*u0Y5TimOah_dW zwW!DqqH46eXb@e`Jfbgp*mDD`1YVgBGBKB+BGO0`uWk-NRwoP6v#U)c~&q-t>D;F)BuTe2#haM&y);jRKt7t zDBf&c9OrOhK8MP`S_=>%VGBP~-~Yr;_ybYT={Bmgu~@{J=`S=Y*=wJX!Cf}&pzPHa z5+;gC@I1M+w8ZO&9^haO*{beY#GE^_vhm(dCKX}cL}k*WZ*22p1m&wgBH1{72Z}zC|eKa!F z`enH3Ln>`zJpZCX@&at>C&SFn&`f)X`TKp1FRcGfIEjzH{rMEA2mTr+)l0o? zSxeJk{94fb^7$NczC1Yb`*S#dvNnK0-Kl#Pt$XW;iEv^47~+RQ>^D(MK`Os=y!dv= zdPJw5EMNPfxUuDR>6angpR(kAMR(hveeEGrBdeDCn}^$oHuHQ(hKaDjWhL*^Sk?lZyHpaMHD0K27C&2>f7AUl!z^BP5jQO%sZ-iDLj70WEKZEK=g)}M&i4(na_!wpU`>GXyUI`DYf7EIp0&T zH}bsN-$eO}yI0LNdjGP*A|__&@UU?qv$eIA8Q;!_caZ@v!j2>S6V=-(TE9d@MDU7B zNH{jOl@I>{&&!|Ig&ZfJS%~;vL=lXnAJi3Wa}nB}?*0>gg=Q`lOrpoH;Y}v`b}~dw z*$NHEi(vdyzsdS8s($mLMxG1ChDV$;sc(zqGF5PJk(Kg!O5i#YOK>z1DbbSZk#?(1 zOo_vh>F6^+MTH{=sMGqN<`{XNDS2I<8_0J!FxAJen^Gas-IGp{MIo-=OhsfeO3kI% ztKfq>P11<+-L|70KgoA{=c@U4rQ^gGHV|XODId1(ta@M3+ryuWC-)TyAIs%TpQ6<0|QK-UvJov07JX)j=_Fc6qL#miP@#g@I1SUY0yX&Dj#uZw^78 zl-{$d8W6@R9PRYJ@=x9B=6d6@e!b08+l$=`JvH`{Z=a{CA8X+m)MJc;gO0Agljp&l z4{_(dbuWVX^M;s5~7C2 zekl(xV31_|xh=qHuK4c93S2;-7!)=)5lVU;pniU;&NDG3lZfF;lzCOE*X`bw>sR4v zb>yDO`qM!+4i%Xpw{%dEtRMBNGHvSlW^F@BwaZjc6>E_eYpfv40@fNK@^am}Di^@+ zr*Pa%or(yyKyDU>jpskS>@2{rb^9q>2aNcj=!C1^! zuXt(aTPIPgSpo_==Q-O)!|^Rql!iRl%~R@Wg_3eGsDetfP{mB#hT_+Vq8IuS8MR?5 zr4@y>vv8O3lbbtO5LhYHIE+8mkY!}$a6_dnSF^+R`d1E#CK4L*(P@@}kK+f;zXS** zGn*C`2Cnwp=XeU(Ftjgu4RQ7yeXuDFr4)mL6MZNA*%YbCH`I6BgcmfJ_Q~^-`Yy*e z6MF-hAb(Djx?buRwZ>|I$DuSG=$;M9#$wzvzNnAb zgIMMo^%_QhS?F;ScSv58giV}hbm)F+RNyhl5@MKm7fryNQrXJ{Mc_Cy1erV{z41*} z;AO|WSvpC$oOTNz207HVy{?;Hjr@2Revmb8CUTn?%Y!Zos7>719L*}s`y2>ong2@eK%dvpipNK3cX>iBF zPX}JWH~M%7`QPs4a1{wBx2rdaYxa!4ROVT}FgLCDN5U1ilGe3!zKDIdo7S$^Ui+RO z1k1M9#7Cm07FfL6yFs{yZ*$UTtRWW-^XWQ#II6dw^OEkp zn>W4k4&BBQ*sQtM^u*tb`XorLq#)z_LD;uDdF4%MrIQ4VVbrbb+YB9#@lHg`vDQCQ|7)8CxXhM_TxAwJ5Q5399WS ze&XfGcQSCzkn@ijlHdHdf9pYNzX&wwSlv%pt2v2w{E|L!zSv!^BI$E->UdQc_eX89 z5b_d;wU)F42Z0rn%HO!!Tyt$AIQwmPz&Pdt&Fg&#myY+RsolP15ll+j>j>AH0t=?C z(qJLOgO!!US1D3f1FAJkvX;PJ; zQ<9bfw>Wc7X|Q8Q)C9iX5Qwz?tu~UHk;sacadTGIGw^$XHI4AIHmtKBro1DP(EYkI zBSn^YPzkCUyn(Z1c2N~TY$Dxjb2(%P=S`Ws;)mQuOCJpMKqZP)jI!Tj2O*hFyQ$KtALf?`9m#9=A?>N zPDtejI4!ocekY6xjQ;|&;c>tekWk2m(DRX^_-V)VNzc}vP8drejDK}@Qot!<{<&dx z{EZ63h#GMFkUDDw4*61Sa|*ZWQe`wkyM>rT=+2w7GpK_w8Os(^dEuZ;_Keu%o-+3R1y;M zw9zAK+XERu@cRx%3_7nRDxL?i^R|Ee(R%3KdSY$|xPEpcIgPXf-D+xDFQ3G#J~3y?oMI1G2dz*|7|Z7vc&N#K~t zKe2ucroI2qSpd}@j;L+moL1N@m!{-@ZO~J02zGlYT%NQ7l^R4!P79s^=Y0{CK~1)( zL=MMx`t6;q+(Kz0Q zEpkBisH5@bp`AHy`aWKJe_ajX->?A_x7V9LsxI8GktVL#(+8)v;^3G6()1mPN8pCk z1}{aUQxCMOQqCK#%sg|>*#|NPV$Q@7QgX0Z;M4A{u#n-pGN2KCS|Sk|q7X^glqu0T zIGXX5c^qXwwlV^b=$`w#e(|0|a^kBOaEb+hBG#XOaDBi?!mFfu3ZT(qj^Gj_$4J-C z@kDxok1k|Hf@56=rB@Z;a4590oroG4>qrbKVy9g^vMN5t#H8=dI|hbHNz>**-=l^d z{L3(vAZWrH_`yajY zapmMs2bOeb9<263wEOByOevlSUi-=5b}5zIhE#<;at?8HhSh^n}x zJrnC_>~~_s_tU?|>Hy1o#EN!&QKBAq8lWTTs-~me<)`nd1ZAPTI^XE9mmMdVL8XuO zG0yUjmHv4IVSn$n0i#XG6QVL4Qo;kw83QvMF_E0|;N6kg4xSPez7r(^H6)r$cL!s? z^AhyWr2{rlwUR!7Uw`zDFG=&G$N(jazu&aQ6^Tqxu3VK_cbVt$AHS+ zL9_%oGm#w)GLec31Jpb)-Bie#qf`hCmzpzltD1+oQxr@)y3AYn6Xp_Mp_k+3U8Nl#Ll%39_Y-$!V#tS`@ zgz_{L<1Z1S%42A2wPKq0`(B{nnr1h?nxR{30{I6kJ%dTgS=q4VSrz{N*7e#4m6!28;d(SVx%7lxojTFV1wztdT)|Ex1>I`$(If1YSY;z}b+l&h4U7_E>T|xzkbL{76UnZ`N&*3U-m0;`t>K%NxzG2Ndw1Jx+g ziA>V3+0c4YezA^vj`0fq*>?XRAIK${f|GvY-d4W56EYw&%JjS zh33A<@G^!F#T{tehOL)uYX&G>RuCHS9M69x?MqkwN!p%>&8 z3B)gr6~M=z*#9qjP8PddSRNvlcX3$ALIG_lHc{HEKgn175)FD*9^%tkG~eNRHSYmv z-c;i}hJ*Umi*F8)z{flP;IgWifFn3Dx#oi2$N7a$o#|FwVa3Y^w7c+6z#f1&Z>2oQ z>sq(275e%cC{m-%c)P1LA%u)3M2V4r;{+TLl^q1>`IdBA&Q~4(&%o~ae){eABqN8L z7W@C0d(*fkudRKUwx_j&!>QI0l(qz@f}kKE21w6wz%ZqXGEd47nUyJq0I|mw2Lx&& zvm{jzWQ>3TNeIy*V3;BVh!8_mh8RMKBtQrW$-9GKJE z1irp6uKjWYekIaxIq@N={ND->|DW^tCC(ieP(SPd%jKRoB?8^7Gdpgum%gHssx)%s zbo3>?q`hyb)((OzG92Ki-WbFFrceu6j1`EUTV^@$+a6#PIJGLs$}e$lD2qWFpbwZW zZ#bYtS2&&b zfwJ@OkObyY_v@fDv$#KQ?H3q6$a?P<`r#UNWK5$@%ueatQhi9cH&ygv5}un~XyJU( z+Z^EC?tPPJ-D98(JZG5nO?gFV%GRUFh6+)mwN$9hjt7k9$Mn)Vd{k_|A$_9j=N%E# zy%5Nh7UWke%-xQH-{8-4&EeFyY4 zSOtfUc;!xI@xs5IvOP^ion4USgmo`wVzzOgX|@ka|0tcomvWqN=N99i)qc_q`N~`< zaCKRqyai7Db3fv~VAJU*$1Y1S21PxczcrS;w%3(Tuuom9PaOI6$-GczH_K`EpX*A< zbER!MEqv?!%M51VucpqX@bc-&#Egx==lzlNx7*0K0l@uC?v3hklsA3o$AQI^O<^gS ztzx&4Z&{PX^ZU1NFqs@Ozsxl+_Zx^kV1kD_kV78aa?Sm=c~<<5bjvA$c{0Tno7K`Z z>Dx|44J;a%SLdraP0VEw^HEV+gA#x5kBuk`s0&K;{-r7qH{M%1>6G{emGqOhykwsq zxhy7O!WK|T4R7mD??-s$Rg$84)TfZm!9RBG6k3syeGLJ57Ie%3G&BE8^PVC(|BLOK z`iIrW80VjtXJ!Ble?IniY7WWgU10t74Gei7Rd^9OvetAm58nNIG%x9h4Lw4?VAgh~ zz|r9^8+xyZJ$75+oH^ilime?%RQc+Vi_KYyRc@A!G+ zv8`rIdhU(1?;?(MzC)YP>xzzb4?5+PXSZZpY^mG;f3`-x)AqRyVrvO31sP{S&oB@l z#BVvJun2wPc9$jYDlWIXXdd3PkuJRtCT+y$e~-@bh95#QZRb5+`kveKo+`Yy#h~cB z)`L-tw)vH1`LX687}=f>af3`#T>o7kVlY=9YF1Ri8%agn8$cG@;FHUyf5u;+Doc!8 zZW9B<_H^;B0IBHEY;1l06uZfNdVbE)DP*^W_*z(D;s_ITC*#O}2Lr>e^wtgKuQBg> zcJ9ey0Pb5>ru1GuvzOBh*X_y+LU(x|uMNnnUF12Q_!8#!C;CSxQ{{`u5sRe~(SP<@ zq5Z8oFaTkFZ}Ragee&Ype~sPwYacwmQ4?V z0oogwF7U77zldDyWp%at)U}R2&bU%#;IXAGDLFZ# z%}sUB4n^gSOt$095$<_osk1c6w2`u__%*3eo>W;*cx$g??hm^z4MZ8?2^eP31GM`R z;CgY|>#)RJnLT|yT4P%uo0e8^*yErk!n-2qoyI)FL}khGH#@FW+hM-4R0l3JI<(9} zy4)_Lled;w;4LEy2NtLFmAkrS+O3KP6>-Cf+h`E2Cq4?a|2HLVThwQt_Jl5%6}4U+ z{V)zC3|1rv1^>LM$&NhE_6!YjGUU5%CUqTp9}yxx%B8ZC`N`A*tEQrk5;TB6r}E2p z;*Gr*ek&|zYF$zjX_yV!vrWR!)FQj&kYhVSLxO~7JGVv*z1XI0+Wf~haa-=sp9Wul zwdYE@)#tkc4sUd__Wnxydf}4>*1OBp1{%8XlJyRVwfgDTV&}!IEaXs!zjt%PZp|Gkiiwb|7SYSO{MTQ=C2z&1 zlpC$voNtq5KHKjrHsIicElm?Dt3aquqot1x1oid`rYxy*Wp6KT$oUzG?vDjU}M@U@@LD! ziFFE#N^fS;MdT-1zV98~&lX06sDcA@%l;8;l^gb<1U(#k{z`*CC(j&-yA4G}_5S|Y z=?3yvzGSC!yRc-BL!Z7Vu-L}oKrky`V(;uu4kZXSCb5FkLJB{*-CxXpkkk|0+{3!p z7LqeFB|$~>jfJqfxTIKlytb~u^arh9R`{%P&zU%H#z>L#P)+Ym{jX|gX7tT-4mQcj z2Biq1U))!fWOT`9%2+{1I`VBBKf<3Dl-lcV5z3s27oW5`BsD`ig$1Wg5(0B5;2-IvQ_JG*!zs^Qka_!*Rq`E>dm#L zGMk3M=8Ri>KMgOpt=mU@cnYq2cYfDl5&WU#x8Y*nmi(~r9p=8UN&|i0cfWv?&xUdSn@1cH8Z5PA&G3 zO<(McEi9!vuxwwCVyz5BUs^XOD!kGxLNn`I`k))NJid7Ew|)U~=?5htg|6EWSF#`m zZOC&wT>DxpZBM(Ogje~xI!=amu(F7wcN3I4#Kz9)>Y~75*X#OO#&tuYTVASDnx3N; z@QwYTg5)yJCsoruJ%{y^_p$2`KWgpU{oVoJKSo*S;W`eD81${_B-|Md49PiDmh~$4 z;a~8&qjfBOD2s;T6q5?E*^%4l!;Hn>T85I-C_P-F5?ulNe_AZ(7E0%}1m}5+*#Qab@>6`u3b9B+G{5>2`I;V+Iocy(PY| z6JMoYLfs)1lv$<8JKcASzbQj$Ywg?lQ5*GqYk!b39^67A+n|r)#V!MW3^R{Yr4PKe zH%R_*R$&`C439lgC@!Je)wzUbRg$~djkeu~s+V*+-Hl15og>svgxFH+&y`#QG%x-0 zM_}E~7T>?FLz5Tda9}IRqg!j^^38Uq4G+|$9gXh^~oPan>Y>uX=c3GR=yrN-Q!ErC5aiNTQi~aEtw}$%AfE zN`IT|d0@kC41&Fh;i}6I?A*-*wO-$?j+Mv$y-CZ%@^3@=CPBtUnNohsikW`dcr@p6 z&i>HhiX)gc_vSMkS$WKn$|CySvPOuZM@(|qZusJ@DP!x<>kpQ$cSkXwn@~z0caS1k zJN@g0FK_*}SDZVj@9Cy;Kf8tdg(D@bo}N>XaiDuBuCSo(_~TEs#@~a1KX(Y~uN5AO z-@^c#wUnz9C^sLQ86onWa%u%98Ipqd%tlXP49T#tPSGXpUlJ6~4i6^NyXcOu;*5Hx zNl%Td5mn89_*S+lzWLkYyS<7zsqh+jx?v~9uqTzYlUN!wQR43Gz8nkcRy3*ul}9O& z_iY9&2s^ZG%~YHc9UoRMMP6&dZ@n*=Kf+>Y9QHQ-_iCbn$`h0->il=!u4=L*$OluN zF|<8oFuyjUWmG><wMX-niLC)ab9r*kGqrelGx0rtE(agjit%gyUdPFMm{c|2 z6XguecA;PdamV;McQiecyOMD%w`_brclw@lNMWM)niiV<6~!MJx~96Ct5$n$Ep7_A z_l-5zH6R{&e?Yg&4RL5`*dZpYHUeDqGk$4G*7u%#y%aWhALT9k?#04dXT5@x5&9N4 zGEGUPNg?1mt&o+}s@yXz4qW5GT8rOh>R;2TxrvtX^_8v~9ew|LZS9eo-~W=H$T-b?iS4z}e0;p;1+zI$ z`eI0#8kG-;-=G6OC|M645`Pv+P^up^acpLc`eocF(E-d98 zXAZJ55#ED?eKqOn=@1gSI~;c#ECqeF@b1~W1|j@|zgm8vgQ3gqG?HpZrz03>&b98j?g=TFx5`;F~sp^1}MB&suk zKH2j;xjvX`*D3w2ORDNoSNx{?fi+nR!&an^#7qUvxNJbV{?n~c9>9kyipPzyj9^W zdFwUKyK6O<5UOi#7t@EPjMX1Q7943g$3q3VQvh)JH~#uXn8e=bzLkY5sFH?dSP@Dsf!E%7b|nUhawn7=tL`zu*|H&lh|?>eiFx`jmNhip^xX9kcr zYw~?{Yl2l)Cm3|20#$j}8)E~SgGhV}?muvfc_xW~jHDQkygp$-b(peqWZ<6ZdWSN!*W~5vdg~B|I69%DU%xinX>=iYjv36}u(*sl#LhHWKr7 zM4p=ZP%!ipJS58y$;o80;?!%pUMCU?Cd6h4dXg(|3IorXG zq;DlpD~hwF%{lb?v6rRL_HjA&gsM5J{7xDBg|e=z^N)5x%%DCtx>Sg&x678J3BG69 z=313|Ry>Rb%fbnDl2#B(m(K_o5Ltt)<(44vL_ET%zhgrWpCcJKj(mu^mj960TWpja z%jmhsZZ6frRHRd6Wsg8%Wc$swl}Rpf3NG@?wsGc&5BCp5v=oFWVHE^oT>9X z$LcV~Tr@pZ<0*oyT4J2t%gS(`N@roUn=Wl$PHjRIgcP*;R|&d)WV@NE&tM72QV40y z`EBpjQa@V&3g&t^4_{GM=cLFTSEgL-i*g?CfVSQ;EXc=MjAN>^GPmn`+LbWQvQEdl zi$~J$2PI+b@4&_E#1WYRe$brj*`*e@70d3r^(Abn%lgSPd~hxUqs!gxsHlITbq~vE#aPd+T#SRsr1%(We0PClrbv(4^-HxPrBFXaHk~^g z{clV+K4d(9a4(|Aa;d(_`|MsRc=N~;wiDTg7ry#vbklzaqLV4mh<^d`i)Y+dr+z{4 zYv=XGuVu}k!{QZ(jNL{H-buJK!>Eyn$sS9)+OdYth#DEK^K`yRMXeH~aD}B!EPqzS zczdZZ#^Y`${y~?ROu=qC~utAzPc)n}6VXeekI8XDUiPQPK{gGS3k{e)YrQy~)s}&gz%Lv_j@es)IjR`DW)@Mx{C$*HmfwzX2^8#{)VFy;57Q*&1OPtUZ3} zLbNLk3J(wO{oQF5YIqjKamrjvaXug@Q}o7{!G6-wiRd`y^Af$v`Z^@jgrbT6*Kb?L zhV<&6T7|J1JioiZl3*8(xM$JriVGGJ9)y?YCA1vT7EVo5SK!)}kxE6GX0xyoDf7xl z`27x?g=BS`mq~_799ydD&Scj2#&H%jJ8@hBxd-^B^=CfWvB6@yb9%brvteo#S?#tf zvL-*lAQFV6+QDt$iU9KJ%n830WhCeveCQae$ekaR9`F*G_1D=rNP?w0EoZyUe?8bd z`1ZOpedkVAFfb;E9@=2;%uU~k(38R)^-N2Fg^sQ@RcNk0A}Y49N;meu7nF)?zU>@X zLhTXhEm6Uf3O{<1b_s3RJW4-#@E8(A6^X+oc{sDa>&J96rt!%fALhB?YDF$iFJ9a_ zRsH(yQhEHezWwA#nwLY*U7M|L%?^wioHe!bbnSF8@@uWf*l z5=I@`Ze*^}x@58luMJbAQ!X#8Su({ghNzl?64H$hR;)fvTEjN*5wT=2q#u z8%xI>_I#ohuyd6L1m>wdFj7`EeVdE)v-S4&PBZzHTpxk)?1?SyY&lqRgiCf4rwr6a zupbOYNNvE|4*vSTByio|58u$tj-OGAYb%#LEP>){Jw9^a89M_&?i%pz7Z_;H*7x+S zPGSplsF>rCyF8tL+Z;F1m3K7f{FfkO5@t+^ndRx@3tmM=mP-k7PC2LZC$?uq=VSYX zEIV&j?$JU;ah-)P4R`vOeb1X6E?$VeBL0A?3(?>p_wucdWucvAsy$`Eeoo&5d=dBp znNZt*xXCgAZO`0WCOY+v$@59ijbnb2cKw*u#UilsW)~ka-ONG={E_Ohmz^X8<7V%u zKH1ql)>ofz!L_a@nWZ#M*B#=bovna!MYuxw10v_MTzv4e##^&DiqcA`NiU?%tU|U; zY!Rz0p6)gW7P)-PR|TBa7d$Y*guCQi%~NMoh&&r5`-`^3Pdmpa0PBQa1pksL_0DYX zsh2 z;fo~KDie2>^$kI9Fg5kc2}UEcdXp|-;s1WtA?x_bQ#i0))hV?oPH(%r(b1FPYtt-- zgQJxT$}F~PZG)f~%D1#_8E2O!*U#@KPq*5T&Q$FmJxz9hVHX1M{N_?u8O@xC+28zT zVKR*({wUyti25R1ieD7B;e)xGkS**CrmI;jtD>ahO!BRu?g{JEqj~CNL9_UEZF-pn z$3|x8Tfd)+^sYB-Od6~8<;&UNr9Siva0ZsA2$MSy>FK++t0P_4SBE-rlRR^zUXd{x z>f&+I>g$K+M+vKKTL=5GRW{q%gz}=>J{qIjhgc!uy7NmoAvxa}@oFB1c9~6WIh2^3 zeTOie+E{m?2>uZL-|@7r%hLhTNNE{^S5 zSb#Gr(-yZ)o*WW1=4jm8OYYn2`f~>~kt3<9HDU6$8i)!4tUtsIO^YFyEeSqGy$^{3 zo4SaY*vj&Grw+}0VA2l+r#bW_69OH=Ox!^{V!O#+QpZX`?BS*}ePaCZBfO)wfxc~B zYCljX=~@kr7S0Xvyu63IFAw^%Y)0FIpT9cqsk+^1#@Ausk-M~avpvi;+lrCJ{xmZnEPP+*^>mN;&(pp|2e zg>D%wNFeGUW}I@ID>wrc(;0t=k~@Z(H09z$wv8ZuI;L5lw4=wr);v^}Si*^qqwEN= zJtjM(b?F0dQW;9A!hBshy_URKG%yJ-_1EsQ=XP~ooG!CTJ5c78mD6uSbm+*c^dRU= zH4oZIT|2Y;_Am>{^l}Ya*!CgN9^ekzer{=ZnDwmWJ8$^9(a}!fZX)``N2JG=kOa>< zK};koJ#X50a=P4_nS7kXOs438^h*~%uN#qgx@tc#IfoUt#*_Nr6kMlZR=@&2-r{t# z{aBJy12UM}JLIs4NU!!diC|^qfk%>JG2Nn&3+p=Bdw8_CzI?}t?P2s%a(}Y;*3^J^ z3P=^s?HFoKdm9&+Es6#z*R&5bsxKuy_`x#0;t}3ipA#%AG;usO$Xyp}XOUBYw3Rm5 zkrNJ91*5Ca$ozh-+olI9bC3U62^HqbN22V{-IwcLMt6u~Z@=+xUd_N~@dX6+)TY&h z_g^sd2%}(&uZF|bs{Ab_$}Tae_o(KF$6;^z&mK<~Yd-(d`aPdWseSvS)D4c0IlcRR2X_>n=_4O&Z&24KwU(HN`B!jlNUs;3NsP?xycu4s^w1rijxuCm z-)V=Ca}>SNI%ia&<6!>#*)vy%LL;MlPcJ{xVH;$FO~Q;mXkEarVe{Q}$N!9D_TKsl zM#7QX{7;)P-=cv#iz$8z+!rRLs+fQyQ(m%gUzf6$hH|5_aHFgNA5;~31oULKC#-Q% zu!d>+fgyrmi1L=BIWt+SEMsAp`C+TVlCP<=UFFn4v!4W1ce57buIcRs{JImJXNfhf z1Yq)M7B91AudVjx89-Au*8(=ll=6>DroCVfVMT=R#{J}kfT>#VbBc&Mj|zoFL`P*e zg-{YpL|%C!NUT`bZBpggY!nV3dC)Xbg6?2{s&z?q7qk(e;DHNY_C+p3g->2N_D{MF z9`Mf5VZ~98xiom6!$eok*z{gBIF|s$yBtDreZviDZrt$ub6pRayrrR^dV~3cxS?a2 zw`?lN1br|&SD|+-xT#h}7(t#RA%~qlZHADMv-ci8)j$aDgzrV@AJ#{MqZ`gJynu24 zogIE+>{J!kRf)mGlaPbdFcZXI_XlYn^-?cOGNm=krb7Bse+y{vYGME!HK5Y4T}SVo zTE$FWfer^m^9Mt_SyclE5VG)thY+mW@g(U&ZpqC$HyO=U=ywBTbkaE4T}Zq~%obpA z=6`4X9?&$0FPvqZaUEB)7&|C_&^H|2=9D8TAde?mW+SWM$j`I_POo~~|H)|o&ory< zjcx-dmrVATxsC@qw4ppT{e5Ym9{gG}FCN>h+v58;rt$pif8)*^k6d6LcCI1!?tgry zS2$MyWOu9Q zkwwbwMw-ANm@HFNW;dY#DH^%zlRHW{$E4?qLdhk!z2F=&u1Whr*YGBI-LpGgKQb+< zl}!$l+p(uvH%;dHXGg0-gT?r(HfIWP_xTs`;*kM6Z&^<;*VQH-wD^enGV@vO)}X@ zriiN#61IhjO$Tk$*h@Ql5=;996GV`Bjw^`SFzvdFsnp7W;2sHos0X;6wW~vY<$G=d z(^mFfMv}CEm&CnUVtcr~E>!ANkwyHrvixsm_Zv4W=}9Ad*NSpU*D0{&o zwq~8&O)9n7Fz~R$crvuSD%7w&_V&Blg@y70*b0##o_6hd96~{yJdtKUP4*vAnm6zB$|NysLT&)E0s4( zzH@?~3_T?6qCZ3y0?ahjc1xJDu2UFF@6iu5@U2*S2BJP|z%{0I*ge#r=8LiIl-qo! zb^gVw!GPw)nh9?^!eNha+bNlzk>klS%FDEp(%=(pEG02pl$T=xe2Lu($l3v<1=pO} z`+<%|UL5VPn6}QD5*Whpa&9a(QPd>ll}6d(Cu2-QXjEbGT$~jXbB6=u=^s%_pEyNO zW`AK-OyEh|5o^gZS{N_6Hra{cRX36s*N2{HtP7IU-qvn9hwfg^mHW+o*XffATW^ym zfI*&E>CN;w@A+yUmzX&OEN^TQIgO~5jkQ9CxXyjB6j$7nI%3Y)Ge>_yF}5W=ZO>+p z{ZeLcS8S`iGX7%SajxuFUlAWk(C7&7JN}JVII3|G1d;Nt0cRs`_IIpZvX>bQHH|jH zEu(09aP^CI@I>v)5QRGlGDLfK4rjDM3CDHw>H8Qn(P&rPC~vV4Zt23Uz3TeOdKx+; z%z+X$Fd1#Z?E>jYW3d;TzmK4(y|C^Rt=!K)O53-pN9l;#Ig%QUQ&pi1tQW7dA=YwA zG@_Q?kQ0POS-}%&kfrW!h<1C1{?MbDw#!872H35!J~4J5W6-qOh|$fP8-y6DC;c7! zpotM9hF^RaKCHfQVkldZ*kK;*3@~QP?S}+Gn^S|^H81x0KJ+l(hk!ZZ$R$spO*@34 z;i_cHlejCYMSqtVAwubc)ANsK`!F}< zKCKn;UnF1Y7}(`{b|}oRen0sZiEP76QatlQ9uR<1ZKdT(St~!wxxp9xsu{9@h{oVX zs+i8TGsDr&F*D6;a8rJbxNz=JDub+J3v{Mr(X*7+TNIVMFQ-HHFj1xK;n=wvU@I&XVcN|Kh1skfogFLyRm{ zI-Ich)*ioBwpO@qQ{>^6vD_hfGaq)~Jw#h9U|UTDX?oT*bAFeapa2kWF7MOuL82d|eE1yxrQ z;k8zez-|gg+HjMUNql3r4~F9JP0AS?;?4QO32GXzU`!A8?lbtjVrfj^YfpbV;)k1> z(rHR~F(jJ7h@B-bhU(z+)qb|ynqvV%=tkO^GZ^BeaGX7MQ5S+9WG-<$Z=3D=edMBU z+l)-rHMqlfIejegt`U&+`6GU@tY`CK1?7_|rjvdxf@(yLG>o3AFFQ*B^wD)+0#O36 z@K0DtI5%yc`uxB~txNH%xT^9vMbtq|`jOEpqZu+(Y}$UtsIH3Cm<{C|jDf(hvE~fN zlrekUOO=S1@@{x!din{ov@W73m3Mpt3v4n{J$DHzFLxjJLN=HxC!!68ctebT={89D zcpb$eTOTcUlH9z`Oc?a*VblibhC!P|dNuzdwi@Hg~H#{wF{u z1I4!ft|`;{7Mb*N8@gqvtvz8lt;V#`w|292rUxxZFo9pVCN@RI#@aGe@2Jy$ri`riU5+ttx_S7qzkq}A-_5m*1In8|R!EnEr&a;l zJ3S=FddD8Y8mltNcLhF(MnU!KN+L0#!mEzIUF(wPDhs$inGz}cOAg^+&s#Ej9Gmwu z=8>?Q;nw6cmZCv6&4f|NTjH{53DFoRJ0=prXSdP2clDSnBk9B-{!BZ5t;_9$+hV4y znedo5StO^JnLyo6avW!569Qtr_>ylRm|Fv{SHF_sbTD(m<~L|AID}-A&*uTn4jY5U z1-Wt{1WH@)uMf5E`7xI52Y0m<UOLR zqfM34d{SJW{<`_zQVQ#8r}Xk4yO=OdBdqd&&l z*hzsnN4kQu+p*!3&Xu^P31CW5U<} zKp$s!Sqg4SFo)DKAWG<5Ek0P!3hG6fNk75G{gLnl)xxhn(0i}>S4;g=5{OlDH`_;6 zZl5yljJ~q9Kj(#kxM~x4n=8Ll+2o zfhGoh@VhBwXlTSGM(Q~2(1)E>O_wGWx|X`=Yry?np8EjUU)nX8u!0lI%{WsxU_XeM zPONA{TbFBcq+eKYWQXg~I*;T&hsizGX}I$Bfp0>G!c5R@VcfK7lnx*#Ry4x{I*W0f z0fk*2#OmeEAaz+OE@C#ZG2v`OlWLBg&f{?$V_v&sEf^EW??x_2J7=RDV|*zhh9TZ3 ziKoEbPHNG{MT}f%f3k3fB6=fMMd1p$TnGlZ!BG@9D@ew|<_D=K2OzZW?rK9`K(1w& z6(K&q{|v&s&=!+0$tGCGmYmfm-zx1&4a{$|T1rqp^6^GVr-TQXm~~(Y zt$Q_O2>b4d4<|4Vn0#!cxYtovbsmT3&Fow=8hx=h4Hpp=F*c0iw%qVeNWjfnTH>c7 z3lX&!gdz(QjT8=5g{$_{=QcY`hVHP=&kiHrsiumXG1uL}$zj#!$KGzY@V#>MUdu3h zFWPH;V0Bdz?1}t7mHrxtKrm3t(Xaycr9COIE0<55w>jrll=aj25Lb#mzN49 zPOoD{B76_sPdGHX`@uNeFC!!XRrKpA3wa0ZB_<{PFrkeY7gdX&inb0 zO2)orMQS&2Zx%Pu3xcGn+PGPg4}&}s2@QlEj~W5OIz51e1d-8(0)JY5`1XgdnLsD; zEl8zMF3YgR9T6L26afdB~ZPHoh=3G~VN;*K1k6yUH@LxXj4k^-bm29x}gw7^s;}qm>CogE+K2zP_@9RSDatrXY=r zPU}8v>l_@y_q82Za8-`WE|=;d@aV#0e23dh&U&p!DT<}ID_5Q#uK!l zWJ#+4gi>i?cNj4HqxS8$i0+EH-TT#mhN)d@@SPCEtV7CdGD#kOatVxyC$Qs~;7x>o z634DFlY)AKHE;EJ&o;;qH8G_(*h!oktt^3ft0$3o9kqG1L#_1rVK9Y8o-jrJ%2r4_ zcFcag-vCum0%=c?7~-c?z9`jlUj{4qR(i<7x_&7 zaP$4c+DxAsyf{wIfvNT{bPEcE!6Gq zSW{T~cGyVqSd&3vU8k3*gGrlv=ufMm+p?O!FY-5Ik>ec zlcl&Rb*cJRu}ncHLWoNdxT$FaMpc8s5Edx;W}D}{@nZ`!!mt;ZcTXVh*wt-aD8Z{Zn!rVo&ehnWvU z3Db@BUa{5MI}3+*W(!^WP|*ZwmpzM{XM$z>R#}%qNd{Mhz|ZZ2E2UZ0e8p$Lj< z5DP$|U7xg9P-n@dkQ2bNm4JRzwZv3cDb*Y_^|_lF_A&;xs7R|`=HcC*z5?fp2=0d8 zpV*G&gB;>*v@#1~)jUyve|eE#*jVoviVf6*M@O5&Q&fCBP^dcKtZ2L8eiGc6z%I(a z?cHfGxp2z)XhVj0$qzR&KmVkwMciNoq@%U6(@bZ{yJ+)kbH}tCX!r*}rtZnnxNoE*Yj+G7hWTHyEN-R>?@5c68HzxcH_$ZZ=g; zF0#juJz0Yv%SqV{2MxpVVKBH0!3mcFgPZs{;g~6w@E#%pS4voXvlfGaCn^;1MNPt2 zh~yE*>cr{|a2M4pb@tfX&gQ6W!|tc=rMotf1RAkJ_Cuujx6^$9=JW{nc@0R*TjxLp zH&3vlw>|K1540;Ig^R0R< zYSP8rlpP5M!`!7e{Z=pkfV7DFuC!l)l5K^a@cK0h_^t(PiZx@VAq9&o;3?@{Q^voB z-VoPWCnl-h6W&RLlIGMA zv;tAs6#Bu*DmVBmnvSyfZL&&g5#nE}>R`mNJL)B@bBtif^mt5r_{bkY(he7#4=o>J zp8;W;MYSl0fpi!;Sy(vcrQ7ft)!#zYzyn#EHqJ&e!$U}(>0%)abL<-={^h&;=-U*D zjILgCrEmFZKi~~zg+Eg>cf*8UddQlyIok)(PJ5+EmTvJtJqrRrP_(S$Zl}ioUpl?- zcpvXz?OU^u@n_%o-yR!+sj-G=WsW)?hu})1aW;O>;Y1iTO5|(sJ`^z?#Nyd+;8DsttO=tECdKMoFXBj5C;3otGV30x z=4lUpTIDZ+sIvbdjaCRCN+&!4U|Dd`m<3~GWaPhll;ky+5 zhPapSo?nJXQDUsYR5fIb>sdk2v;9?Y!c0!HA!Dy8+7s7l59}^UgFIP87qe|^akGjg zh_<#iJVVDi=AHCKO&~n6h3lg63LdN6U-$QnYox@{yPfv~bH9fs&Ysh(OY`ZhUAHcC z?YhhjuF>cbDQ>KwS>D+kmg}mGxR+k?BK27NS}at#yZ4LE5T&p6qU_9IIGJ=%2j*+5 z&p(|qU8INHk5KU1Bu2l46Xu78jiUX7l>`^BSh;KOxO}&jpsx2oZBmwmT!JA0w9xgO zwhN4eHw>Js_)^nNfBt9l%e=S+uH+qmpZ^#8`fvH=`5N4}QLyyC@{aKv=Z~Zm5850i zSIeg+w$n`Ub}%j;HI8Ua!u7MbEO>YUU+Q!63^x(H<(egM@@OGYd@p-KqciW+D*gsz z$`_Z&50ut9C0~~cDFexbRH|M6PvoCA*g4dCP?kBN|>B-J+ntz}#3 zTdS&gc|oK7d(#eXe)YTni7Fq`CzQBW5Q3p30cE&5YA?lzcO@>5cLA&##jn(jH7jn? z)H6K8p+&aZ2Cg22;&qZ+!ODdsZiC?v$Zl)t)B*@dS5*@sxb(nwT*S+ZqfeOJE4mIb z0vRkfNVt`kH8vqm49DTIb0mGiPFqXyrq8Zhh&Df3`_--9as%g%1ET9Mn!!PA`fMc7 zLfm4qY$FeZc00>Jal9S*lYd1vMO+9c@@L4Cc7git(S5QWGv#UE=TEHm%w|M`$S&mv zMv>SCKi2V?%+Pv~&%*^ZSRIcMDCH0gA4Vvq*W4_|jy>Co-DSHNoEf15BaD^M7qTIS zBeNiYk4PQiyB395Yv3PdV&NG{1HQ4gh=7e!MB%N<7s>4{UKoP}|BC6{jq&V!W){fX z$i|#TCbFv*Y-M+;yas=1vx?}MhRo_5l!>nc%LS)A34>% zddv$|e&pgJjnXakCiOGVM_TFk8_1 z&b{ENcXS;k&tR$=2ue9chu6xRw)RXlEjM7xM-Awq3z4{~bx}?+@{VJGrd|xH)@Ku@ z*@HrT^gJrr9mmItWd`zR8`1Rtapj^vKb zY*4d(ItwFptZ~Kk#=J3om_!dArJj$5U5t!I$zJhUo*=_(0#R{L%=g;x2v15pT^*mG z_$yi!f&>0gXZ8XV6dh_vSYMo>x>F26OP0jWF-q^|qH$vvf{pdu=74_9$=DEa5+AzN zS5w7!knmyr;SIhQWpt2XmFMU;zAIB_UoJdsWrZ&_4>wJ0hf3}>*56T0N8wZ;-yQJ~ z*K0yr?#RAT%Qr6yQM`tC%HGDq(r_2OM>o|cIRsF z!~3=59^tD)05Wuu-$7!KVndI?5Sn3SFr=C?jM-ai*;T?_q_FiHrBu3t!k&(d=6h9( z1j^xsp5hjCDqSSQPuZw0;+|aFwB~SzE#DgM(j>_OUp{c%S z% z_$kr!gjXA2hJV*Ua&5fNBA4glxy+wkYFXLazx@AKET%>b_g~Z(HIZkC2XhV(2Xm)z z>3*hcm#J)UTpMLZ0g$$da*|{)qyvAr4x5rU5(%$%Y_OFF;nKtyf8c&D9tM$R`rtMg za4SkK&$+gaS`b8HJH{xhsko_>MFf5dus+2NjYD%|+H0jzqGPP{`lB4=!5d(;Ep#rN zdE45x21l73>6Q$wS1f}p@@ho}FkJOgfX!z8lueK&O@vH=G5!Rpsj}6yIZBzO5F`4) zOz@{*LP>W}-r|ldh+>0XZaC(~G_aUzk!_-&Mb`z)(B{zqE6S!_bkkP>VnMDl^ z!TUHboN625?HFxU4eUo+{%sd~?$hX;i+z!O+mD(5f}fahXk(gK$Ak5{h?#Pr9NwH^ z+-O#JkSej}h;Md*Lavt6svtr$z)OxffYi0p*ffA{Yb`CoN-BzgGJ^s0Bri%F?Gg@w z68DQJt__GjTpY>T)gCx!Z3F{|APY+&u?@-&l9Mkh{=BBTPFdA;0z0oljh(}#rsa@|64apErGRO> z6u$~`G;DWUBnl!Bi9yx)bt+`Z$UUYC#p!vm9#^2@2%gQ1!V^IyZ_%AJ;q^u2Lag|* zuFW>s%hv}A3gGkeVA5w6b24a>EOs}{=R$6j_QZtQ%iVJ?Y9KkLfJr1icNZFYM_5rj ze}boHiGzkyk|~h>VN(48eb5mf1g@YXBBj6k7ee?%r&{Z-O3hqto|>e|{H&T$W5+?6 zdOlK(#h`SJhS2OaN-NpOTr-ALcyUvE!g-%J{ns{~bNceDKc0U5rNy3~PWu13@lAdC z-Fok9<@dgyQ}tf|>FmEg-TiM-`PKTTS9883$GM*R=gBP_PYhQc{%+${oq{(9=gB+8 z)iexk$VyB@Ew94xo1I9ArtJSW}^n7d0RD@Cn{2{6SJ zk-Y8S=BU`EKb~doZ8-9DzBO&8&*e{V|HYF>B4ARdBgXXUcy`aQViWA!Z!iC-m`{&B z^7Lelqu_XT{=lp_%xMAn@tM`a1 z!Br2+Xoh>&*zY{`(p8T`7)!t5t>gzuoXBrylz9JZR}W*=_H{PG#XSLCq*)zLYgad7 zvZEl@44F^ZFd8 zARj(BULpxMQYtBIsO&qj1+1(pAlk@R%-7oE!lz89zPKKd16kQl?l-L^S2}%jq z@J!l7Ea0u-8?e*Xr|g~Vz@~vaXJMtY<%Tk_E1>^%I1yt5clr2qi;2-zi86IDDi`*= zBY%&}1Sd)bp5k=rCpfs!cF)5{0&*nN5%y`)Ia(3!x3EsKAD$Azy|-Z2dX4C6Wj!0en;0WjFX$-o7z1jT`Q7G+E7=f(3kf{R1pu z6zP8*|MUk`!wLS|loE$)_yJQxY1oy7$e-bZIBt66t5~_~_|L=6@%UUdk3qZQqDMU; zpD!3W*mYmSlQ62r4L*|T1eAeIOj7mPG4bpkdQx#Tzjl10CRbLz2%gGDQDdjy_4fMy zeJ0Q75@Ek_Lx*J6bdL+@_cCp$)2jW+sVDcMSC|fbt*$N%M)+)G)NlpRCUW#w7%a4Z z_a~R#l!^VV;R~Pectc?}9?!t3z}Kd#I!{nvRVw#iI&U-?$pT9gCPZn${pMdd$BkKI zPZY2_YY71n6Loc6ytFxu@s1@FgN_wIxbE2ledNH;U3l$;8gfsl z3Lck(aRUe8DSmZ2aI&AiEDV+Pxeu>Bdpmj;tcDvVQYWaNw_-pta93`1hcIL0XVa8= zHMo&D~ZV)dOyM!x>_ zy?ize275lx(zxylekVBagaw4T?Swf?o})|}7Ue~auz-)xB^SIIP(S!(6}w%2v^R4A zeF{`(OmCa;)wiH*o2#3k!2&)H5%BnY3El7-{sx7;3szFY#lcD^Vv6u!&-cLns(u>G zy=i~j84|69O(vvhvq+toNl1hBlJezwR&#dKv_dS2w ziBCQ3WBe_}u?FsBUa@VAd}Un;pBg-DX_O&uZ^CPfBY^hmBA3{l9Z!1g-_rck?;i>$5DPCJr&>xSl7Zyo&!fHaead=!PZ7)2e zesK=iOUGmNha95y%d#bS*cIsp+~JUlo(x2LA2@b9W6v3p!ZIG}<# z^5SUNr`|nVj2qbbgzNYD35(098z*^x%HgqAYw>8DL4h`dV2S zBEe7&hCm>IO{>@nYiVf#6#KW9gNU1@9|3ncH5me_fupFE5+F^QIc3}Wvc8&7(}oM$ zH&e@eV+M~u(00mU560`l;p}KhFyla=_po)3=k=n4J$aWZK9?9l&g_%HRdW`e?1$Lu zRW?{}T(@a7cAea%`%_T$;uF$iX>blFCDlE9uy5@w19bDVz(J4H<)4?MlUo3w;ov$= zEiD!}EdgknE5Vy@4(oDEd3Cik3|MHAj%9yT*^mW8YsSG^`EK=NUVI&X1(54xAt zQ6ns$#LD#-xX)Yci`endJQ3q7&2*8A=1L8%v=u-vW1CCdOFXSQ>&Dw=J|)2>tYj2< z8P19Nf>~}=6V$!7AGuKn9xa0a&X#F7U5VE{gM`fj7p53 zQ#&GbmZ%Vttg1j>_|Xmhn%5uk~ry6p`G$(gaOxHLv*?MZG`ci;*DGq zKR9*VK80nGGLk+lR`WCD=ZSUIF|Ch?90ja`j9af@fb4y^^>Eugf!%8ZiH3;r@UY)O z{jbD*6Ex(0#3Yxq_2tyL3If3Aenb?WHVmJa;oElAjkRhZ`(cG<+p~$WA%Z<87@A%E zGSh??wb7P$9EQ65CI~_iwzu|7V!t*u3YF_1PtCHSdz=xM8aqi z=P(UrJ5+Zim?PMH@Wh|KZcnw88UEvVan=OMJtrEW+rz5L&X<>`AZ>YXEd(WAwro!N zjHh#bV~FH~erUJ=)f|LsGSn=2ngriVOZRId{+OHdz!dE$5K6lu+x0s{>(j0#F+JW^ z_*^`xpif}MblVi5r1NA|FG>XQ8~(@2pO8GA&izc2gh}E{%?`Mx z_Uv9m{&voynS6jW`d-@cFhi7=T3n_|I;VitlOPfyxQvs$W*h3;gu9kwW#)+oq7*e` zt>lpRP(PqG&b91GQA$b^=(ck4}bzkOoPIGBgIKr+9S9D!g^3k`7hDDG~Z7BA_A z^c!LGw8Urq>7#XHV&%%Lt;Ljof6SSeN<;!!I&6ce|$$c73G3 zY%V**{<;H$Bx0&N)|XsznkIxaHs=~Vzf-5>MrEjccxK6Nvg%PU$WJk#)Mn>kTDE8;n@&rwvY~gg7pG+S#f}|;{z$u% zH73cKt-Xd}xgIqe(3RE19`!Jjv8L>i^TFNffmlT`YKZ@uzgct22;IDYXwl)KX)zV4 zI@VvysJ&M97&felZca!^NR?z9c2RL`(Hp_-&J$0kIX&>wPO|&U7Dn9K*lZpnlW88EXg);jgLOjanK2c0K8R9n4c!1EUccUkhP<7hz zv(g5Ogs&u-wP`L!CE|D)h~yNff90EPK?(_U*>=DwAw1U52!=d=raa@<4FXiP16R4c zi8C@4-Gj*q>me;(GB@NajtFZi3<@xswn$Q~a^uv#;YxExD%!0|Aw8Nc=xmCrN2LVF zgcgnv^wWBI)Qdd9N%Jj7gTBga#o2>9jer>_47+Gebt~2sr!3+EaV^9&4W##Zq|FX5 zcKvUKC89+3uMd0xyD*6^^o;_PaDU(JEGcRIJ2O4ov6cspAT=pX)}5z`;TJ2AV(M5n zX15t*16_e{r5Q&`S>zp__CY%{RP=Y)MAt@TIliexDLB?}Y8E2$eVChtE6`wNwp7sJ z-ycwJtabNx;9%i`C;DWOb{2{L(95zh$E@pqlZDW`hyTpdZiJRMlvZ-Y%5i9MtV66u zW0H$FojE;k)uZYyN{*aipUw-Vt>b~K2(5xjxAkIG5XDlmuXV1oSxL%UB!v_>9y$fOrNn(&_&>SlMI6R z(CQA#d|?m!eDvN|mUr9~#W@%!1STonq^>Z^zbk6zrnM!Xc^9;6LvlXzJk#5T!dTFJ zI#%PL9?TQN84%4Z+r@?70`)!M@nQ_P+oUl>bshaubWiD#MpN zl2?B$r*40g86&?=`?;+>;?>^V4fZ;}qy**=C9~E3eEn2WQb2ZdQ{uj5|HTYIMzgYx zt)LU$q94m)T~BTU#bM-qcaUKTtx0p)?V$?Df)_UEh~n{HVhWmp5bHEoogQA&g1`|z zJB_T#>Y3+p@_Qt{E9p2*eH3MzuI(%eykU%Q2p~A;-+J^{-?Ex;R{374+G|-}eIwvf zQoH^%1SxXf+JV8*0q7vuh?V?M_bfm|PP~0%lJfA_n@2?NU+6yTb8jXa5ay*xy;0KV zljV_w&Z_h1%8X%tnr}mKpA7Y-^px_jIWnSfR+HX14m!mAS^^?oiRw-p+H_Wx*E%6h zCR=HT61b-g{9n5l21XFHUhZz;#7*BcCalf|z^8mufI5;B9edBGaCZJR^UUy2qM5u; zxYbfwV25 z9QNHt!G3~PB-_&M~HQ~8FZfs-S#rjeVcbP*~g$S z%qfgZnbs?@jZYTf&i8UUKj5-;OU~8vxm1yUX9h#2Zy@;o3OpKQ9qwyj(P5r-EokBX z@_BaDT+J`^5si#EqK|ruf14Qxw}*QsTlh)3^`%~&|LYl#e4q2fX^bkdI+fE{)YAoC zZWdD&ReP15+aFsV{cls2dRxBWWA~-SdCnfFgqs;(3&7Lj@t_=|v{Hwj^3?{sSzlh5 z)D{_98(v-_Jk-MV51Kmo&b6U?)-W!hrQcUj;@76cAH$uWGy4};reiePiLK>6U*1t! z8c5%lOK=b@C~+x5177P-dzqS3%nQAm$d_p^g9}T7Qo*`YxC1=D2#^)2`xv8Y)R2t8 z6z^7zujS&nH}J#5!zu1sx?iMF=4gvhC_XbUdS0jCvNM(WScfZvywrc!lGgeI0elCa^I=?U%dcDXx59R)I9z)1Y4G@`QBVn}E4oI% z`=@oL730?3JyEmm_Gno*=J7b84k9G`0+XKVAb2^rFlpg$;3$J&a^i~hOB}X`6^2Fj zkH&&RVdIAL3Hml2d6#BC4m@WrvM^s~?9ljWsF9WR%)!py{sx{-r<3o`68%k0 zC3@2WyTmwje_7L+F`kz}*CT}zS7sK*zU15wjuB31-56xv;&ijGfohfR0_Nid7rtGb5u8;Aa3SN zd88ATc9kB?2^$XYzdOu%6o%33SB;);xi)nJ6iU2bm)#v->bNSF$0@($ChkL#^<$`| zb#?5ytuJrQI9e5Rv)!rAmZ4b~Hmqi@w)W~v?@%SK3^jbTpLRR60nnsdFS{6#_1xw5gaYGvl)9Y>abKya`I9Ka1SA0xv>0THAlK4qt0>Ti~M zy#wtpb=hDwT!TVr^={{~bdmD*uwpNdn(K?C_#BTelTJo0h`0i%kZ!-9zM@XkV~$g{ zDX^Rm0$UuQ?7-#P z)i-==PC>Ffk)=e_jeJqCO{W5hk%~+)BFX30g+Qhv`z@)Tr2eAzLtpc?@|kS3PUYaG zVrUXi)Iow`pMBO+P&#|;wqMPg8KqaQOIGh#IIe zWimxRd7^u&;(#Q%9Th%Y8E8!P`p_~y(GR6BE)u@*be9)jbgPT|gWd6xKAY%i*K6g% z@^+u+xrRsTHTuA#m!m)_OYG_lo|zjpH0xtgS3+*OHxNU<-K{lbgPs6}`T&@7SpPi; zI&V~~a>3`U7Q(b;opdc1!Yb&apK6x~ z?R9E}6>j^bUnkb06Ek|$bF9xH_Pw%#3h^NGn$ zC|sPtQotGTyR~#6c+0bLtGNnb46%NGWc{Tb+>T%Q>Urui>y|EqWpU{bf@mTwq(^>P{Z-1VO(1YA3*i*0|?P|$>mR>diYb-#Vdr+C&2ro8NzyjgEt zJvE&IAgsZU_J()SzIcPfkWG%AqhlN%9FZXlkj>P@xZ~Y_74SFfy;o@f+=w*m_v3-a zM0k@I>|U5w2LVs{tgX)gZyF@ z>^V6Yds6-emR?!Se($iG{L#)&!eGH)t+?tE{*pF>bxWO?J(nn&xz{21~Vh$W_1V|4vr^!r63l z)(@Ab?fyT=P98@$QSQjaM^lO)l|kX%_b}50IixRlLkPVJ^BthocDkhzP*^LQ#w$AG zIuTY~^tiONZEh?6hkYk4B8w64zC{-Q2%c5iys9)ImfkF<_ik>hXTvrqN~%V!gb#mL z78+&M(66UfTqU;7)UY+YQP_mgoSrb8?hMs{+;chG)s6D>Xb;%-^dS&EM^O;2rEIWw zYj(DECR#FDmDZ3KNI%yT==gLNQ&)%U%pM+6+@tag`uOFr74Qa-Dnh4)3>F^9v^FrH zDOuKAoh)Z;ijUWw&K|C{=aqtaUhZBwR`vxaLfW!q{kUmqLbrxcU1&d6X%PQ+>n-m z9WC9#NFL&Dlufs1N|Ck}hH)e4Td>Caq7?XME^VItRX8H*hf>zGU{TpOfH@VWxG7dv z5aW{)PmS?1lp2!|9?abxb-xdp-!m&-6a_%lsRx==O;l=mYFHq?M-_! zi^=>*^fsK9P2*nZN%+H>hd5)P<+krlfCqXyI((_AHSbI2z$@Y#o=0z*L-rJDPDVNZ zmgRU&Cubz>Lr*3a!If4ofLk|djSLm(7 zU0>h;T+?l@(tXkk8BxyAfV-+In&s&Q?M-83X}(t;u=2UqAt&TR%l@!7AM}#5I!!G; z+q^kv*gL%3BA36sCwi-*o5MPQB&)g#vlFMzfx2kd^#x7DyYv$$4=}f7DE)RO8HeD! zw=90<;P&^yc7e-I7U%U~vym2d9{6EMD}{SMaom5G3^fofb?R`+2`vRLh_Eo;)?VZghG2k3;) zNaX%{a1wzaSr`gO^h>D(YM?ZX>?#Fb&0wOAD7CrFL-wKq?nd6a3!ISunX5<2bh zJnFh!Gp%!7URuHppaCZ)CSawIRx|<+pZV{_L(ox-6vzW>UY-5 z@oypBy$NwHA$2>riP+3hr#c>c)9f;;`z`)+fJ5qu&zE4>rN+PUzhg z$L7a#DwfpP<*$6GNlucrGN%=(JVLqibt!0mZJKkxt=$I%ROHw9RjCJCqrWYkHJwmH zqOnA8#vzqu%e7Lj3oZC`$0G`w{Y!94wyHGdv19D!-QE!!EJi_RAS_^ZwCyIYT7HD7 zJ`Hd|ZqK`F*N;pjKKRP$vt6Lyhh=qk6M!GT>n)j%oj*J!0u|S;2D@5Q!xmikFLzb| z>+&!C&}Dv$tpb6;{?D$jW>=Q2aODN?!iMT++>(}N|0N%u#~CB4v`^8KVK?{+i>j%Eb76p<39V7eBjoVW|BIDqnHXp%=&V8-)OJ} zRhZq*O=*Ithww6AdmlqQuw(0ZJ(D>80Oap_ zJF4aj0vJWy-;RablrGxUfOmks3z<@iK6XO#`d+&|&TuHpzW@2dRa*?wvukgiFyD41 zfPwTk>=v9KwsvIuv+w>}um%7}zLm5jCq-A@dI(Mtb`L1*5f;A7__FsVxlMBbOk^O- zH#fR>+pO1uDD3W4p?_`~sYKO;2~EGcWI;#SzqrU(GdhuPTdMQLs9_&;mY@^Te z6C$kUtIuIAxKD*gc*RkK>^4pQc=Vh&=k-Qt{xu4$Z5K5OWsx?%9jBIkteM+>_NNqm z-i=ABYji8yi6a>^C8I3~&(uE%sr#c*ojDu_@tf^n@RP|-&I<+6ADVF}X9Gm**Rw0~ zeal60i15>F@(fYkwm8Wa4Wfq|9{O2LNrIiyv>TSwQ$o4s^T_jt{la@9>TyinprWoN z6_7*dT4wISCrmeEO(eY^{HKRzY!79AC8s5=d^V_qXD~d3*3Y?VUq9~bB%%mU2GK)% zkYhjXMc5HY(i9NoMp?FNbnog01bVY&DC&C|N}7GAhZ;mKA7vK!?*RbeZe>xy0kUf$wrzyTMaY{6QSrGc?zg znXwxP&*Qr(E^p?R@b>Sk=CHQg;eyGt`ZnXChclI|G`p#2-CH(O1>Owki62#0JYjyiIz76V zgLsE8Mwa}oM%*S0l_5;?qnhjrZSZ;xl^Wb%JqP$}T>jTs=FWzq+sP1#mW|mh{EHJbxqLOdvLZ zRNt3W`d_~HzZmLg2;w#oq&>CLDR`j2Oef1R7 zcfWLx#buq<@H_>KF|4@WK354*n1M9NTJ+2B@Z)>!p%CmYgx(_+)nw?2zo{ zR3`~JG>TQH9on^=1G0ds@(3L7`}EQXv9#h_BW@p&G@v|(xDQPcF=N51jot ztCa=tm91IjOaGte@kO3l`onHl|JEe5#u`r_FaTuGg1?Ui3xR!~Oo@<|XSEG9e8GonB3hz=W$ z*^#9iQLJ6Ha65Vtbkw!bVkwfDfqa#z{(5e=M@ezvGJ#bJXV&)l41nQ$aLi!jDGl z)PYhqM|Xhhv6)fxhO!YO_dLjxi`%>B)XtLG@L)Kl|`K;4=2+(1j&aI zaei|8^uq0W9)(*qMAjUEPE4gTdGA0Se}A+fdZC+u`^n`3SV^m%XmZrf-l)*w`qQjS z^Ka(nE<^}^>ubRbR)+rj{O5>z$vRT(W^r5%d-keUZ}|Hsi)%yzZcnAp$Z`U|CtzUk z1t$v!fyRr*_atP173OD!hksY9CL0A{_Ie{17cOWoq&R-J_DV8-KljFCAHnqS)A!GY z5iAx4MbL>5zV1G^DK#Y}Wi9M^X3^9DDB9i72l1a}!$yX9_zF~Fo9r)%=TiAcjT}C| zB;W!>%Kf3Nr+8k1xG7c3>BzubJ)agTcj*N_d$-Ly197rM^olz3$$olqn$lZ_7+gq< z77mv<3SQeUjzn;y=#~vJjgr|LsH8^fkZ!-|