From 16626f93ee75d4fde18676a524e8cdfef1aef15f Mon Sep 17 00:00:00 2001 From: dennisdebel Date: Tue, 20 Oct 2020 23:31:45 +0200 Subject: [PATCH 1/8] re-added clean otastImg code that was removed by install stress --- .DS_Store | Bin 6148 -> 6148 bytes code/esp8266/.DS_Store | Bin 6148 -> 6148 bytes code/esp8266/otastaImg/DNSServer.cpp | 166 ++++++++++++++++++ code/esp8266/otastaImg/DNSServer.h | 72 ++++++++ code/esp8266/otastaImg/data/index.html | 12 ++ code/esp8266/otastaImg/data/pic.jpg | Bin 0 -> 110432 bytes code/esp8266/otastaImg/otastaImg.ino | 98 +++++++++++ .../hello capitalism/otastaImg/data/.DS_Store | Bin 6148 -> 6148 bytes 8 files changed, 348 insertions(+) create mode 100644 code/esp8266/otastaImg/DNSServer.cpp create mode 100755 code/esp8266/otastaImg/DNSServer.h create mode 100644 code/esp8266/otastaImg/data/index.html create mode 100644 code/esp8266/otastaImg/data/pic.jpg create mode 100644 code/esp8266/otastaImg/otastaImg.ino diff --git a/.DS_Store b/.DS_Store index 8f963716d8944c892cc5f7c4932b0aec09803cb6..39fefe149e740d151b0cae1a13625e23c4cde78d 100644 GIT binary patch delta 40 wcmZoMXffDuiG|JBTt~s!U@{lG$7BW83mnFlMmh?H7Uq+=+1)qWvmF%#0OrsN&Hw-a delta 24 gcmZoMXffDuiDfbiyWeC5)(exF+5I=$vmF%#0Ba%$9RL6T diff --git a/code/esp8266/.DS_Store b/code/esp8266/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..8601cac4cf115aab5c6c3f69185222f215984900 100644 GIT binary patch literal 6148 zcmeHK&1%~~5Z-m%L{f85X#;^?_FC{kCJDZ(j(g~#U{FaYb#bLg*bA~&SgV*~3_9l# za%|Hk?@`)!D0zfFL2sS?aY&E~J(be#z|1#0JF{zjEAMI%LbzYXU4&eOkOeBRWrJxD z(J!|r$jhQ1&R@$Gjgv_G!;nwc{!7Nv8$XPWXtEf)j}BSJ zLz*S?Tcx98n#F9vhPUcd+V^Wv}OT$o{^!TDj+z_4vub(-*Ju)!F+G7au=eUVZ+e)&s+R&&;j4F++^PY}8;N7pj9VXPU8eok~WDa$6% zyM7`$tuclH!+>F+&Vb$~to!vY6EO@J2L5vf#Qs1)1^OB*g>vfvBd-8}Z3s&NUw)tf z5)lCOHC75C0)ka3pen`sih)%*#EH)HHC75$Il^*g7)Q^H^$i8f*&$A3I>Np}V+{j_ zfx8TBsHQ8<|7X9x|KBY#EyI9e;Gbduw+F$X509kJ*4o2~vzCCq1r;LlDup*C;K-vG ga>Y@+3n~TTL^y!H#!4YXK+K1Lq`?@&z#nDcCyptHrvLx| delta 70 zcmZoMXfc=|#>AjHu~2NHo+1YW5HK<@2yA}Htj4nW19KPiW_AvK4xj>{$am(+{342+ UKzW7)kiy9(Jj$D6L{=~Z07C;0(EtDd diff --git a/code/esp8266/otastaImg/DNSServer.cpp b/code/esp8266/otastaImg/DNSServer.cpp new file mode 100644 index 0000000..6552bec --- /dev/null +++ b/code/esp8266/otastaImg/DNSServer.cpp @@ -0,0 +1,166 @@ +#include "./DNSServer.h" +#include +#include + +#define DEBUG +#define DEBUG_OUTPUT Serial + +DNSServer::DNSServer() +{ + _ttl = htonl(60); + _errorReplyCode = DNSReplyCode::NonExistentDomain; +} + +bool DNSServer::start(const uint16_t &port, const String &domainName, + const IPAddress &resolvedIP) +{ + _port = port; + _domainName = domainName; + _resolvedIP[0] = resolvedIP[0]; + _resolvedIP[1] = resolvedIP[1]; + _resolvedIP[2] = resolvedIP[2]; + _resolvedIP[3] = resolvedIP[3]; + downcaseAndRemoveWwwPrefix(_domainName); + return _udp.begin(_port) == 1; +} + +void DNSServer::setErrorReplyCode(const DNSReplyCode &replyCode) +{ + _errorReplyCode = replyCode; +} + +void DNSServer::setTTL(const uint32_t &ttl) +{ + _ttl = htonl(ttl); +} + +void DNSServer::stop() +{ + _udp.stop(); +} + +void DNSServer::downcaseAndRemoveWwwPrefix(String &domainName) +{ + domainName.toLowerCase(); + domainName.replace("www.", ""); + domainName.replace("https://", ""); +} + +void DNSServer::processNextRequest() +{ + _currentPacketSize = _udp.parsePacket(); + if (_currentPacketSize) + { + _buffer = (unsigned char*)malloc(_currentPacketSize * sizeof(char)); + _udp.read(_buffer, _currentPacketSize); + _dnsHeader = (DNSHeader*) _buffer; + + if (_dnsHeader->QR == DNS_QR_QUERY && + _dnsHeader->OPCode == DNS_OPCODE_QUERY && + requestIncludesOnlyOneQuestion() && + (_domainName == "*" || getDomainNameWithoutWwwPrefix() == _domainName) + ) + + { + replyWithIP(); + } + else if (_dnsHeader->QR == DNS_QR_QUERY) + { + replyWithCustomCode(); + } + + free(_buffer); + } +} + +bool DNSServer::requestIncludesOnlyOneQuestion() +{ + return ntohs(_dnsHeader->QDCount) == 1 && + _dnsHeader->ANCount == 0 && + _dnsHeader->NSCount == 0 && + _dnsHeader->ARCount == 0; +} + +String DNSServer::getDomainNameWithoutWwwPrefix() +{ + String parsedDomainName = ""; + unsigned char *start = _buffer + 12; + if (*start == 0) + { + return parsedDomainName; + } + int pos = 0; + while(true) + { + unsigned char labelLength = *(start + pos); + for(int i = 0; i < labelLength; i++) + { + pos++; + parsedDomainName += (char)*(start + pos); + } + pos++; + if (*(start + pos) == 0) + { + downcaseAndRemoveWwwPrefix(parsedDomainName); + return parsedDomainName; + } + else + { + parsedDomainName += "."; + } + } +} + +void DNSServer::replyWithIP() +{ + _dnsHeader->QR = DNS_QR_RESPONSE; + _dnsHeader->ANCount = _dnsHeader->QDCount; + _dnsHeader->QDCount = _dnsHeader->QDCount; + //_dnsHeader->RA = 1; + + _udp.beginPacket(_udp.remoteIP(), _udp.remotePort()); + _udp.write(_buffer, _currentPacketSize); + + _udp.write((uint8_t)192); // answer name is a pointer + _udp.write((uint8_t)12); // pointer to offset at 0x00c + + _udp.write((uint8_t)0); // 0x0001 answer is type A query (host address) + _udp.write((uint8_t)1); + + _udp.write((uint8_t)0); //0x0001 answer is class IN (internet address) + _udp.write((uint8_t)1); + + _udp.write((unsigned char*)&_ttl, 4); + + // Length of RData is 4 bytes (because, in this case, RData is IPv4) + _udp.write((uint8_t)0); + _udp.write((uint8_t)4); + _udp.write(_resolvedIP, sizeof(_resolvedIP)); + _udp.endPacket(); + + + + #ifdef DEBUG + DEBUG_OUTPUT.print("DNS responds: "); + DEBUG_OUTPUT.print(_resolvedIP[0]); + DEBUG_OUTPUT.print("."); + DEBUG_OUTPUT.print(_resolvedIP[1]); + DEBUG_OUTPUT.print("."); + DEBUG_OUTPUT.print(_resolvedIP[2]); + DEBUG_OUTPUT.print("."); + DEBUG_OUTPUT.print(_resolvedIP[3]); + DEBUG_OUTPUT.print(" for "); + DEBUG_OUTPUT.println(getDomainNameWithoutWwwPrefix()); + #endif +} + +void DNSServer::replyWithCustomCode() +{ + _dnsHeader->QR = DNS_QR_RESPONSE; + _dnsHeader->RCode = (unsigned char)_errorReplyCode; + _dnsHeader->QDCount = 0; + + _udp.beginPacket(_udp.remoteIP(), _udp.remotePort()); + _udp.write(_buffer, sizeof(DNSHeader)); + _udp.endPacket(); +} diff --git a/code/esp8266/otastaImg/DNSServer.h b/code/esp8266/otastaImg/DNSServer.h new file mode 100755 index 0000000..2bade4b --- /dev/null +++ b/code/esp8266/otastaImg/DNSServer.h @@ -0,0 +1,72 @@ +#ifndef DNSServer_h +#define DNSServer_h +#include + +#define DNS_QR_QUERY 0 +#define DNS_QR_RESPONSE 1 +#define DNS_OPCODE_QUERY 0 + +enum class DNSReplyCode +{ + NoError = 0, + FormError = 1, + ServerFailure = 2, + NonExistentDomain = 3, + NotImplemented = 4, + Refused = 5, + YXDomain = 6, + YXRRSet = 7, + NXRRSet = 8 +}; + +struct DNSHeader +{ + uint16_t ID; // identification number + unsigned char RD : 1; // recursion desired + unsigned char TC : 1; // truncated message + unsigned char AA : 1; // authoritive answer + unsigned char OPCode : 4; // message_type + unsigned char QR : 1; // query/response flag + unsigned char RCode : 4; // response code + unsigned char Z : 3; // its z! reserved + unsigned char RA : 1; // recursion available + uint16_t QDCount; // number of question entries + uint16_t ANCount; // number of answer entries + uint16_t NSCount; // number of authority entries + uint16_t ARCount; // number of resource entries +}; + +class DNSServer +{ + public: + DNSServer(); + void processNextRequest(); + void setErrorReplyCode(const DNSReplyCode &replyCode); + void setTTL(const uint32_t &ttl); + + // Returns true if successful, false if there are no sockets available + bool start(const uint16_t &port, + const String &domainName, + const IPAddress &resolvedIP); + // stops the DNS server + void stop(); + + private: + WiFiUDP _udp; + uint16_t _port; + String _domainName; + unsigned char _resolvedIP[4]; + int _currentPacketSize; + unsigned char* _buffer; + DNSHeader* _dnsHeader; + uint32_t _ttl; + DNSReplyCode _errorReplyCode; + + void downcaseAndRemoveWwwPrefix(String &domainName); + String getDomainNameWithoutWwwPrefix(); + bool requestIncludesOnlyOneQuestion(); + void replyWithIP(); + void replyWithCustomCode(); +}; +#endif + diff --git a/code/esp8266/otastaImg/data/index.html b/code/esp8266/otastaImg/data/index.html new file mode 100644 index 0000000..c061527 --- /dev/null +++ b/code/esp8266/otastaImg/data/index.html @@ -0,0 +1,12 @@ + + + + + + + + +hi + + + \ No newline at end of file diff --git a/code/esp8266/otastaImg/data/pic.jpg b/code/esp8266/otastaImg/data/pic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f42774e21037a1477c6cfe491f44677dbecfb140 GIT binary patch literal 110432 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 literal 0 HcmV?d00001 diff --git a/code/esp8266/otastaImg/otastaImg.ino b/code/esp8266/otastaImg/otastaImg.ino new file mode 100644 index 0000000..b786dc5 --- /dev/null +++ b/code/esp8266/otastaImg/otastaImg.ino @@ -0,0 +1,98 @@ + // Captive portal with (arduino) OTA + SPIFFS + + #include + #include + #include + #include + #include // Over-the-Air updates + #include + #include "./DNSServer.h" // Dns server + #include // SPIFFS + + DNSServer dnsServer; + const byte DNS_PORT = 53; + + ESP8266WebServer server(80); + + #ifndef STASSID + #define STASSID "\xF0\x9F\x9B\xB4 UNFLASHED" + //#define STASPSK "mypassword" + #endif + + IPAddress apIP(192, 168, 4, 1); + const char* ssid = STASSID; + //const char* password = STAPSK; + + void setup() { + Serial.begin(115200); + Serial.println("Booting"); + + WiFi.mode(WIFI_AP); + WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); + WiFi.softAP(ssid); + dnsServer.start(DNS_PORT, "*", apIP); // redirect dns request to AP ip + + MDNS.begin("esp8266", WiFi.softAPIP()); + Serial.println("Ready"); + Serial.print("IP address: "); + Serial.println(WiFi.softAPIP()); + + //Over-the-Air updates + ArduinoOTA.setHostname("ESP8266"); + //ArduinoOTA.setPassword("change-me"); //disabled to allow data uploads + ArduinoOTA.begin(); + SPIFFS.begin(); + + //redirect all traffic to index.html + server.onNotFound([]() { + if(!handleFileRead(server.uri())){ + const char *metaRefreshStr = "

redirecting...

"; + server.send(200, "text/html", metaRefreshStr); + } + }); + + server.begin(); + + } + + void loop() { + dnsServer.processNextRequest(); + ArduinoOTA.handle(); + server.handleClient(); + delay(50); + } + + +String getContentType(String filename){ + if(server.hasArg("download")) return "application/octet-stream"; + else if(filename.endsWith(".htm")) return "text/html"; + else if(filename.endsWith(".html")) return "text/html"; + else if(filename.endsWith(".css")) return "text/css"; + else if(filename.endsWith(".js")) return "application/javascript"; + else if(filename.endsWith(".png")) return "image/png"; + else if(filename.endsWith(".gif")) return "image/gif"; + else if(filename.endsWith(".jpg")) return "image/jpeg"; + else if(filename.endsWith(".ico")) return "image/x-icon"; + else if(filename.endsWith(".xml")) return "text/xml"; + else if(filename.endsWith(".mp4")) return "video/mp4"; + else if(filename.endsWith(".pdf")) return "application/x-pdf"; + else if(filename.endsWith(".zip")) return "application/x-zip"; + else if(filename.endsWith(".gz")) return "application/x-gzip"; + return "text/plain"; +} + +//Given a file path, look for it in the SPIFFS file storage. Returns true if found, returns false if not found. +bool handleFileRead(String path){ + if(path.endsWith("/")) path += "index.html"; + String contentType = getContentType(path); + String pathWithGz = path + ".gz"; + if(SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)){ + if(SPIFFS.exists(pathWithGz)) + path += ".gz"; + File file = SPIFFS.open(path, "r"); + size_t sent = server.streamFile(file, contentType); + file.close(); + return true; + } + return false; +} diff --git a/works/Jonas Lund/hello capitalism/otastaImg/data/.DS_Store b/works/Jonas Lund/hello capitalism/otastaImg/data/.DS_Store index 4df10455818990b6836e6fee6943ca41cd359724..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 100644 GIT binary patch delta 70 zcmZoMXfc=|#>AjHu~2NHo+1YW5HK<@2y7PQ5M$Xaz%q+@Gdl-A2T;LgMwai)llesy VIf3#F2_S`&O?Z?y$B3+81_0!d4M+e0 literal 6148 zcmeHKOHRWu5FNJ>Dq_<`7c4Eo1$qG#s`LP;2cVRo0!m1vw)-4}4L5)*a1}1V5qL8; zQJvIchY*^n?B~qKW52j|Ohjh3%cn$RA{wDE4vtYB5Vmva$-rwk*hn8++7#>Q;^t>p}ubdV>vni?^{tQOlbA>@u?2Y&rWrifRM3vr znB`M2M|#2kC$vZM27N^G2R^|#=#|Hzq6{bl$^h>qoWgui==pM&>{?Ft0|1e0OlmTVnUol{kY>~|{C4aW|CdX&3MOmV- ouwUb_4M9VWV)*h=e2O9hz2ycl_1HLs2BIGVLW5Syz^^j!1rE%04gdfE From 8f4815ab2cec0791fb02d60e19d5729d05febac4 Mon Sep 17 00:00:00 2001 From: dennisdebel Date: Wed, 21 Oct 2020 00:16:52 +0200 Subject: [PATCH 2/8] re-added otastaImg was broken, fixed now --- .DS_Store | Bin 6148 -> 6148 bytes code/esp8266/.DS_Store | Bin 6148 -> 6148 bytes code/esp8266/otastaImg/otastaImg.ino | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.DS_Store b/.DS_Store index 39fefe149e740d151b0cae1a13625e23c4cde78d..2e7b7af863a3846d70505ba0b403e0629dbd2d07 100644 GIT binary patch delta 57 zcmV-90LK4>FoZCWV*&WH5eTOPlM4hG0r-R?|=4AKSEYJF!X)`;=Uw!}`cMQ4! diff --git a/code/esp8266/.DS_Store b/code/esp8266/.DS_Store index 8601cac4cf115aab5c6c3f69185222f215984900..95447570167e781546b1241582ff7452b7dab9b1 100644 GIT binary patch delta 19 acmZoMXffDumx;|tN5RMNt4idN5R;@bn{~-MNt4ijs@oc diff --git a/code/esp8266/otastaImg/otastaImg.ino b/code/esp8266/otastaImg/otastaImg.ino index b786dc5..62d4722 100644 --- a/code/esp8266/otastaImg/otastaImg.ino +++ b/code/esp8266/otastaImg/otastaImg.ino @@ -15,7 +15,7 @@ ESP8266WebServer server(80); #ifndef STASSID - #define STASSID "\xF0\x9F\x9B\xB4 UNFLASHED" + #define STASSID "\xF0\x9F\x9B\xB4 beta" //#define STASPSK "mypassword" #endif @@ -39,7 +39,7 @@ //Over-the-Air updates ArduinoOTA.setHostname("ESP8266"); - //ArduinoOTA.setPassword("change-me"); //disabled to allow data uploads + ArduinoOTA.setPassword("change-me"); ArduinoOTA.begin(); SPIFFS.begin(); From 220ede11b56ffa201a4fae0472d52bc7f4a3dbe7 Mon Sep 17 00:00:00 2001 From: dennisdebel Date: Wed, 21 Oct 2020 00:26:30 +0200 Subject: [PATCH 3/8] disabled otastaImg spiffs password --- code/esp8266/.DS_Store | Bin 6148 -> 6148 bytes code/esp8266/otastaImg/otastaImg.ino | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/esp8266/.DS_Store b/code/esp8266/.DS_Store index 95447570167e781546b1241582ff7452b7dab9b1..8601cac4cf115aab5c6c3f69185222f215984900 100644 GIT binary patch delta 19 acmZoMXffDumx;|>N5R;@bn{~-MNt4ijs@oc delta 19 acmZoMXffDumx;|tN5RMNt4id Date: Sat, 24 Oct 2020 04:14:40 +0200 Subject: [PATCH 4/8] added captive portal with close button example --- .DS_Store | Bin 6148 -> 6148 bytes code/esp8266/.DS_Store | Bin 6148 -> 8196 bytes .../otastaImg-close-button/DNSServer.cpp | 166 ++++++++++++++++++ .../otastaImg-close-button/DNSServer.h | 71 ++++++++ .../otastaImg-close-button/data/index.html | 18 ++ .../otastaImg-close-button/data/pic.jpg | Bin 0 -> 110432 bytes .../otastaImg-close-button/otastaImg.ino | 115 ++++++++++++ 7 files changed, 370 insertions(+) create mode 100644 code/esp8266/otastaImg-close-button/DNSServer.cpp create mode 100644 code/esp8266/otastaImg-close-button/DNSServer.h create mode 100644 code/esp8266/otastaImg-close-button/data/index.html create mode 100644 code/esp8266/otastaImg-close-button/data/pic.jpg create mode 100644 code/esp8266/otastaImg-close-button/otastaImg.ino diff --git a/.DS_Store b/.DS_Store index 2e7b7af863a3846d70505ba0b403e0629dbd2d07..0de2a1b529bcfe71bb487ac201ec07de91b80645 100644 GIT binary patch delta 31 ncmZoMXfc?O%=mM&Ajfj%$=oawlSA14ZkA_#&a|1G<1aq|vYHD1 delta 57 zcmV-90LK4>FoZCWV*&WH5eTOPlM4hG0r-BPNe}k~F6jC+8&P=jSj29Y~VKoOHwBxm7wf(#@dFbRNMK#~K>f{XHU^7GPx`WP7* ySinADWZ>95ji-W{OM)B7cLhcI=7-GRnJ4p$I8Juw5#RuZGblYUY>wxd!wdk;_H}sx delta 116 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{MGjUEV6q~50$jG)aU^gQp+vNR%Vw;r&4l!;l yQD#}p&cPwb3{(XK0^C5t6{KNf;dkcA{4$Op6B!s87+63w6U0cc*yebiIm`fSeG!oW diff --git a/code/esp8266/otastaImg-close-button/DNSServer.cpp b/code/esp8266/otastaImg-close-button/DNSServer.cpp new file mode 100644 index 0000000..6552bec --- /dev/null +++ b/code/esp8266/otastaImg-close-button/DNSServer.cpp @@ -0,0 +1,166 @@ +#include "./DNSServer.h" +#include +#include + +#define DEBUG +#define DEBUG_OUTPUT Serial + +DNSServer::DNSServer() +{ + _ttl = htonl(60); + _errorReplyCode = DNSReplyCode::NonExistentDomain; +} + +bool DNSServer::start(const uint16_t &port, const String &domainName, + const IPAddress &resolvedIP) +{ + _port = port; + _domainName = domainName; + _resolvedIP[0] = resolvedIP[0]; + _resolvedIP[1] = resolvedIP[1]; + _resolvedIP[2] = resolvedIP[2]; + _resolvedIP[3] = resolvedIP[3]; + downcaseAndRemoveWwwPrefix(_domainName); + return _udp.begin(_port) == 1; +} + +void DNSServer::setErrorReplyCode(const DNSReplyCode &replyCode) +{ + _errorReplyCode = replyCode; +} + +void DNSServer::setTTL(const uint32_t &ttl) +{ + _ttl = htonl(ttl); +} + +void DNSServer::stop() +{ + _udp.stop(); +} + +void DNSServer::downcaseAndRemoveWwwPrefix(String &domainName) +{ + domainName.toLowerCase(); + domainName.replace("www.", ""); + domainName.replace("https://", ""); +} + +void DNSServer::processNextRequest() +{ + _currentPacketSize = _udp.parsePacket(); + if (_currentPacketSize) + { + _buffer = (unsigned char*)malloc(_currentPacketSize * sizeof(char)); + _udp.read(_buffer, _currentPacketSize); + _dnsHeader = (DNSHeader*) _buffer; + + if (_dnsHeader->QR == DNS_QR_QUERY && + _dnsHeader->OPCode == DNS_OPCODE_QUERY && + requestIncludesOnlyOneQuestion() && + (_domainName == "*" || getDomainNameWithoutWwwPrefix() == _domainName) + ) + + { + replyWithIP(); + } + else if (_dnsHeader->QR == DNS_QR_QUERY) + { + replyWithCustomCode(); + } + + free(_buffer); + } +} + +bool DNSServer::requestIncludesOnlyOneQuestion() +{ + return ntohs(_dnsHeader->QDCount) == 1 && + _dnsHeader->ANCount == 0 && + _dnsHeader->NSCount == 0 && + _dnsHeader->ARCount == 0; +} + +String DNSServer::getDomainNameWithoutWwwPrefix() +{ + String parsedDomainName = ""; + unsigned char *start = _buffer + 12; + if (*start == 0) + { + return parsedDomainName; + } + int pos = 0; + while(true) + { + unsigned char labelLength = *(start + pos); + for(int i = 0; i < labelLength; i++) + { + pos++; + parsedDomainName += (char)*(start + pos); + } + pos++; + if (*(start + pos) == 0) + { + downcaseAndRemoveWwwPrefix(parsedDomainName); + return parsedDomainName; + } + else + { + parsedDomainName += "."; + } + } +} + +void DNSServer::replyWithIP() +{ + _dnsHeader->QR = DNS_QR_RESPONSE; + _dnsHeader->ANCount = _dnsHeader->QDCount; + _dnsHeader->QDCount = _dnsHeader->QDCount; + //_dnsHeader->RA = 1; + + _udp.beginPacket(_udp.remoteIP(), _udp.remotePort()); + _udp.write(_buffer, _currentPacketSize); + + _udp.write((uint8_t)192); // answer name is a pointer + _udp.write((uint8_t)12); // pointer to offset at 0x00c + + _udp.write((uint8_t)0); // 0x0001 answer is type A query (host address) + _udp.write((uint8_t)1); + + _udp.write((uint8_t)0); //0x0001 answer is class IN (internet address) + _udp.write((uint8_t)1); + + _udp.write((unsigned char*)&_ttl, 4); + + // Length of RData is 4 bytes (because, in this case, RData is IPv4) + _udp.write((uint8_t)0); + _udp.write((uint8_t)4); + _udp.write(_resolvedIP, sizeof(_resolvedIP)); + _udp.endPacket(); + + + + #ifdef DEBUG + DEBUG_OUTPUT.print("DNS responds: "); + DEBUG_OUTPUT.print(_resolvedIP[0]); + DEBUG_OUTPUT.print("."); + DEBUG_OUTPUT.print(_resolvedIP[1]); + DEBUG_OUTPUT.print("."); + DEBUG_OUTPUT.print(_resolvedIP[2]); + DEBUG_OUTPUT.print("."); + DEBUG_OUTPUT.print(_resolvedIP[3]); + DEBUG_OUTPUT.print(" for "); + DEBUG_OUTPUT.println(getDomainNameWithoutWwwPrefix()); + #endif +} + +void DNSServer::replyWithCustomCode() +{ + _dnsHeader->QR = DNS_QR_RESPONSE; + _dnsHeader->RCode = (unsigned char)_errorReplyCode; + _dnsHeader->QDCount = 0; + + _udp.beginPacket(_udp.remoteIP(), _udp.remotePort()); + _udp.write(_buffer, sizeof(DNSHeader)); + _udp.endPacket(); +} diff --git a/code/esp8266/otastaImg-close-button/DNSServer.h b/code/esp8266/otastaImg-close-button/DNSServer.h new file mode 100644 index 0000000..d58efbb --- /dev/null +++ b/code/esp8266/otastaImg-close-button/DNSServer.h @@ -0,0 +1,71 @@ +#ifndef DNSServer_h +#define DNSServer_h +#include + +#define DNS_QR_QUERY 0 +#define DNS_QR_RESPONSE 1 +#define DNS_OPCODE_QUERY 0 + +enum class DNSReplyCode +{ + NoError = 0, + FormError = 1, + ServerFailure = 2, + NonExistentDomain = 3, + NotImplemented = 4, + Refused = 5, + YXDomain = 6, + YXRRSet = 7, + NXRRSet = 8 +}; + +struct DNSHeader +{ + uint16_t ID; // identification number + unsigned char RD : 1; // recursion desired + unsigned char TC : 1; // truncated message + unsigned char AA : 1; // authoritive answer + unsigned char OPCode : 4; // message_type + unsigned char QR : 1; // query/response flag + unsigned char RCode : 4; // response code + unsigned char Z : 3; // its z! reserved + unsigned char RA : 1; // recursion available + uint16_t QDCount; // number of question entries + uint16_t ANCount; // number of answer entries + uint16_t NSCount; // number of authority entries + uint16_t ARCount; // number of resource entries +}; + +class DNSServer +{ + public: + DNSServer(); + void processNextRequest(); + void setErrorReplyCode(const DNSReplyCode &replyCode); + void setTTL(const uint32_t &ttl); + + // Returns true if successful, false if there are no sockets available + bool start(const uint16_t &port, + const String &domainName, + const IPAddress &resolvedIP); + // stops the DNS server + void stop(); + + private: + WiFiUDP _udp; + uint16_t _port; + String _domainName; + unsigned char _resolvedIP[4]; + int _currentPacketSize; + unsigned char* _buffer; + DNSHeader* _dnsHeader; + uint32_t _ttl; + DNSReplyCode _errorReplyCode; + + void downcaseAndRemoveWwwPrefix(String &domainName); + String getDomainNameWithoutWwwPrefix(); + bool requestIncludesOnlyOneQuestion(); + void replyWithIP(); + void replyWithCustomCode(); +}; +#endif diff --git a/code/esp8266/otastaImg-close-button/data/index.html b/code/esp8266/otastaImg-close-button/data/index.html new file mode 100644 index 0000000..ea0be20 --- /dev/null +++ b/code/esp8266/otastaImg-close-button/data/index.html @@ -0,0 +1,18 @@ + + + + + + + + +hi + +

+CONNECT (Close Captive Portal) + + + + + + \ No newline at end of file diff --git a/code/esp8266/otastaImg-close-button/data/pic.jpg b/code/esp8266/otastaImg-close-button/data/pic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f42774e21037a1477c6cfe491f44677dbecfb140 GIT binary patch literal 110432 zcmbTdby!BKywYY03?k=IFSSe7fxI>ZPPH`w&oZ{A&wm@-rcemp18c3i(fDpd? zp7WgNT<81ieczSr?73!7*6e%sTx+jcYwo9|r!4^S8zogG0165UKn3{$JZ(!wKKpkW*(%xrfd23HM#ytL z@<3|-*Z=?PjFk)kU?FSJ1%!kIQ&9e^jDm^=`1;@Vf&v0xQT|8cSJeO3i2d;^+JBcZ zO@3hhyA4v=zXTHn?cX(+$PWK=-zcd6bKfYq|LeX{{#zRgDe8ZE5l{KIzW;UKPfJhT z01|9~AK)t*3JU<01O<%*<*6UQi0ldjIfDNT;=ct61|0(v3mXR)580rB7=Vg`hK7oc zhJk^O92%6Mf54)XV30BkzQlZ{Wr@Y&P9_wV@(r8yRZS1M_6&qg*vcau2bY49ikgP~ zImZi5E)h{NaS2H&h1ZHo$||aFbaeIJ>l+vvS=-otu(Nk?^z`!f@%8in81X4GDmo@M zE;a2-dPZhecFy;rA3uK;mz4glt*dWnY-(<4?d|Iy7#tcN8J(T`GrzF7w7jytv%9x{ zaCmfl0=>NYdwp{YySx7f7xD@G7p(sv`~Tr0LE=J1M@K`)`Ue*ZsxR_DBSFVt7Q`fd zsfA_f{)|N^44dp#%D0*x99Cg%2)UKV3@!zm$TmClA87wV_J0N}{Qn8re}MfDu2q1- zKhqs4sK_rGDk}0(p&~e>m>B;O%zq2kzXbaq!TFCoA(i|~11c&y@{5Csf%%_n z|Hp-=b>!5;eOdwFqoE)t6B-Es2)Jx3>y3Xqx~e?tw%(cd2*SNQ!4W=S; z0Q*JEU+QykB`?o=Y%7%v`}p%gI}Ot*D1Y`*JHKPMVZ}PWFFy8Rvpz zwF2xxq|!nqMfXDLJ0mKJdme)V`gT6AH|d&V5`k3EwMu!GTK^4(c@sx zO~SpIZ$&Wh4W3bz4=qLGGe>DWh!6*9^JQqS*xc-yQd+)*6@IZyu-IIb7e zv$D)E`cM%|O!`kzUEfyO)jy_-8hUpT_$fL3%GLg(yAG0j>-0<|wo$}wP3463nT(4~ zx0P-ZPvr?TB$fg94}v=I<)1)m@8HZ+C(Mzd(OD&Zk0y?NCO0=tjh!05X0FbGu8)gN zDOY|PoMTYxPnVit4OjdvNTo$njb2Z|)!0lFZE~zf8vz0S8h4PYBN6_M}CFHKVipM}~4|M61 zLSuzrf-r@XD!i^(k94WQV)r*y&Q@t_0Id<+@i-;hOj&rQYCLezD}u)E3sU>1)cyftW77nhZAL(DdVB4(fY+o#t7)Un{U*2t}@p zn)=^zR%oQU-cu7po!phP?K+1q8`WOiGT`Vl*-0{TqlTD)hQDG~y8+zt91=w4NV4N$&s6`M~0dr%$kaYFa&?4|u^cs&*e2NceIH24Qj4yE;8 z@7T+6`DO6K$Cm(eNLoeCBtE4^!@VItkD-O5kRkJ>I;A>q#gef>YqGZay1xg8OhR0D za-U2T-9qP#(b34G}%c_@`020HxQ>3Ro{^9q0!<-$r0Hp zx*(}X*&Sdsko-e+)9hw1rPdmj^#N~vr*#P$_Dl9)owXNi1*%od^TFhBi^e7b@o4@u z_tmzuN!bT}1%#(!;X8E(cCj>Rwbly|=Ut=H5Zk>?lE(aD&L^W!gbOz{q$c3*LE~V3 zd#nQ37R_yf=Jv$^Etb&K_So*U3&mxVY-`DhC;azqZwEhu_z4gvCdULz+0J)bGCc6I zFX#9Y^zBVn?eF#yN$bQdLM27($#c+X_BjpZ*=N_EaJjlxs4aM+Y`xcRo(KF3Rkiwc za(9VVC}+4~?BqFMSM<^j%wJ>*>cS4xA^es^;NWhr@3Uz)uQui%LfXfyXV7miZ`w>- zlV>M-%Q$ecg4S!s*%Z}lj_#Lcik_BYDZ^kUiH`>`IE)YWzAJlB>&)Ke$ALv1Ty%G` z*0(uJ9gekFa*4PPxU2~Ykzq?GdjKZS|15trSbGA5`y%>$o&dx^D@LL~MRSrV!f&Ot z+2zi}N;eA&odMY3pH9>`>_(cxp1UDvXoYWP;0izCe9(-p9al!$HttOn5i_Oe5;m== zkl$~p49{bfQfcLXyD-R8vn7xVXJh!;!JjGbUi3c!BD?CUK2_+bb_NO7$FeoF`r*`i ztD0o(vr@f#{Yf>Y-j`Kk^|7|gB?&#yVy>N$f54RhkGA2@?i}0vc7a3A;E;9gFm&6u zx7L}~r1p26^WH&w4pq(*!0<+|we5KbBjlC}`b%?=D!y3q*Qq7eH?GN;)**L+*I9HK%(^8qaw@gWsf*{6K(t zwddVbrry!8_EMONQ0F-omW0Jy3wY-fpn#Dk5O0?#>>eIW0|iE3R2=54NH?#E zuQ=N^W-AQw2rGq32_?V$dm6WO|Am9A9z3FTv1wM;3a7r`#NRh$u*46hNTi=B)$0Pe z`e^HPwHH&?H!ScSZ#q-oi|%ee2*K30602qKLToF(w z(#rWwM(D6f>-I}H3PTiXr2Wg^mj^*po_&>+6CUxhZ{_R~GM-4){Q@g&nEp$AV z+W6cNcx)59dV#5zqUM9r#Hn}9wnt>NA(f{olaVPD)1LQ<_`sGUo-5fW87pXM$aA)Z zmY){JKX~uGQ1!#145J^{uDLo*YUV2C3v|kxKb8VrGh|npXlrwErjz{Z8lda2ve1QTZWJLYZfh2+EKOLI*W)v~*h3=)4!*@J)F!Fdh-Lr zR#{fh?PcZ9u+l|M{YPMTufdYn;{8KX!_MMX-Q3DhKV$n9YpROPMhbAaU)ZKhy7DX@ zwH;a@Xac@`Uh^|SS*bnFpy=Ty>}K?bGlpf75G$gp(lZ>|eUkwFQ6pOg1y7H;D^9|1s_pyJ8LboW@N#44el=WQcC_<3B z68I%9EFA9ewhy|p?^3F=rN$cAf!ZxE8GSccrK2Tw3(;B-6E!o=-a&Hk4W70PmG%s! z(1_kTx-uKj9{4fud4t*^f3fk1&>$XVqL}knU+1E*>nfpNEN(t(3bRq9q7=nXGuOO! z2wbcOIeX?kqlz2G=IEv4*88(Q&Fsb~~U zucY*-B$t2OT)%;P7Jy()I?%%Y*09;#*@l3&dDHl~Cj4zB4eUd}N1Dlb8D6NTVk=$+ zEI>DGlggpUn?u&UYjw6csOV&L?<~ZcW)r*!;mwhz4rX?^8j!{iOcRi2EJ1&*fjuR8 zI)~bvV16?JBQM@&g+EgZrX-RFPK~`j|wo5R{LGxJJ?SMmL3#NNlAm* zVMp3o==xh}%(-;iG~aqy)j5WXOxQnWAbKKH-O~z6{7qf29L#Vy0tM3S8;UT?jMj#K zDIyQP^m(&-zA&=vc$Q{&1b+fF9`;J^<2diO@o@5ur@d*WV#0T(zoVBZ2V38a!8GM^ ztP6)IC>NS=Em`~__#SR*!e6z^e}t><>0bst#zHBK>wfV^yE0siU(!(RCby~Pe?uKg z?Joe(e?&2#2c<0AL^-=C6Rvon|8D-o z*zl%Vo0VF0W^~Os`tS)r7_glG=I_zS_Sc_sDX!__2eauNPE)mV3~+wP;lR|A^#Fq; z#5|EV5M|34^dL*IYups|zL7?NNc6EY#pQSS$+_=kMen!QC~GRCREy)#K=sG8Yx5Y2 zF0^{-(<%HwrbvbLlO~Vzh2o~h=<#f}^e}@|f49JrFR#1AP^!|99#Gec-EJnBeP?@@ zKW?u6{S?ClP^~WdEXOpx*{NL2rvzPVkTx&WF!$gCkEfwIekUDbtdqUwPrJf{y5G>7 z#3{vWrYFFsVD8!`N*z_wQS`cj!n&{eRJMe@^13A}^W~?8?6usf)1GB*;EL8j#9mMb zG+?*z?6K@LcitKz&9&sKcycw5P zU(b6NQUxzH6|g}Q%XWTdfTXjFd4CMoNhD8@uEuO^oQQH$M``!ypWC=~4VXvs26G%W zrA>W1%5(;aq^_(`M6$m#tRd#xih75M=SzJMcMxHh@z`{oCn> z^=nz2@4~NVYgSMdn_RQIAIcgMQBXSq#kdLc+^!lwYh;*q0Jj)0pBGk_lx!PmEbd>L z2DZW<7+bpKeW{z&SRBkja--<~NGsoOMPN=9k>Jf@ZP!=guT-T)vp zF#`P3^(@52by-?>L2)Yjue$lb$M0yQk6(gPIh9rB<1l?!2XO#5$0kj1GM$@`u5my@ z=MZPc&|of_i%&fHBH1#crR%bj72lq!rQ+awRGGX$mr+!+NVcA$2T4vStmlz0R&+gU<2@{UbIsvf*O>9B`DgyI8E8Mj zsFBJaSwJ}r#{l`_#7udR?%Wu}QlpO@s7_ILn~`%T_) zi<&i9XUkk63xhO5l*weQgfH*)6(D`vhmnD5TmG({tVcdg&pPw!cn{cTf7PVmMTrCI zx}o5egZF}&lJD{fg1-h&F+wyu2rv3F?la>>X$?fw6`7mk9TGRZ{|K?X`82vEVvbJ$+D)~ju@KmQP0WSm=;$Lh?oAThrp_TCAT zmzpClnfqY%f@CSAM*;C1rf_2gQ~R+BqwH(sb?5t8V%{IiUiD?OJ=L7uis}U_c5=ex zu1pE*eInF#ASn`9Th(Xy%{VuR=uJ33lQhBXa7@I$`dzB3fTWe@TER6;_6dN#17n92 z-V8lfB3M8lOBcM_*7bFB&R1X8p>pEudt|d3(v=BqlZ`wFD6SRzT3%7f+#op4DXb&@+&6F+T9P!bJ$M35iR~WFZ&}mG8JYkE$3nsSe;)WjICWTa_QICeJ6a78E09}`aRHdJ%orutRa&b@JhT1D?EWWxo`%~hPN#D4x5p+> zVFOVFN2uWmWiVClI6j+F#?--kS~na!y3hc-riINu*A?Zh%}|$|3srNX3*n@UU-3r4JDMc>v7-^XCA&C6Bm zr`e;1kWZT^o!E$}kLgw2ZR$$0Hs2_X8p}ZbwtgN*rn92)MMYln6Jc#wGP^@Ev=5TY zejIv9I~Rj(Y6N!gQ$;~)yeebDN~)7a64q8G$pWFfl2fwMNhGihS>Ns^IaXLo)$?Kz zUvs<08K>ezR@T=rhY$8m$-kBM2r-q%1(QL$nlTJqfB4&}XyyzbL=N-}ypCuLWpdqA z3E0jb)NH`mXe4?0#iDykc}Dwc3Y|a5Om~*A8Q~=2JB)EM!brCc*ag$u4dB&3>lB<7 z9b@%Lek0Ptrmr?#(|N%gY=HevS3vR=%A_aI-aH0apZE>x`u;InhTlG!p6g~;vjDO4 z65W!eS!`56%-_QL5ZyLfTVC#21>@%@K%HFG&p@vk?-yRV2~2~mEe#n;pbsrEy#ljz z9*hoFW#KO;HIxT7$Qogb&@rt>2vO)Yfi`2z$DjR+vyLFv!QUi(yyLfR@cv5#jN~x6 zSvrxsi8^DZf7WbcMA@7lW__6`yJeCon$Dx)iSc44@VE)&8gS?Az1POr38WBFD_pwh z72CuQu_3~DFxnh24tRAN%u1qs(s&Q_*lT2GA2Ap{ohwqL)89mbIr$&Dp#B zGYg)Ibv#?D1T{tmnYJbyy!}~dpiGl!!dnx_y~NKV^U}MaC^LTRIt26JmVJqC-%AeM z>VqbA_VJ9$d-m@jW!?qlv+Zry74995aIlQISgF%W&~kI`+eE}UxxKYgkHBD0R*mzj zLePd7e$GAP&}OZ~f{cP=j&Gz3Qx0wTAg`G8x}upb)1J&blq(8!g0;i2yxqY-PDt(m zW3Bn17F4JIBOVArJbTk)=Un=lttFB4_n>MD8JF$y0yUjY`X1*_mkA{THxt5g48G1) zy8~BRleD|7I?VB;)CR3#cdK{bVpV-t-x)s;Y5lP!vm6tQE zBI}9K2m0?R;RYlMUKT_@*bG5VdmDqLAQ%-L1D(yb^>xjrG~HdJhU>FxJ@?TA5ryn1S9Hvb+R@+9NU!{?0u?mMOc^ulmJxrVH zlVN?3L=1LS^GA9iW3w)8&DXp>BDcfa=Fj z0Nh|Izlfbc1l3~}9Dv}2nu15NdA*h<=6hY4F!a;k^ict&C0~jO$>R#iy@5Ufz`!cM z2WUY%4|}4?9Gwf4lG;E{L0>?gxW}R;SWp@hxgV zUsv5~GuKY=oJH4QzBlWzOvq}tm=RXr1?k3{o9a*tu1smx*Vr{f9R^->bXzC`!Pg-@ zFM=fyYvz!59l${f#)ht#cJYAkBc)UOM>HFm80%{jBsy-5J{7gkET2hLWj_qPpIi%7 z{|E#tKTtgZdL$48u+h~%bE%FUGW!l-4@x$E}c6lo`K*DA3;#*NE#oPOqvgb9Tpv8oN@n9x*O$B5=*2T?m}d zP{#g`rcZ$Aa;wgH8{;5jt*95G{J>ERG`8_c6_fqI(gh*;Q97$Gn=a?&uC08ejWs_j z`xQKy z&?5o~|miA~AFi`d>8eTMZ$%-MeuO;;fEIr^N z_O|ubG-~!gGV*yr{9We48IZx0ovD?por5;0+FMx9699)57ImYpsZ-mf6!!!;v^7nM zmiEK1`KoXk4x+j&1By^p$&!_58VFs{O7-KPT5($>223_5J2n zW*Bg*7)TUMIssMNHerO+b}}rPs*}umolcq zysO^AGiKz>QS>$-S5tH+CSp!5UC)8@B3HmRaBoNxxZ^=lbB92MNjZ^ z0dI_s^!2AaR(Tp1y-mp`exty(g`a~Ml;OsT3{?2J)>kGsHq<+TdgjhNg2vSoh6jIH zjdFTw0viRs|5g2m{;t8**!;VG=a|k>^_Oqj9#!nFya>CexjT*>@u3Oe4#oF0kQq*W z)O1P00^O@#Cc=44$`^t|x)R6da#oP81W|Q7gSiIG*`nqkIq#6?&^oj)(#dZy)k-DU z!lf)0t6>|9O7n1K-+-+k$@2PB8x$**yim&c8i^H6Z9JQ25f{VCTP0QHKxEeJl-8d{ zz07`5pkiiZGBE9GtDxZ8Y{J}H)Bes^Hd6(b4aK@Chv*@q%N=N}4F)_}%#4gu=~LHb z26MpJDeA448Ve)Np#?2P58lB;hX|ZZ{_rP&6aTWdF)Wxq@O53{$~pBf@z0jBYg+3o zS)X#v&#siHh{p{Ll_!SDdtl!6s|3l@`6eKU-`T#yS|tz_zx-`CIBs8 z!Erl0Y<%=dqK zY#aP}Ntelk=lN!})DD#N2txg-r{2IX9#euj{G_+dB6kX@0u>T>c6VGqulT)f5-h!R zhDn$nmI-VaSU}>W^l#?3fy+Y(9KG#quM2EHqAl=Yj7>+1WsRDOYlB`O;kl6wATPtN z_ddl8>p>AQQwUMzUoL##0bz_o;2AlXu})un()USmNHI1qVlo|J-4U>Kk9v48X9`#1 zj(9Ov(o6Bp*?1lVJAL$$Xf`ML!ezF}QADW!^Z2)WLRt{#Px_4!UbEK1@pq5k8#s9_ zX4}QRJv)_NbCV4Fa_qk+Xk*Q@Zmuj+f)xdQh1IGR#%-`5#_AF|zcrI|^P#&X)3>MK z{;p4@Mb0Hfm{ zXtSwES_}lvKrj_pETnO4=m|h6<6OC-Tw>y<_GX@j7f-nQ}@A z>+zzG9AmnB322d&%_stc4TZgXt#NPn(Zod-7 z1l$3FXrM^go{C9TbS7_Ci7CV3d9WU54X|_IiECjEC#E?mGkR0?Jm+S5#)9*=PCEOC z>tNUWE4d+91f*%(r;DQSE69lLJ^{SPBCS$B^Mggjqt*otUqkrnafgi5je8ib3E>#n z0Cdd~MO5%R@l?iAzPKDCBPp*r1A;U;mwrRAlRPcl!GEt8;}PVBu%Ye2vIpQvs-`X7 zdu@>0iP6Uu(RA?Q`G*JT9|Iqng8I?=u%zP>x{0Pko&^dtL&c-_JLmfb0B`eaNZk{E zqmiH@2P330b2?h&COS}^w^8QpkS=Mq)*7mlWRPh66EmgcBjHL5cthujQ04x z;&VgeFV}A=2Tf^U)tVhOe_9U=lGSm& z`;rvQRgk`jcrY!jXkdeDzTLXgp-wTNSjtF^whS}O1WUs+l?^S5ZI6%pI(O%=TLP}U z9liLMYVIwRF!|T{%sg2(4P)*|(5M<)D7l2>Aw3S3j5>y-q>iitkOM}3;k1O?ygJ(wb9I{6`mJ=`7M;K{ats(z<)o0-?i zlU{$6L3M1SJCfwiSN$pZ-v)cLCjvuu3ZsBn42V;6nCGuG{?)UsoP(81`@>5wj zLk;b9DRmyt262u}?E0Pnu^Wtk(lj8C=f6ZHy+H?aY+<&fq8Yh13gc`FsZrZ0dSTQL zGA7VG5I(xK=zHy2qxvTRDo30PACBW+pjnrNL6=?Ovg#RHhrH7+So7Zv@Y^KcaF>FMCe{rgMOD)&m0>I>k=EVqC0t) z&DI?jXDMb}{~np`jyJrc9nDuD<%oeNV*0|%vDk?4C?gV#W=qX9X0HNn8aJY=qWU$y zuu`!XXLR{L{kfNZ5PuC>jNYF9OKSk;bxO0L7;a8@7hF;Bz!^ z_J?iHfms?_g++3AW12mg&*+w*#Tut9 zIXNu^*t5B=`VnH21bfZ|Ti+glRXn^h|CRrhn!b|1cvW^_a4srt6Z~9WOiah$qGkKt zF531*tkgndAtPUd@x<$Xn%-Fz^67d(7MzqlTpS+qC1G$6ot=zc2r>!X^SVXc1&1^XYS$Mc zn1r|yOzYvT--QyaYRg!yg1?^v!%5WP1L_};Sp3h5f|cjUjPlWV5?!ha`AzG-U}Kj6 z(EbTPcCzw2q;~^$v4e-qH2c*nbJl0-rHu!?w`jhsSaoveaSFD?WwYML#U81g4pfI_ zJ~%rDGa_C31i4l44TXc9%uV>~IA8v@Nx=f*MmK#nJ2ne98MxEwOrCZ_{>A3--MAvp z$Ok{$hMW23bEc;^Ke{2@n`e3|~Wd*Z6n)`oF^KM^-bR8ixd%Gyv( zRPua2QH-^Zk0m?csnM=uvdZX8&Dy2>4C+_pO|47SLUB4*oT7_>Egpp=BG6z)V~T$k z`)E3<+bBE{2gaZ9+jcFYec)jQ9s!gJ|s;BTJMy*5m{&JmpXfOWOkj;1<95}JuSuZ7x=Uj8MvOlJ7z6RX2TImMGW*qi<}|vdcORs37rAC% zV=~KrMs3IUQ2uzIv(ZO_y;JldXYJmMZmPt(I(cBrky9t9)!|o8Fi0stqXuH$6M_%d z{~4$SIVl%=Z?k&hX3~_6Qk%~p=CxIr=_A&tU;GLqNNei}5COz%7vIJU(lLP~=F_i4 zh)#}y{5##;OvJ~j>D^#d60*YPqOiEjx>yaUi`YH*MDTUt&`wEX?+ z{_M@r6eGFlKFo8+ppzR;l66#M82uo2$yj~ot^qkPh#QiT_C-k_t<<$nNi)}h1#De_ zDR+`EpEvCA$G9oDdlDD0SI>gahYcyY!#CdhF+I-Th%Unpx1xJx74+xYfjfQ|HZ86C zNg8bh#-AhTmPT|_m6Nf$hw(9$6?)2Dm#&7)m!&$M0Np@pv+tlz+VanGxshFFphqXY1w~TDcbBeZ@(9&6+NGr%JDz>?e9v-2DW2 z7HAKPgp|OFjAs94H4r?%-&JXeI@wXPXv#=P+Q5iY+E`jEDesQRZytD0%kWd<+E=J5 zd_TXmg7GNuQz!A`cdt#dlP>f?L#VQGO~V}6y53k%P?caEx#?u6qo0FhxVbxFD$AG^ zbSP1!I@d|+ciLCLKP%(C<@!u~rT%k?tK5V?8hP^zY_F75ZGnd@v3?WIp^1gYK#wj` zIbKKcG?>0>P3`~#)@Se{FG%L7m%^gbE$pHz`FJ%N32=X{TBlFr7~({!@z!NXqPlj`~cZQV$ni#zP* z2xjH>03Uu=Id|*FcJEs?7ZTA`gUk*S$}rn)t4nE0ey2Tmv6fHZnN6Kl=|AL71yIYl zr!6$KJ451#Fcp0({NnIJs^z1Ua-2lo#1InF#(T?HQ&))@jEczI^)h!${R-XPlQW#9W ztUONJWZiR9g$gB#2xNs`?5fYl=4^{-Vyr3fd$JsU(MB1>-gBSy5k=aR zLL%?n8uBx#)W>Xrmi8754S6;(`1uH~Pq@aSY_rTwRc5_wBm+ZjUDM3QEKUuXs!XK3u!L5oEfty! zg5&DSb%nnV+qf6npKQ{`Vld=+qr%eKE1`8Th0Bp!FJaO(v6ePcNpzC~dxT1FQw~tW z>5KjJ`x`9r6W zh929`ygO&3#oaywXi<~8gBd%{ZX0V@%*;)k?4Kgr5QytQta|j*HaK-eYjg<>-`vER7 zC3Z!x2=jN0p8)Y8#NRTzZxOsrwQ6J123~0(Iy2C^6;IaeYg_rf46j!tN+x+O$k?6j zbX=-QshYAge-II+Xzw`o5f0i`Gsj#Py@0d2 z4cR;aT6-a7&8&w9v|%GmHoJ6$0Ynjt8-Qs9_ljSDDNWG)VGLMqj*OqZZHg=f-t$&E zzQjzpji;;)4PafE72@i;^kMUcVE!*y;|ZYOw%`r+kS;5+ZmiF*_-?>{NnM}{u)xn2 zOzV5Gp670!2?Sj0LNviR+ZQni&d$`{P4&(P=ZWzYRj~v4Aq?FpR{?m%@K#z*UK+On zK1+|MCwF6e<%MfU-8TFM-I9^1MMJRRzVqXY8LeHBqOU)n&8#W7ZkiRp$qNrrn8+t zXc?T)c)YNUTyYQ0-ps2~zm*$XO8L400bj+EykqPYUTbu21=Yz^%Z*QCxW_ zv~U2{HigRQSz14)K#7cVPIV$HS)(rW{rIRb)|O*KFGmwYKE>a^*UfpK^uXjd_jd03 zrUkiIDc` zWTfDgOa0RMPc91OS2HpmgTH-RYqZ_ND~5kU3cDvjLxlu^){u*#G)Jq^n`eZnnTyYT z;{2wv(J#mhWBffVT-P(S`|RoTW)oBgt`O!Bm9n#)MUI2u5}4h#b5-vJku*#}DM=}n zyKr;GenTtZXqt2KxZ7oFc!7anaVk#2qMLixM39@CsyP4I|Qmq<6)LGUERbyQTCvF}L-6hMD+0 zYvh@*gngFl>tUu+6RY2d896!F1=O?8-A~^X=JGqoYvx2%M5^Amz%Ij(O$!jkFPOt& zLFrM=CUn^>0P%2lkbP9CFck@TT6kPqa4mvNru&xo_k6Z38a6?TM@Nxo!}lGLod`Az zUNonWv4qAQsy`OU@Q`2gleFIbc-{NLnMwMb&Buh`n+}F&T7k6P-?SY&cpNf0Yl;#4 ze(4D?a^&ZW=)SK)#5p2Esc~hTx}{~B3a7%EXUBsAvxm73h1Eonise<#yYyz09-GpJ z%}uJt|cn+G?q=g034wMY3$#G78RJ)LQ1b2W^ zVMI>=wo~~hK&A5&;G433yD#Fq`2({2757B)XPulL?5B4{paRq^VauFAe#Q|}WF{ny z6(@MWNjmIvXn*NH#NiPZF?^G|Ned60`I<2@3~9!EmL#O*ExVpe?j(S96G7p;s8DGeCUQ=#x3)FD_28vmfzI z(jsh_}*?4kT)ZGM$L6RI@`;1`bCjiSQ z^K)@T=={ANNb=6r@}KFsZXs9D___ zw=SsJ=O5U`Gbvk3llM?>yxd|Cj6?W!*x+GhHlHl?1$nLBhUr3Kkh^@4t>YkbBx&aMW1|i)ozehE)|FIF+>4= z`km_T(I+3zewX7`V)e?VoK3D&szdjC=QYPY>t>g=ChWO+k7g)>VGh9rdv&t|>M$Cm z&T-IHWV+fl#1&YgcOwcW!kX<&fBY?nW)8dEHo2#avS|`tEizdZSYb=FU-WwWo?3-Oy(ESVGplTueLRFm5Iufm+?$6QwCg#^YS>S-nR}kNH9P8UJ1Fut z0t;N1A8t}%e-SA4koRF*9m)d>QdW;8k2tyuDO>!o5k+nCREhl|k4LIjRCat=QrcNSEGFA#B2UB>OmnZP_8vSz*q z`kS*9jlQDXuk$0nGDMPpw~8K)`uM{d76zq!xgaB3c5<8O?JRVF?q@q&iCU6QFE1Ho zv+*@txZTEu2{B}_;%7IsxO!HZvvHzgU4R!e-=0n0X}=;#=FGH5M>4(G%LsYzdMBx- z`9P`v1bFkjsuqDAGF-Ra^?+^=axCMm%OyFdV_k-Ub6NDXjHE06!{)-q#KgkHz(x|a zaB#43@yQ7A@$m4eNuLps(bF(8(9_V-F|qM+FtPBk($T#T=j0I(6cG_&A|Rj=Vy0sj`oETcQ3FxQQ3wAQHIVM#)WHAd1tK|*NX{9O83@2e z66{p|;RT{%pkSh-Vf{lvL%~5_L?;3Kn-|EUW%*yUz?vQ`a@JQ!TA;AiHiZY2Ej(33 zL5KZ&Ev0qDtgcrtQWMR;2yMup|LN!-RT!AaYl29Y-amqZ>>308AI2t13z3MN_Dw;E(05H{_Z|IJ7Xbs%ZTZZI40G6{mrz0k2;b?qb*TJ4+jkyZXh zywqaVcuOycD&`iHuC>IOHNY~CUV$%nb9@yXebO$@BH$hP!*8epJhTW9*CCM4;Qn*mQ9V0Q>CMTJ zdlj8TP}wGcd3ZXM)&F+_|GFm7X4IPJmr{Ptit;P{fdF?W0F{;48nJID9aRjthQTB^ zIBVV~&Ln9>~Otk3)Afn(bl-7Yk1gVtu$ZsX= zn8~$tdDTYp{#SdfOAzVRl#52uj*}i?bX))2}qZMO>uTDgp&d70s))L+J2D03sJbu^g2z z$esWzeL;{MYu=$n0xr}wRQ_t2?c-8I1IIr+@7Ll{z`6YdXZ{`FPakMgdsow3vb;L} zmK!OhbPZ? znyv+ya|sJN3*<-tmQR383l?q~AQYjB%dkDqSVPW6?8zX*@T4)~BI%>~2B~PQP%7|6 zAT2$pHlH}bBm~bQI4=(mW7q1v%G|=skm>DrZ`ru%3Nqu63oR#XU|WHmTUO0tCzgTSIEqWJxJ1Xv-xV*84YBGIC^^0FPrJHRZIID)k0s^*2 z^n_GKHbWbi)(8+;j*6^<6gX8B@Dv$+T^n zN3)<04Flh~LY~16_tbW_f`l%L%>tD#Og)}w)o9Uth~(D-dvBNalw~B$Kj0g)_7N~! zI4jGqvInCkzRezEy$K{+# zQK@u13eRh7O@A`5i-A$!adYganzI8ze|usS`k(@tyU8MzIFxWp?qMj#gXnl!nk=Qh#K?5^p(M9 zLKIB+-&NGw;j%UforYL333=>|!*}-dR$*TS<*4Sw*v1lkp_~tih z3p5G}^<{e3ZE2E88f%+B*sN7IH{D~l+9&61w4uOG${jAH$FoBCNH=<|(62Eo^{Q%# zOWJdQoSiFh3a$Lo@z3QOO{Q4vzJlMr9svt3MS5LYVXA}4t~NY4oeyY92C1aC)z5e5 z&;k_|XeoI@z*v8K`eP%L%{?<_(>~=DE*z3cvOX`5(qFZJ@&@9#;{=$UP=yy;v#+&Ui$i9kEj*uqJ zwMj4)z?~}9a@Y9t-#zE4N-~)*SFCfR)#JHQXj8?NbOTzN&>gqlAq6z&&S;#?*M6W! zjV08ZXc6)^+TQ|NtDXQf3Ayt`N4``A#zITA=_~^(Ex^DJ@ik464dj@+pkU*8dQ1l% z3%I<)w~n@nhOgI@P@u|PTdRc6`ce0b> zbf=0(ert%}JAkROWGwg<*&Zgl-gbv>9cVuRej01C$%ns;AsXI_`qtTYygM#&P8#HN^_WRHz6&h8_KcRhgrb!Gyj_1f(+m<^0IZlN+@v? znnx%@8yy~b5H2@!S$^2cQ|LVaF>z++i8B z4TJ2fFQuVhVOhhdJA1DC-fLFviuBK$9bX(M10RRin*QJ+H;9NTz3{UdjJF^963zutD%&&59Ah|?m}=Vu zSchE$QP|Z~45&)hRXRqAUtV?st%L3c!%VJb0c#sN-|?~s$1j2R}xsFpf!3uF2Ccb|I2lSe8g7^%sE9y zAF_iRd9hbjP17k!R)!}5eKpxdSXKiDNan0t^H4S5Y)CJmVjmd`)oTZ2Y)4i_XD#f$ zLoXEm1aKpW=@|U~0Ifh$zpHKfVib(90FXI64u=cg64z^%2dTq|0g2P=esA@}WzEA2 z6UN*9@B^MgS5@o|8l_L3!+a`BFEnz zjSQ|-Ng5R#xv*?PM~H%;-=OJ*3^}+vdDxr)>#E#12HT5Ri~hJ^VpJVF-r$Dg>4Yw! z1+EA@{#a`{&_=z6`wj3ZAs{Hb0(zZTRw`5#eZc_X}-)ta0E47I|J$*0(i83$*?l$A`KDh8w#MoSc zdv!QPb7Q^7ON=H#7GjoQaaC9VLo@uIO79$coCn{ z5&W)A{)ZEGu~+xZg$>k3mNxXneVbib{2qai;BkEr=nTcaVlGC)*1y*g8!HV${+H(- zAS-iwaCyY6?O_w8g|G5k88k@KQ*6+qMs2tUWB1<@B(*!LPuw6DAThVw0hJd3*bl$u zk1$JkE$%Kag@CKd8p5DY{{ZzETM>8jfuzj9UvbT`7LmoZeKF!JE%;yw1iD#T%FTVr z8{^VAnZVMi=s(M1JKK%1;`hJfY%CJ75%_H&7XGe&*iP|u=|yW3ecv8K9qisK4{S(S z%YN~|x5}UZKLLRVgV+)kZ+^IyCB4g2L_y-pcKmS5iv?+x-d5xA!syZi4;r5%Z^N7b z`zb;UYKNgw{mvQPuwWME{{Yo&dG8wTqy`-u4c5QOeZ0=+6cQA4vjRt`!{eG&455^( zavS-v2EB&I?}-$vn^*zKB;W@!wyTv}9+u+|PBg4)ZgvD;3=0|pR%qLx`Gy;*h}5Hw z06X9ZG(}18ZiMilbi%HX3g`@c%MolpyGK!e@majol7CzfC8vpW7*a^mjDO4 z4T$E}z7R05ET?}XY)w3>(G4`pj7{|@8;_<254dYE7U+4v5|$dQ1-%XxUqRG|N%I(% zNYSa*RE_V;9qn(o7=YVO(UE?;;0GJIB$7|Q7f7|Y#7b-kHa|`AA`6>bpVI(5Sb2f% zhX*PSmy+La%MXeLBzKY+)a|Gc+xv5bsE9(=*LA(FLE8X$v69PhPnjG2@Y`wR1HQ)p z0InH-P;j@{UM+~=aJ_BE*8nZpZok_Ja!%u%c#9pyu;JZ@0i-rP zLf{V_?dgvXd^wR&*<`utu?Gls0lE8N2PxY3!j=a6?0s<1Zah}>$F8GoOMyi37O)%N z4^YZUDy_A*-yYOK@RRh%x4!$^rsDuEn;R8BQHQS0adke2jCoo==7{@=2>kDd0H*#M z4xT;m2d%#6e|zFkj0XGpTw#DHRyz3OYyTTu1I)je%2!@H$vQhqzB5V0R^i1h~)Osme(O2?OwjCc3=;&BHxZ6 zYB{_jS~|CO8x?TZ7%0@qOjyI1G%}O8X<30kP;m*(vlW!W(!(vt7j++hJOIw`F^j_t zHPLhzlK%j3cEe=M^GY0|Y`>yI>Sgm;1U6VEsL;o`DW4|5_@%&KI^~bQflSYwTKnI4@KP|EBKp{5(ct+Or_c)BRD-|VL+>z9J zVp2w%7GQl&*pB5+;GT!q6du+*D}B0)3uD@pfUGP>UT=?RQhr`}2ZMy+fgp{!=MWE$ zEph;{G^Cw?AYTrendyKM#>h_K6aBFlfTmAnyRTZ4O!yW0+M zLW0Z%_X6DEtU$h<)Y$Mr9%BG7f_CNo20W46iakD;m*Jvy6r8;13| zk-i$lc&-kS=lOc!rPQ6SE_d?91DNSM+#Y~!h}8?QHwsS|HW-kHj2o`Ndxkh=$+)*n z0Gp}}WQ4dT-EYPwr|&7>svDeoch=rqd01qo*uE~%80A3AcI$?9-_B5*T|eBwg3-%D8G$st85j0&ENH~Zoc!Z!xM`Y^+qBdm9TDiMDH4Pp1d z4>GHgT~^&Ru@?MJ5d=kTW@otJfWy0*aud3F*~zg|fM45uK+2akUA;#50!!(*+;7G_ z9>f&zwfY=68Zf5d-qz<~^v8=KBp}<3#sKhlED0r#n;YU-s$Bt%iD=uEy|3knNx8YU z-a^=r!z&vEVk{4YUjm7BX1%TGP4Ok$&dcOD#6<`ju;+{Kj}5w;c?<|nB~%wwyYq5? zwk7!4+QH;50JWcS{qQQayzlBT;7PT}x1hieBpVAT1B(nkI3$n*6`Zqa(5JFA zdhLl4MMflF{iRrfFak4{8i@40u=SmTD;76V;W~K7gSjP=JwS48sNtqfcDf)Vk_E4U zNhByru%B5VUr-?5*9Zd}@wVGA!!NafBNE9jwHmI@IW5ird4b}yPa6pD&G9-`cLPKM z>u>(zs}IF+ED#yrNRkxV_mV(^>3+Cwrd@#^M*uDF*OP_0>OQzY#>9{}9#_P$xJD%C z*Zie{+wFi5J&3rst{fe84+uW^aMdh@jPRE8Vt-MF-)%k{j-zY=F3|*$4chw=>DLL~ z1N^VKx!7}r1e6{!4Zu-v^4NEYWF9NGT`g;14{SIM_QEkXJ0GqcFpxKkP-|~?xx)c< z{%!p*0%~A6$Aqd^o18o&TH(->()-~Gv-n$WCf3q01Wp6rWh2Op6GxamDDGv1PXPd5 zS=Swg*7F~Z2W4Tfx%zL0l{&23eK7%Ye~SXJoJy=L9VbHEZ*j30U)^ase-bcFzG6n8 z2eHLW5A$4jU}-ipJVTO|-aOv@+myRAHq z_T<~!0oCObZ02bEm@1QRU@wa*$c|WsIyy>;n)kbq!rx8L+ZBtN!vZqOl7?Y&h7oXY z{Y2js100$_#C$|X*8W!O<%!NiUePe`V|5(ZgT5k`s)}e!cPl)Ek`(FGJg!s^vB#-t zT1Xvfkgl@2hJr}9JfAE89Ze+EQt6p=9*j8lzn(lNcfO`3-_^bj6VOERBf%@OwV1F6 zZ_@@zE?Qw%r-nBM`jE;aKKp}w0aK}D01Yc{Kp1+1z3pMv+hEWA1T7?zW%KFSZ7Q;h z`y4{eLEZ*5l~9B7+ECZ~j6gtG*m%?f<}vJ9(?^v`8J*P#HUdIH{5Hq10O6wo?3Xj%C`Wq2d%nc z7zO}ciMI9~aGF3NxxYPd2Z6fSDAWzNJK>TGo7~)+oAZeXBTHKM{-L-0;iO#Y1XyrA ze@p<@L%qN@0N(g*$QRUp*n0PU<)kDJ=4kgnKziY35qF>Zb0Gt3I03Kp+W*Vx{K@&<$O4}4pq^7z_;gzBWbDh97v>uVco{sfYQeIUv2*YJTZicV!-dg>GZ_|L~a-m03KivJ@Dfi zhA2v{`6PZgVUeROY`cP|kFFLSatA6<6kC$a6x-70bBF|UbOlF-#1qHsh{dHlnOFisfILiZZ@9i8LgWNM#hBPAJe*obl}Qq6 zHBm-wsKm@x*7L*#eDv=ggjdzCYj1DFVIG~82?*c-G>cyTdyTDvrW)5owUo>kVcjDz z1JK}Eg)v~sF)P7Ujes7zoC*&sG=}8rZZ5~C+YBU#r3A5E2I>yhw_G{7^YXx%jc>qZ zRdoePA|i?{ecQr5o8Sx;EfA}tGPJ6K7Ez$=STQ^kwe~#YW!X%nX`o{}5MSBsxr~TEi;ShI ztjanv<>@>hz^kKD4x-C)N4X^Jf#Q!Zj55hr0ek$*8#m*|0(!`wQ%wpyf6oxw<9p%p_c9;i%E)iXON}~rED%rFk|@bfumY^>LQI9(6d>tSHtUj><6v@E{7?u z%_c2_qDO3%Bkpk zE!j$3;-V>1X-RmZkO3o;!#9gf7wrzEGjRr8@yky^Nhg0Sga$7zoqz|)PUp;l z(;GDEOi>fyom4{K~?~Mjgl;zo$UczW5j;1!!?j-t)bmQ{IdnuLb0i>f9 z63Zb58?~MG@jIS_fINU0=ox-qGTIRfOkPi!*{$Ly+slk{%IRyf=6zGjc=6O7OY~!N zJdUF*yn^%7{{Z;F2Ez(Ya4X- z#$h(yGr!ZknRytmC-pD){g5bKT>VMJ+BASjxIVb?)38X78`zcy@WPQJpzx9xU@gWv zA3$5jr(nT{@{RC--IYMqy|mib`r(8!sBM5Zwj883*S^>R@>I(V;@j=E z097hjYWZ)4N9nDX$b*Q>EzZK-Fz{BulEB+y4&RmlniwXjVzC152KP4n@aLwIIhrX# zp4wn3fc#RGcmr+YXUs{@aPcC#X*b!2|D(} z2K-@I0$SI$0G!L+=@GS?C1`dH#YJJeJHK`M42IMwtg5U_+qwvpY)+?BGgr>;Hx zJts(V-nO;?^o^(ks^@!+AYn{V_aT;e^?&&6bzkjo#}VqWxKVFhJW9cI1yBXf*aB28 zRYJy#X11U#_xI-$2up_{2xVK99{oo+5u|1zn3g_dT$B3Y%Tp{y>nw=G-038KSOLW} zmIm8$M)+>4n}dD%>xYNdShW8DF}rIg#qYKxYQ`v$C{#ryyev-m0z23Qb}9w-(k?OO zDSg2{!<;%n68OaHA$`uxaD8qu7Tnw)TVMi9Q}~uObAA}M!|84C(4xapwyW=KG{q!D z7Zz67FgsuAgamKC04X985)elA;?Ja?p~THBV1<$-u>iVI2esBrMb2KU_ru*SZsN~6Uj8k_zvW%8v(0f zgflo&y2(+-*FStjz!oe;u6mp+2NxDM8=H&)?RN)uKDceq0{+7Z-dJ3L?SwDQt!zL$ zySD7CJxIe@NGjl!Ds?M)A2Ed0;kj|o7((o}J07+o_rRuuFYOW-Q8O(ekQ+*Z`u)d4 z_+Zl>TbLrv@Uh62+D!m4xB130W>=_UJGhBeKO*V4^Y_B#(os`XhO46$5fTU}$5MT^ zKF1X@QK)>nD7E)+qNbB@%DP9s+~TULf|xLPt04{i%Nq#q>2P+%hr!WQ#wLNvL`{{V zc3nr*U+}{u%bZ9w<`b#78g5uy+Q$^ho|-6DbZKiuk*iq8uUjbhwU5^bk zZ=tpw2HW9k;FhKV-P6k8*_DTm#n{Akd|gQ6m08bm@;YeC=ayJ+RG83o#l=76f6P z-lpBizWWWZ1cv%WhLd7P`Q?Vl>c_$?efYyl0_M&@Q?{pHK>ZP#od)B$f1w#RNT zj0pzUxwW>w_yPKnbbu_R@@{y;4BA5?y_JY1eDKZs{y13_MC26fxHi4;2aMKjE2sng zT`={VZcX?AbUs*#dg{NS+Y5BnYkbF-I08c}{{S_w*MGwiI}K!mw@*AvO(}|R3=quB zwgO1RfO^{e;9gC^2ipKU#CqKN^~Z*wY)RAVHW*-E8Jp2+!AQ-oBIg11Gm3+edclot6! zg+cY${jmximQlS-z3FOjsK5n~e8;lHXk5j(G6}_&?BTmKC z)kGY+cWraUwGF`bIIxXPAtG3yWnF^+tk?4#-|)k8HaVpX)PhF>p$u)Qv;`z>u^ZqH zVK#EF*xGEEhcc~vl|_%r6r!jD*5Kf-$FnV6Sy-M+La;@k`DEwmV~IhXmr|=~UCCA0 zeQ_M=Pg+d0Ga+T&;tUP3=qf>sMIh3{i*RuqXhv2|7j#PZf2H>e(eis z1lmayeF)q0zykNSt_`<1wiR#~Ar6$uZHQ>gSb6ik@smYzE5=JUsMq?{dg3t7(`sig zzs$n-_r;WxQNbya3aJ1{Ma4`(-Ku?baU$Ok^C#*D8o>1aka1jPaQha-JOJ_ z+yI8w`hmtZy^`$271^wBD!8SBHJ+)TVdfC~+UL-E<2995R83bE90>Cnn?gd~E3xv% z7}6<20t{S;lI&)2mbs92(7@Nr!er-W|D>INc@ zvUz1iQJ$eEk~`gCd5?C#PEP)38SIK+x%^Af)Q$Y~oNJc7LMYYK9CAsfet+tjb3-bQ zIW()$V+?eZG3cd&IIqry3xDr~dBNo3rhLvd1m5Igrl&Ynb7?)o^Nvl~^WlbBA1N9s zt4hj>EK=iQc|X_<{@BQ7Q%5~?(!vgwB(b+!;gV+3RS;8P4emzv#12&0DrvClZcn~7 zh7C6-?EQ8b##o^k$BK%t<@;mQO(v!WMzHZ)pv1ou{35Jm5-9MMJf64ffrjSRB%QX# zw=3-3DnhbXM6*tJ(8t1_n{sj5Qb^bEB@e=ZEFK%%1LhWOJE8JfI zO=Z!0+YP&E*QDvauWT~k!`5X>+>JZl-hNicgoSrfH|Ryi0CkPGzn&k&Unvc!o8PCE zu?c2la(DE^ssxq>NaG{4tnmkX3+W93cYVrUem@1>kybz8E(n zRmdJkrWs;ikT2)8u#AjF>@DUu#01imS5r>X+SjyzY<`;@J3`31gpsR~E{sO!(BNSc zl@Dgodut%u?}n1xb8jpGB=pXNYgR_&9l&p2Uwl~6*Gke;(~5~*+RC*0*+6cdJDZPv zu~rGSx3J?4WGq0j8{7~$#j!@3sAjanKK6}WnVVEWNjr67wiu81oCYZ%_*i2g*r|-z zw@}Ad<9r8|XZf5VDI|zgMweY7ZtT9B@$Z9VtC=Bbogje7Pw?KLTHb`-$I}`z3^Qg$ z5gLgp8ukwuSy$L!ae<_&sVzBt(TF`&8%RHGy|6slk*c#+QN=g|N|410`w)LjFi@GH zNvR=e0KT|;z|5e1FTbF~1To10Q{|@@#Lvo;{!euE5-oK|Y)G#)wC9Y^4iW5w_OD z2mpd^3E+@%CwaAw*4&#Nu-o41Sw+RSJO2RV03)$-x=Cdxivky}8094KkQDF0we8Lv zV_@1@SAC9)UB66CPRkPqmYhzjwwVJFW7lKO01-e{-G3eJ?S~y`_H_Z*au^$(wkPf} zG|o)L`-tO={{SRnF`4#JYsinyyZ;EJ(Gj?Szmrt@N9D+l(-my_hNg0J*Jv0p<)yxv(BbsKV?CZ8x~` z-q?+{8h{E%t`!zX@QWMy98gUZZtRMxb-QU*Je%WOy`G|KR9U0fDk&_;<#it``Ctyt zW%IKB@jcg7gIK=ZTEowa;_AARqPiaMzF0{`>A2eyT&z1T7F=s)N#h1(8nLF391Hcpu;nmf1$0v17P6KH^H*lbP zdD{R%QQ7$98d2IP@A4x3x915_ML|JHXNe>vY##n2>1w%VsGkkeV2BA8kiPpnWqJb8dWy;z6yTM zWpJ|hwNj$D0o)7z7z2^l$m`nH2>_@qI%$N9>pNIm-vH)u$u4s^YEewmOy9tbED+yy z3)07@PBCNJsiUXuEmSn+B@j#eDuvmIup;)@*!p8f`!Apwrh8eLRlj=lsw7at{{X~d zMz3*W_w>QKR&dXmVaD=5MxQV2B?MVr4Ak`%v~|W6X@sh$OWSc_ZLpR7maJIW;_l{_ z_hS{*xBk=D+Z$$z!uTSpraGAK-D#A)$>!qTc<1+Ier7*b&&kcT{2akD>gecFwyF~x z4BAU;U0`0?nJ;}e+WvcB^~pQ5617DWd3J3UNs0-1}E~i`D#)R|gI3A-Li&E(O{vVr<$c@GC;Eqg!Mp*tHXk4|y z48RfVim^*Mc2N|JRPUup!|JE0o^JA``^k11h##gj9goZFvux%XD2M);zll7DeF! z)qc@CL-ARJc{K}_%jp1(l{jY~m>hfG7*v&3P)R$63<&AR-v{tzZ(|Z!psu8-jYCM1 zD+OKezaL%x_?I}Ys>^dqs#oy$Y;=YM5IGkZ8RH0_!oAe$_33O^R?25Zj-}++9mH~* zu?zhz)Q=<69OoO^=JGHpwJIf-I+(8RZ|R28r1frO)N~WOo<5#<7blV!v+7N73fL8i zl^uL6E#>4k=NkF*M4d}~6e%;EO(LEBlyn0TK)C#Pt0}0b38gI#KCLiwupgoKvV)a!*CQt;xpX78b`jf)ti`d)W%A${WIM zxZGdU8;GkAozBOXzQCV9?~gWCqbq01`k#f9&B+L0jmjyv{8=ttSPym8o7XH~euZs0W?#RNCpE4n9YdXNG~JDJ^p zF&ke?j)(9#qGs_MDI?bb%E~2w5IRBhCu5IUSlY**JbA%aDj8bGat_A{sgA>MY(qoA z&_gM+4aZzc&L&_I6j=$mI=TDcbFkQNj}mXv*aE<1l`kUqY2FK5n7lw>SJD`UQ>*!b z7P0ceEaoLD6ox%PAdC_!;+!+o8BD=ISJV`JPbU-*F4xc)Z@>iLh-#K9a~X;m3lPE0 z?mafd@Yhk&h++|mNB;nE*pk0Nw)hgJqMm7*NK(wqZY&gA&e#Fc%8cN~hCfYOhvS9# ziQ~WVMY%Qu`(g!-XF}^6GLI`8eL2D_matQDcD?|a6&uB>#ErYbwf#>`u^D15vu*3K z!IboAB!y*Vf>hhObG!X6KLdoGrjunkWNPcND?3~Bzyg5mLA|fW_;#af5O31hV+#{v zJ;Av9;Q;`2BLGbrje2C1Mi28?upairtr3h9-p1+BtA2-k3a3*QPJFQaHY6Tzz4pKa z4J^7w{XxTb)n(q-u{iW$)CmGMo9sxqBw@gd+%MsP9$myMx`WUKvHt*^dD&IU#LUaJ znT5X$c(J((LF#a~IvV0V#qZSnU=I?_um_GU(+op)0QvEUM#WoJlWaV&ChVtvykH33 zV|hb&BS<@6dt$2Fbtj#_=MYbo)l#dVjEnp^^XxV9Sr$mSpY9;pfNm%6RJEZc3q z0jI5KWoCM6O1rI!)I=C<)E-6+%kw;*8o?~o9}Zk;aEK&`4x|IP#j;Z%mTu2SHNF~i zaBh3T2shx4aqJ&7nLSL6Bw6W(=lwZVbb;tuPCbeWf~;F?7K6LuRR9#*yg z0M9%W5E&E#sdTt3+n;akg>iAE*e%xJ8y~hQ0dz9>6@s&JLFa!gdr4BD9}(n^p7@wX z%dmA8xgfo)f4(DjCD??pu(&P1z5s57XR@0cSc~iro$#vc?8;5|y}z--G)~OPamK~A z7RS4%ZB3}MuENV;eLq{^2=spt*pL@tfB5||86dl80{mPax9N#kY{QEHHaFYcW5g=O zt4;5=rM~zAG)7@?T#@r!jfVJmED2F&0?Zd~Ey+DG;5WM;C{a0#eM80-wWh3bQEQ$6`IdxWrE!fDM~|E!X?u>gF|Q&HK(sxVgg_q$?nmWKcFC ze_(l5*lp}E#Z~UE!>-r-ZT|o`aFKumP`LFYZ>JwzL5aZgK(rZDVdMTR z-^7qNpF!*}0kMUSB}9p0L|X(>EThO_Zo8AUu%w1N0elToj-+0#p#YogrvCs^HpK$X zRTNQ|cM7U~2j_q*7P43h(^5pr&8e1Cr2Tim6}g3MOtG4}FX~nivtRQA0K=ZT-(SVa7`9xm?06> z=#j;gXo0srY}^6uip=jasuL`7$wwq)6Q&lp`t=wB$!Az8R!C}vFt+hjFdy@Zr_Foo z$1P!S4#iXjKU-psNft&YNnas*+wX;^s+yI_iGVCLo1ixzQGhU+*LNRjY7DWKh)s4t zcPo3^{-YfO_H#8nRhhkA3}q=<<5i80;BH9kj&+*adig3AVC9d9Hq58%&(j;f*_b0N z%(mRiAHNNZuBjLVp!Vf+#EHd4aUdL*rKAYYDsLwv`lv|WZhqawb5OHY`GI?M0KU!%M_n>hwH;&zp1vYPkT4@xs^g_)eWl9s zKEciVszP&$$qGtJ_@nYZz;WtvVcYJ>WgVk|Wm!_6Geh8(9}yn69X&D3>y181RC4Od z!ug6KvdAIP9Lj&H=VrH2vA5S9)7^VNSA)xjS$(_wm!r)qJj`F0d))f(htnYy2U+l+ zl=5&IR8q}SQYwV>1nzyW)7ut#URyPNK!|u_*t`094^xc29?L+o9adLneISFSZG2bB z3Xob=HzRF3_ii`70GH)9ARHG> zo5@JPI~#v1ZT9~F&Hz^z+#7YVwh@9!s2i1Sg~#WNP6}$7KPbsg4y3)8<2_wI5CJ=z z3vYs=&lc7!KKR7TPc(ig8(996$o}{eO1WW^M5@uY+b|&8&m4Z=6-UbQ{AuUP^5pHE zB0TOgcOur>$DBttc7;~k8-hJYo;ljrHou#3()gMh{dFm+yddgheuJD&CyDqA&|YM# z`|`K~0PmRF5y4S46-;$B(zG(h+LA?jsPx_T;ygEpROS2PL^gDxocP-q2CeR2t0?r*5eXEPc1{0i5Zv+ zumh$5NZq56T}Ze$7u~#HUvgn@El?R z>Keg-9{0ob59r_i?XX0d9ehXlP`rvdqW=JV4Di%b$P#E|jFVxhPdEXlM!odg%H1&O zXSh`;O}FtLKG-Ies6f?H>?H)*T0K#pdvAa<+|rJhEoz8jSf(mfV?{c39tb4;aY1KK zmFvqVuAZtIIAH*^l`Ih~c;B9O;}z{aHmHnsa8*YzVy^@04W#&hK9?8ck$`BsOP1#u zYC}-4$l6jlsbz4i`bc2NPg}2% zJ`cN&r^3eV5ltrk{eJin+ScpW4iN?o!SW#C3_&Ac!3uL zW5ntw!m4k=iws5u4Yr@<_82OLDtYHv<(xx)uWcvN=K?Lp=EmI)7ROHfd*WCKsfnX@ zk5q1vlDgvqPyYZR&IMt0u@}OURPEEt9tYRyg_eg#lEmb}Py&!Sk5|&f9D54Z*sbsC zaqL?&MYJ{b6gyJRW8Zc~Qd<6`Twux+$RwuKnAg@U@AD!>;RgPD-xTEBodD@4e-9XZ z6*AMmc^MJPqQUIDU#*WHOm2*mW-XSAw;6g=h}PO(p@C-lTVa6NnpXi_lfVaHe)xRS z%{4)qX^f0OEY87=$G+cAFg?j3fd_l(+TA*T#wZo#wWIJ@9rnMc*9qR8S0L)rMfv9q zlH?gessL?fY#?T3*WG|`q}cCs*4P3~VU#FBz@auG);?nl?-(c!N~MbnEsKAa!(Uit z)NaK{0m#Ek0%J#!S~WMa-08nO;13OQDYmBK>Il7u9Qj=0L`fz?Doq$w9wm8HA6>9L zv^yq{;A}cu-|6Lsv#pKJmA%fNZZQf=c*$ul3w5{x$EWw(4-V^3s7AZD`lMU&^TZ1? zu7)Pc-V!!Dd0N&y4X}!C3Hfzgw$|8m0DW)-+Sxm{3Z-|j9#-P`j{1uzCt!Cb-<~|z z(wbe`-e8~eYTqAD3=RRy){;neeH`LBY8K}A&^2lIwi>zKT_QUzP%47wW7m$D z0uc-`$0R5!D;NtnnxL(Rp8H$d6>{XUO2is^T5^6~?pI^>;GeE7l4^SH@>HIX#8j>H zc!&Mh+wjFQc7m`>A`+v<4YjO$k$@IX%ju?OiQT0D*<68h_~L@1j(RyXR7atQAd!pK z&l;KSQwvlRz1*lEdRSqpnq^Z>{8|Ct5^uJ@U9kblGq?plZ!#~+PND2^r|flH)NL%$ z>ChMlOa1<=L)Tlv35yW-n0kI0;Wr z7Ru~F@j2)Pha2yW9#c~lRWYcH-3kr5gUyaS?lgXL$?#qo>v3kHnz9PT1}ERDHzN|2 zAlqT+Mlh8oNW5so5o;=?n_>Zs~W@vD*!rI86Y_4miBP~{yTsgzrf8`;pJkx>9s$4pBq zM^#MGR7SGK;>8?X9Ak3s&@_P(pp8RjBNz1fjB}3xvGTp~<7vmUzNKW+6q2hUebMT*K43J9;=#n=CdSRrEhnCnjEbbtRS)@Wgme<4o0DIC% zNPB5KhL0T&pa2Lwi{aq-w*Y%#v&lk2m}GSWk))D+iNpqI?sQ1nZLwtE^S}iiJ9Qps z5>-?+PEkDz6(yt76R-rteJ|7U#dwlgRZLX%u=h0!w?|)@J-t0KPT5;fNScnQo8^^v3_U%4I$=o92;I<3 zC1XLh+guH{!ErIWI`umY4HANMU()zBAqxR*&AH!BZo-BlkaV?O*VTvNqV+5 zDQ%V1AGX_L%Tt%jEV9oT3PG~Qnm|1-zvY2S`Nb??7Xq z>E_4N3bRH-nNj6)@|}8Ye9xW$vZ$`3teh8(;y|`v<|FHU#vut$-Gkl)BokoZ{rs>R zcPt2LiW_x8aS^b-m%X{^d;nVLx|El5&ZzbnSzKL6m1HNM2^Ra{F?;)tgATCk4#4b#*Wd{)6_|Q<7maT3)_SK z3|eHgOC4nKsna71^}X>tS-nCL-nV|Lb`oE2sNV#9G?kSij+-c@rISXmY9(z&c)f*& z3Wu_cmU`U9R^Q1O{Z1-_Wafs?+8Am8XUjtc7u3=aSJ{Uc5~5uWB%fQ z92RNviYX+CrCP56bXnfYSTN?^K=t1bZqnrxZF+bj7UV_^wQauq@HfWP7q(^3;0)5{ zHSrk}E-4zF38~5O-(kk*jymI>_NuwgVI?a%p5cle9BS+D<@CniHT|K~EiC^43IuJY z$icS+?R;`tnMoyyB>CTyjLMfn+w2xry9FIFzwBi=p@a9Bsc7pR%0Pi{wY*Jp$B-WQ z!O|khP&JM#D-M7kn(rxc?wgYm}F^*7G)Q~}28{#tH9f=13UDWn+ww|2KS{YCqe+`NI zZN4fRIS^Tv!0=8dT<0(fSK}sSBE&mt7W(7K@N&m??_+R0MOZccY;E{pP;ux$!<3P@ zJb7S;rlomejtT4v_~e~RH{DJX`5(p5*S9fBQ0+iXRklid~sF5=s7=e{>R##Jj>=wJ-VV9bGUls41n)iuHWt!YN>cp}*Xe;wVyLhMm5X($IWsld zfpnCz9`T(|m=`xE)2o6dUvx7dXm7^JBoPb2^j z++$KQT!!y>-q$u)bJLrC81$JYMKy{;BHY_lZo>Znd*BQn!;Qz=3eLoEF}q&RWQb4j zU4iP-vjO>G=d<}O^onF7Vn=${Bg}7sEa$}7`5Zker-+tW4bIGO$o0nka(s_XmXb5! z+RWY|<_-7f5jIJa>1SGJ1y1E1zrRciW(CP+B&bu=0c&9hwZR|}(;FJRhbN16Ntbbb z530kVu^5t*B+5~o7$;`~<)6d(0losxE1&J0Pwqb~T=rBnkyM37W2tSV6X$_@Zvs>H zrmbSXblO=7H@GS~<5l}FhMn^K(n+=I5=I7@88)%O|T|GsmlCDDAAT!8qx38Wfm$O+lV5g;$ znp%_^R!U{{a4s5r3XV2iu%mRb};gazgb`G(vxsjkY~OJqYr}bkQ|IR(Q+Pqgj|K zE32T!R9a&O42vRdXvk!>uR~grqZJ_E9fvE-;LRw)NCN^a!1cxhG5w$BxqTG1v%?%w zf*E5ne-tU;mFfB7`}S>?iL)BPm^6YqWnD1d#o4cGpDnT9?kE7kKt8`KXVJ*iQMA6mrIXXyg}G9-|!U znxUzxinCeox#-^hxW75vwA60UQ@vG4Q{BRxyLo$mY+~ zlnT(t9^@UwV1F}tj-PyGb3>H&r!Gm@ELAW_QZy}R5s`3*sRO5%80{PBpK3g-@;T8X zomfK32Im*=*@!iP@e(T&@><{zw?ABZZp|S;RJ;$p#;sTK=NmL}8Ba}I(w$YX=mP!-#s2^t06t@v8Yb_c*3_&( zS8i1KH$biK@Hf_XPz zUPoU%03qsl$D)a4mqWgQRFHi@*kUzdwa>q<9;p4#codlLYx>{^ixnWPhd@sl@k3$v z$F!>;vv1^j`(bQW;DQMA7Q_O_E5PY2QZhOaRnXX}91waOYaq<%dt8Z6o5++|&&wWR zYe!M!vkr~^;q}HzmgIEv#BM^c>3=*4Mc!eR)@4<4QdY##PMhg&qs$(o*Ae_A-wJAU zfdG9P&44X#2buI3zwGrzc5g=>Rhng$mHBwu8mQ3sl%A@`V!molGP#~k^8%>dBH43g{NYIOxcH8hjt`3i~;g#O5 zxI@OB0B!5fA75N;L9xvgOc6%xxAWr`G-i?VnyP7X=6ctWd#ZsU9oX8!*S7op@L^n% zhB(?ZX$rlcSPWTr9c^xh^1~ugm7yEDnYhCz^42R-z$(-dVE zG6LK1PnHaPl9G%dshUZodkq?a+k5Kr18cCxTDP^YQpZq?f%k`GgG zZ*F>iIOcNa5=aXYNWV6}_;C!zz4GSF774x$WDy#TCq}+>-_F>a*x+xgyK^JR%#orS zSY3f6eZ98DZ60Txc8x#$iW?d&?n?BfjXx#;JK$k5U&L~KYFxFnk>vAy^9zb>%KIZJw(w@B8i|yC`np~ zwWC|1{-1nT_G`FY{b}o9TBWZY)Mb1G&2J6CHUx`+K?9C4ds~yvsQ&;5Ntmb?SB#<^ z#~|6RahA4J%F3D2rlV1cByOf6Y<`51fuyioBuW9?Hsp*QO_JBiFcW30x831ARsM;>|OPUg$>RdQc7Z zQj)rls3-EkjoIAc0Ds-p7B)XF{{WsRi!RRMHZ)b8+kxj{zru+0gapfcty}IAa7DFYfESG|? z1IhSS7T=%p*tH#%f&T!~sLTV40;Y+Z^}ZZgIU_Pi>(8D&i?{66SYje+m;y(Rl0-iI z9D5Edwv8aKqn1~?tct1^y(mB}(&vmwl`W_Rg;)ScVHvi=ucfST4VP8njh%{%wSYWW zmASvKwmc+;26sLKsFKYl(y;zR`P+Nrc5$HTDyOJ)c-k+AUC38DO^Dx%+esba8JL#U8; z>2fz8j{Pwd(?nlFAd(*CV>R|dRQH{JukixG){gazGTvORTkR!=aM+Y z1j{zX9#)L9-^6U!zn4HP4%kMN1TsuPP&I&cTK3$Ndv(C_Nug1rjEkEB6kUeb01qLB zf@{V#2*__1mwhUPb927<0!gJTXA2@Q1LY5LqSxH|dHUnZ(o@9b6;o@1!uK9#``eE! z2{Y0fsE=_E#7=K=x7A_3{HgpgJeswTyQ`ZJKn-hgwHV;x!<=Wv4mJl8jEz9;PxdYZXyz z@%F@jwz|UwE?1Po!Z=Xt?$>MWVfMB(zD&#D=QVldR&kqDW)*FDW^0kokBbRn9X}lnJpeyOk{pt&dC__X6P~W4`+K7lJ*{h;wIBo zm@usL^*%6*p(N)mqbl(*roak9+HfObqv}6&t7u)M?v~roU%1Qf) zVyVoS-E5#k3)}frSZ&E;<+dqvzT8qgwPz}(T1e*yzo=CK6w%DMesjGap9KX6E zvUOH=Q~sPqc27I$0{A!ZM1XV5!RvF1nS1W_18GtX)PceE{{Wm%l2la5Qw-6#hE$J1 z)~3=RJ|A#A@om_?%)^^j%~4jOT38>uMZbne{XpCAjh1)VC8>r=`X+yii7t=^8e9%n z(2>WkCmu+WSU#krlJ_u<}llV z?`1;+;5Tw5Jw6(dQ| zA8)%}bAHo0!6^7zMOCLjd^(&0PvQr#IG~QTHD2dho!;Bt-23tMAZ=_qqb!N1g>w%0 zDmL;&0FWFcPo>iU>w+%iKQ)ZcYJObO%D9IA~u#Vch8W%B&v zv^kH!(K1K^UTG&ML`i!BSZ;T{hg0dkHdUQ~%;=b~2~wIjXiHz$W54H(uVs5HOW8UZ zscC0vjMDd#%OZfyU;>T005lW*W5~xY?cP^Slgg200nF?JOpRvc9M-rrre#7UafQcgsWETj@yB04nOZK-(! zW3{kcwN!IcctD1s&@!~Zc(2XI{{T;X8Wuvd@*pfiFl+p_;Co_tsv0R(8Jgq7qe$bA zz8ik{#P@CXRbZ;b1--!feQ$;oN}SPYw7Z)Xl2#T}^4M+1*85^5W0C>Pa&(=ZY9sC?T)WwR5)La(BkKGC3qa47A>b>0NmeNLzAs|S>2lht8pyk-9-TC`kz2fDYmyrNyZ%_k*7nw- zZD`E82-Bo>_x|3Pp{eaG&i698y6$gt_c*l^E-qc2gEQ@vPfgsmGBOq`NqtFZA@WzQd0Z|&pOe-Us z>hG#m6@Aq%e#Z@)FV1LSijsn=DtIUHGC>JaSQ`tIc0YV``_TD3%gyoIr8LSae6upD z(cgxqr)|X52fK}Zcl|K|qN0Yzr!Y_$c@amRe^v3~>05uInxC|pY#ouT$*6LPnpx*b4D&v%O1&*@zW9SI zhcvF5IwgjZf|f!xS`{Zv`5LZI-x?=5d3!?vYa3jEiZGG~tPv!O5=5GcqKl7GPhZOj z%5&*bEIf?)m*E~O<&KUDIuoGORb~?gJ0(YT2pv8^FZA2j7IdR6sWyC%U;gtU_p=@T zm|8rY+-f)DVXLQ19wwp7)n%#>nN)ZJ?m_EpcUV(f6Y*m>)a2Xww!h;$t$pr5zoqe_?aydFE|NU9G*np| zzmbT!3OM$;{IP};z`1;g@fWF(fUev|gUi(M?T%5$_S@Z>@O&Tg_T1dB<@5?O2 z;{KPrh8R*-6v9RgtruZ#E_u22+ZA+Hfqo&;9>&Oz!9SiX=pdcqtgNS@6A*zkM1+8+ zlWtBo(eG^~u`BCZqcBQ%^$KKiBk>z^azNl*?~96D$_jQ!&6?lKWBtEOTJ~qMM>>XC z>9oa7B6ntKm9}n9mFuMS##*T}439IOf~J}^sfmao;}$+f{Xyr~1vSyiIkC=83GEs< zvq~(=qBtgkSXMbwMmn}@FeC%92E!eJYU1w8fNiI1Y8J8NbLoy7*_@icw3*}}vv)}0 zrgTykG#u~1Hn;=K4_iZ{$9_;fObxIpTNo}d%qw*uGq!{DrBSG1y5RwYYM%V8#{TL@%Scx7AIjY`9>OCEmM&YZz&r)Z>0vH%s!SXdjI zo9(g0kxvtWPUX;}{{RdPuA_~C9NP;m1jpHYj$rLgPg6-KHa`zEkp;c?3Qd6a#YSt{ zDx9g8G0U9G94xYGVdGK{C)3*&4PB&bhEl^wBuM)e2E-A~_S_qE!PJ@Jt-IP{NNp*Ts z&(~~bb6l1xrCR)(x><{dWQyv+x)2SwzfQO-DD7CDWTnk@M^~+fdVDdH()Zm@rX>{8 z$5zoX68Kzfd&UC(-{tY_4;k-^tvo9zxNEx|2kULm<&R(rsbCOOB)!_JI@`qix2WiS zh`t7m5~6g0Cx&SyT~XPafCx4m3vbRjm;FVYnB-GX(6X;CpoYKw$KP|mIDz|1nMCnO z^Jtw-m%Ab|0ovPoet3ZCNlQ#6<~!VBvb}XdxT-8_T1Xr`F?ojRQdH>JruZaaXiZdfhs*XGo$!xX~T zQ+ImS4H6JekjB7UslTnqslXj9Ado0&l0^-v8CV7zSnX~0{LTl8jME3Ek<5XVl#Tb( zZ%gg}02t?U_KLj^ia{Irmq0*#BZ7Y&@e619in}+&Op+BF>bCtz@)!f7Q|0wBYOImq z6xu*6%t;3PSYOixK@}X}y){a-O6_)LH`Fb#+nzYbE~D)odMARSSixfZIq?x~@8|1- z4{CEYV5v}4#z_H1gB$Kmh5+1DIW@GZy~ul+3+fEOk;xp9w@YE^4CzQCg^b_U;Ejd) z0l@U@=ZqTmil7N(kGg8W0C!MsSD_Z$YvL-N*Jd)P9~CJ&d$$J0_8kql^uQee)5xX5 zO3x~A71SudOMafdnDC&QWMmL%MIeICeB<9{vA*hTF% zNRTdsO9G|cj^B;=z#RxvY3~%uz2O9EJCHh^x_xlT;g&-cqG?z!iBVJ)2d?(G#s)so zRmS8XT{pR9-A%gs967sHnaG9OX3%(DByZ(=ap{0JKMdEiLe_+z2_x1 zgm(lIFMfGFJh6sO(q=T!cY#}buki`GoAmX6xl3R&u(D4{>YwNF3jLU)un0 z4Lr}HNn$cR?WQJg4gEI4cWBCzFdgQr5YKzu@-cyrwUyoHbR~3WJ8ItdJMYh)Cyzds zA>E?~I*Ats_ycJ@6ex||u?&EPMr~@R%zweabFxC}k`D94ZD`LYa(DDN%g5Sj>O3g7 zWCVcMusrHKZ?+;%+0?~6LZLn;ByhzJ#Gbae>3}uH1*{R6<*6Y?;T)hA*aCd;`66Up zFbPmwWmUK$-hAKG;~6(@DrKhv1u;lX%X7B?3k|l!aQ1^U%?iT_sCtJXd#LV9HO08z z=K>vnupS)7wpY{~!)q|y-G@HAVqVdH&nr7^+VrTNV@;IB0xL;tv#=zPgU{6MgL?tk z{L3XtGak@Xw|_bSv|6=j7rouQ_Wt;}?H_5AE}))hnCXdkbQjao%l+}RwX+THM0GWt zpZ%L;t4~CxIF$bY^ymY;tVboezrW#(Wq)mDuF1x0DvO!SMlDx#lpb)*wuZ)@#*WwUBN*Bwxb~pU3jS}Zkjl`DvV{EBVd=DDs@MLu~amy_=4NFtj3-_q#%;>6b zYY;#y>x&vXs{D!44Calg-gUTU0fT|g;{0_TF_>zZo<(6)t8K%DHy*e)s-?4fAKldE zG|Z|ilA8hZws(Tomvbof3 zwz=cW8b$2WEE=M$iaN$5viD@Bs|$kH_TJd%ImQigbaIwn5AriK6miW*IICo;ozTki z%O2}4;4SV*uvG(o2*DH4Wi-*UhJ_Mz3K{oh`LD_5#Bb8r#OB%kO+8GsbB^vvrL!R< z*@55u^~EJuXl0z~l1D0cJMH$zPDt#NdpbjAIc8pq0cX;v%Ca+y0nlpXU!cWN?KM3U zN$}B>OOmOs>*;SH<}uG_&D{94GaHksj^z6Ddxcqp>a@#)E4+0qXJ+hi33;+jKc}Fq8 zp~x1$UOu=vjZG@CmZp-4Rxa|)o$J`0hyuzF)Z{@aV$ZbQkIZs-O>@r-)S9$2ARwVWYJWUqt!{Cp zkxOws_%h?q4tU+7(>8UUXzGPx%=Izrl@u`Uw;&2)sYs(z%WZd;5Vef=&(QHn!dtIz?<8r>w z$VwTrNy(a z@miQj_VACCTXTq{Zy$-|Pcp*=Qhz!$=2$6d_7TAX{{TvbQS1j?Q`Y7X)x3)dC8AO! zTZ^wGUi)6$jz%c!bBes>#IQgz`XnFfz1~(I?dZQv{c$}mX%1JH>7fQRXIr2a@n3S! z*HAbA0M0sMP0G*G_`giS;#+g)lihT`U$Vowc#fIdPLdeBQTUkZ799JYa73*;sBK!b z+!R*Rwe7*=5#{v7bh*^DtER3cl~6OgMpcRNa5md*@4ddedOp$R(Un<>M(;;{la|`;NTr?}DC5B3&ky$b^NtW2W~0Q_1Jr!xbmB zwCO5DC#H3Hw2g6q(U2|9;>7jf0oM~t+BgzMiV8}3lTC?czN6N}5x&5k_#H7QSbD38 zECKG66RF11Zfplz6MgpD#|~Foh+`#~5>yp)aLsTpr>555W9NWo?KVx_>MI$L0HQS9 z3tU>@?Z)SxopBt!rlF2Dk~&zoTY|53U;rc)JA<*~Yu}ylqF8mrj>=HRwkjCLtW**W zxFY`m=S)Ik)e7v$h*@2V*o%?CzW29Yzia}%si$})4NQ{W&Weo7ZNLLh8(;k23caey zJI?ZGSiG&HLk1gPRnM2-VsDAWwj8TAnOD69h+xe3U`6e6IN#R{)UhaIDr>O;AH}&g zxxVC!TaSDKoutc|fe}+iG_kM*C>;puN&5nCf~mVp*|m1>t^)2Hqcyey#EV+@ZNcXj zg_iJDS0WSMw4&j`2)bBbsV5Js5ZBZ^rWF-n4M_0|NW9starNhnW?!`V9QmEiJffO5 zX4L7aP?NR)0IL50h4{qhwYf}@t2H~CaDbAR(sv|{$=F`rcPq9n3oU3nO_*hdN=azM z$d>NlW1-<2?Q#ht%iA8s7HirZvbKsbOBZ_@KF%RGP)EvjHSz2~bJWi1ipcc}$j(L3 z{I0!s=y~7{a6M*m1d{2711bQZFFOO&`P&t2@olVXK7?=j;pRv{(E7uZxJ3tVbJqfe z!<#S!d>*~-Swe$uy)hJ-j1v~s8%L;~8p7UPaRHGDIzwLDSqA?AY&DhG4Xy#c!~#Bs z*Z{AKh{T~Bzlbvj7Pn4u5v*NW{6&14#^=kN3;|XiBYTVZx_aRP7uFOhAY5u|es~a= z)X7n|1dc%5k;WAm#q&Foe90hxp16--4fekTIOEh|H4@>>e=*=KujzmYl6Ht#mR7JJ z6&3@fkFF=6s97OnA{Gh!zw^`k3;qQi@Mc^!qVfmcZYu(%^|3WH&ZZxC~*U!LSKA4~xx za_L4!WmP}Y!uKCsILtU`k&W$ePQ%aZi1b_sZt!YSZpr{{{{WY!9wsdv*hbe~Cs#k1 z{I&9b6}eEmUvF`1U8JD%t+*md0*EN7uFv}lfBdxumj%z0Nmn9U07&dpp*H_>mz;w5RG@@Z)mcCjYdk!k{#W2KK5(fRMj z5#v+Nh9vG%#@}pEJk`z=4Oaw`RGqKqw_HahV@RX;YNQSWbL)jV6XgQevj!Xfcf+(P z*QNY6^0*uCV|)PE>wIeM2-dc>n#2AuL*@)-Gb}{3gZj1~mzDyTMSxPq`)}9rI8a?m zgl1!Zmvg=V(e_4#^Ul#lM=LTxE!tqF`qf3q2iK3TI=sD;?CY;~a%x~b+xz2|Wc1ZJ zZA5v3%3`XE#Di-t+v@YU+Su$pjG)f@P>EAnN$_+w7O2;L_x{Bq{{U0BzB$e^^nBkt z7m<;#vgvr^$e0{PD``q)blM>W0GS|p$)eD z&Mk9%?XNFtepQXwxn2vf99d>&_%I)Nx@wlEjS!a8 zQ5j+mz=7+E`5H4*CvkBeqo5xwW)7VgirY-@R8_P!l*r_N5&^T`>RE{J?k~l$%rXwrJrgR+CxuO~j-iug{pty0or74ZD`RkZ zxZs22ao2=o`FlA$Nl%}%E!snw_IA4<%ql76m-lM-Q$DR>)g&Yv^TQQ4+z>Cw#;E?# zJ3jP%{{Zhuj6%mllinXqJl_`?ln1m~a>3t3Wv7LVvQ0*1kf|d5!l?s*0T#a8k&Z9g zUdlE{AggS$zu@L_Av3RWsDInJAAE4lfn;|e@y8=pQRn%$?~L}lF;yrkCTRls4wv=C zbZIQlr6Xw@$w5DsC-~5fcxh?l^1AE)0QawkoWiVvJNMFW;Reh0;~G6FB&iQMZAc)_ zBY=PW=L&w@{uq2zw1j}wFDswrf9+FDOXxEQRUmmBLjL!(DiL{3Wn36yn?WfB2>x&BPzJ^*EYa(<>QY~H7 zLt=HPy{>F5$AieggmhY?RcNPZwJ&(qHY9Ww>%saDTpq?^tKZRy3!!pCk)cN?ZhoAb z;;u}SFsH1Z8g(@d2X+|4zV0rd4oT_s!E~LZsHUthEMX9!Mu=TTogi3w9f7}|0rjAx zmcE2Kj8ZryW0iE=0dsGlz5|jeV;Y%!Js55=d^<&#S1Czpne{G`@-WmC@}j^62HV(g zi~Oe}%Os(V=qC}&IlCDw-P)-D>D9IFKo{!6oj54jn90}VU#5&;;38|aYqlh|}yoBJF%vsQ|Q z49#m3(_zjmX|m&EB!n+OfcTCIq!fY{DWNWZ*O86Ix&i0u&ir7jHq4IkAQxkz%+|fH zeUN&apFxc%e3@>^8cC{TiE8GWW(X1(i7v%QKs<*2L)Q_~RMq6Ypry{}YU8Je#;ziq z621~GbFm~5#rW%jWzA@*k+STHF_~9N4|vgB!U^i~9~6hvVeg4@-o!~&I@Ra18i`ig zAW#A*@&IfHpvGr7!5%*+%){cxmPcQ&f7lDNnbYPq5oEAX%xF}z%TQd0Ne=qUDCl?| z++%45QEHTV=QS-A`>p~4cP*d*p^u>FoE=G*$4wf?6iE~#`A}O1E{#D{g&^&u-v0RV zODv?Tq<&Y;`o>=+xI^)a{_K*Hfu)sI5!sICNEh|RjYe5d3=+JPOc7g19oRP{Y;j(} zkIHnOFXe&iDh|P4RlRYQNmU;@GRFus<7^(fo+`R2DJ4+R%B5H^z45^F$VE1DQ%oRO zOfF+8yb?P7ao!6PjyK!nSo>#O7n9wV_t3Y;OfT|2-}q}JzU1Kgt14cmO6cLIik>79 zDYk{&?Q?VZ<6D>41fZt~4ZE?h_1xbXN@q$cW_Lz1N`xsN%0K7y#-k?6t12mwEG2Xz zfv@?t>1*SzMQHsulMZpFAN$3biF9@vb_({f^Ei-ZKn*d|M-sQpJH}#m^E`WE;)k)d z^;=951hw_G?e?|tRhs2B*)>UyOtMLneKI7rS00AP>}`)P*^H%T{C}!W5dQ!xj) zzbC#pw9McI)OJ-C0DEDz8HFu564hzc1=JCCKEnj|W3w6WYHLhl70YQA&wEf5xJBB^ zr2Nc!0rj>k>N^pfQ;Lbc9zudfRE}_CnpIY|qMWECj!!u3u-9iNg#ddUv;-$zJ%>>z9rY7 z-&!fPuAq1~=cf0^RFXY0ii)V0)fI8nzz@Voo-2sm_Ez6f7Cv20D`1t?3s|~b5v2G? z)qTah`Qz(|WvRR^A9>+tzN9-Tw*K7)2Xczrq*g0t2YdckBYvk8**i+s?ty5}he^JY zNaKCKJWh;mCY+6Bh?7y&E=~6HZa6p*nFt9HgcUX))#`3+aU5-~O>782F2x7--|h|o zBBoNWxsefuprjQ7{9BPz{IMq5 zH0eu%HEP)GHssikLx0B*60@ShWp;C;V0BvUeeHek=Z4d=%(hi7=D>ma-=-pHn6gh4KVfe(Z~S3^X$-)-Sb*hD{zupE#sDa>oP;wo0@n&J*L(gLnf8J*8QLXXKr0b` z02}TtbNJvDRSqH~UiV8KzdK*gaB(Y4j|dJVAlZ%E<|OV#{kG|V9R)#>;z;}?_>JyQ zuJ|~{d&EZ2V|f50R_6T)(g8g{^xGAYMpQ7mBLng{QW$;r>UP1&S}ExY$f^v0FhIL) z>F4E&L(*n3&zo1G;?5W)c)wQ^cywiUDo*3_$y1*t#i1vnV9o zk0KWj?}2M-Cj8xbKYTB7QnD%dd3^~4pTiONa+cZ&H#})L5PO^WmDpXngcMZ- z*r@i@zuy2oWkDT-6u95Z4oO~S3JQXJw)^3NigIpMPyYbaU+;&l1pEyP?;yf}@)?`D z47=}Q4&M7?rgkH+lm<#ltlph71gxfJ5Rg?O=m=oLQQLvV{PCacZ(|;^rK|H;380D- zGF{3n=JwJX%N@fb$!fDKnvS}Hrjngz)L9~n_;G-Ag+ML99G-BdOF6e|y9=IYIe5=? z!vqjWX`#zXm0CJ=;He)n-sJ7;&GCenAeNIbRiv$>tH&s^ zc!vtq@eyw?4Y9PzTQBW~Qu5|`4J>srzjrDa#g5kutT(au+Zg<(Db2HL6fiW!!QAYz z08ckRkjF;Ja?_J#OHA{3)3GfqfLIcIy*gvhl|^;g@xG@#7~}Zrf1?Z9AK8>e8hnOU zN9CzzYli;-wT~Xh?~Z3%1y)~KEiFt<4CvN$U@kt``Zbu}oBCs&e$qQWDSU=e9qzYEI9_)OmJ_iqJIaUy?5?+wvI9cGvcuEb>p58nc3X%#}~9O<|u{dO1vknSyg@w)7{VU}3_ zJ33a5p4UopY-JvAMzCk#?v+J9DVJH z1wz~sM>pL2jlTFcqOF|f+FBn~megg{lGfxCK#MDCmWpkll>Y!ymHz-uy|z6@Ip6IE zwK<(^f4S>2xTvDkvVzigjKp~`@Y>|#M^V}^j$K;*5q%=sz5f7AWcy!NNt@D+?p11t zShDHfLwlRWelm{(YGCMb8eWg5>tY8K+-+;CQAeK zwf_JddRSwO0jv1BikR$n@;CLxg*IE@1g`kZrA8+;9?w%5D?H69YFG>}ds_nL^D|e7(hl}EKx9CtbH4j$}@_ZIa6GPQBTanYxx{gO-98`uxfbDnZ#98%Cb7M1`bcm7+-PgwmRLT zl$9L!w7r&|mPzv(47Ro$t=zO-^knHymupz#DUY!RZGB+UUmjS>PE9pK9&3DAfwm-3u_p*gUY0#@pkCcE zv$-nT+l);Y@LWj~G;Tb+u?qe_o+Q4*r?A8Y%@%hxJwTd7NgT+I@(^{ln}N9WK3EpA zqH5flf+~qjv%xFJ-m%nDA{R)%^n8RS?cw>yycFrr3*JYFE8HGH(+%*UsMyO0e z;TUegZ@|5P>tz_ECKm4rnO%zj*s!NI|lL_xHg) zofX}x$!E*+^^nj)Lem@RXxMN79F6xT_r5l?H0tzmRJ+-vP{#Y7FZ$r9l|j|hrOx9X zJeix+56yX>T$4{86<@#q01;P~WVD%FJ=G;TL=Pkn6Mb=Nh_?VB_rs2pbE@7)9uBHG z-yAsZ+4Hy~WuM@xJDSkA#yB_vl{9}%_3 zwmmpuO4<8wqIe-IG|VRv(SbDw3K2R1W4K;1WOmtw`}wHpG>)|nKfM#QDyMc z)5i>PDn%d4gMt0et}>mX?DNsJMr$s4Bs4=)y2#|Peah)$z`cdH^tLrM74-RC1hv)E zh@gyWW@Gt!`eTBm6UY`3W&-| z-X{)q2ER~8Am7&z_sVXkz<4WrsP(zu>5a!|vZ!N7>7{*iuc*M~NoY;S2d>t}4r*DU zsd&4+O&BGaMa8-w^4QHAJkz7tgXnkT>*fCdj5%c*bu+qLos9z;GiMF*MZRh!6 zl4=Wbrstp*wg52AW+VatJT}{O{{StAtlKk^)>{jLe!JqoPz|UtvDaa-Od!psj#VcLkg=p%49AYnj0I--Bn zHvr#p$?0-0ef>VT@SGUzNoO7-(BIE~FW9_x99Q1UlvPgX7GWqb-%w~*AFuX z+NPmi5)RtM{jbyUzyY;<@1#W1N_2r{7t)|u0q6!jg{gWt(H@vGG2}7SKTBiSX@f&u zO-~t6ks`U?!)st+meolr#2|kW03&Q#{`j|!iP}P8MFu|`$W4NQy@mSv<7e6Yt*V;x zB(gS}>H}ap0b%oR=Zr?^ud^jh*lA9Msisd53`mp0gN`^m<3$f*DCr{~#Yos7FC)5v z89N&R`kZL!a$e9wIhLI%DT14?#5SXDcm(@mt2L|6scU34sT8QOl`3K`mOVOczdU1g z@=Gct?A z(o?C>7};Y!V{QJoI0~+L>I*u}G1iOTlGY5~*RU9rETgS>V0j~pOvp{cI3R)bz>!jy zLwJRY0tJ8`Si5Lcf2km1>!He^I){+I9eBo%EXm=mO;lMl^51WWshk8;{{U)$54FxE z6&VU_o=HvC8;>OywhNkqnv4@HN^iCI=i41jQOyh~8VK3I0PGb56-@CJj5(E@wJ}kopxiEl$i6zq?Cz$XyRwr~q@mIY z+B2p=SONhTBZJO3JQ2)edVcK2E23=%KtPvCy_EIGLj8n^sA{vUzDOjBDPxYIHI0b` zgKwc2?2b}ashx2tU=TelQH70xQatqwUmTTtJC)VeEnQVNeLN(@Vsm)al%E!!E_vS_ za9m2l#`fC&haBrQKfC)~TTjGwBuc*IU;E=3Q>`CA&BrH!tZu8|BzRCRzzu){VeN)U z!1`c!st9aG-gt(3rBQq1$bMa8PxdU51-a>r*J$bl*+ zszx=Pll_p?XHq3qe2q<)Ui&YOQRKcu{l^_ECG1T#J1u5vit-B;hxteS-hS9l)pp{K zDWsk_B#KIi)CGtz8}t^&lzp=fUXgF!)Q!QNG^uV=cKG_p9HOVBCxg_(3Uw=$^o|tIod_!chkglvnz&u|T`7AWDQ^_GArBYX(2H&3l z0BliBFpdUm;+71?YC4|!Cb%O@qZ4Kr)N1XRm%+KKfHZ+*g~~R;jjl0J%CW4mxB8*9 zgX9JVkF~}?u*FAtcm?FRA6sI2WHLyiX>19+vXvw)&gR4N#hXGp>>`$uY2tZNV{Z_M z2Wxnn%i9(Con>qgPnTu-p@wazosO2659J<7`StR_^|{m#(wH*p0UnhqDke9Q=av9$ zta$VrW7FhQn>TXJak&QP9JzcJGE?ZujIHCdG~hQr5O&3s*_L2nB1)pcM>iMxoEbJ= z@VOEz2II$o>gdmQKndal$vHQYCMWe$HJgp zMecA-G_k`8itbR2%X7b6Yda>;)a3N_(1mY^Qaz6ZeJpV*!*pgdPuaUv&@FTT{9G1h zgb(!>sP`Q)TP9j55rs|RDf0<@7W?C_W|hL41day@ES6n=(7jLCAGR{Nzij(ERIN{$ zQ%7A7TSMLf_5RpO3Fz}>#PUc*Zg*UyfM;nfL$12Nn329WgkbtBCZ}W_FUe5NUNWe`ufTgsXfpLBBjj3N|8ly2= z*xbgZj<+y^jzJ9|yskxnA73kU##F-bxmU84cY2nRyH=)!=FGp<4;AE!A!R?DA1&|n)%~mZ} z{5YW+-R^k*0G+Vq%d2a`%bO2|r@hjWGvYq3f6I9cZZM-Qv5`wXWXnyLr^FCQG8F+3 zdVhbxv1KP_;K@Q%<}&bjVJmyrn?!Rg>tIVI>^8X@ z`C*Bd&a+a602!PGvATv5uXl`whWFzBI;9OHX_*O(Pp)f%_G4( z1SjR>TiX{jeWk2bQ!FvD>tk$u`0}&xxqg|MJC4nP1nw`k=WH&I2xcG)+TC%S{{X6K zQo?xUkIws#!w;9W`DsyScCgq5#ccC03p9I!FN}eKvVpa%FeLSmQX!IgRR>F+ahR#? ze6RdE7y`2!2Yt`m6jhVFvR-LgNjEIae%Ac(J@|f^lO;U5{{WKfHSJup2Zo3EQJsv3 z=04c1$#N{iJe|cXV?x}#(vlD#B7E^e*}WVUaO;fJK(YfcM$>h^;2%76(fdg3wp*1b zqmh|Ve+rHmijn9^*m|AtlqXt8-ofFlQAsLCH5nyP?Tb)nFAX&6$^yKhP=mO$c@ftT z_R5-@FU;PamZAy6+EO8XYZ*MQs|%g4^~BkZYf0K%)}p^M8Y(8<>UKaj01qHAI`(#< zW?6FgN`YcU&=8~49j}jai=*pDqz&2b@(PnOqZVZ-wihF<{{RekF39#SXycB*I*!iP zXlU4O2S$_s0PXwvV*}WH%PH)>ZzXPVmsHJIgb3vh7*n@W6oGc~x!WDXCG8eRo?G{R zWel=5{nNIYKlq-0m&D+%&U42ZOOr)}X`le3k1RH#q6!$y^P6-7s~=2BnAJg*)AzI9 z%zUxKe`$TTsqPILN(EI)?hyX~qY>ymThGe)y&WQ~pR}E}J*Lit5!FVN6vXLY z<#)Zc0(KyAy}2jL0mEBcOh|mT>wBz_PJ~+hZ)|fqYO@#$$_fxcApEz*v>C_|n8c2^ zH+19?YZ5;{rU{#9(bwj!o2%K%#T@6lh10|~`L$Za9yz`Sqob*=tC9*tca@`NRY7xQ z+@D){d*Zv}A(coHg=+#D_fl=R+vrER#=G`iO!Zx*lD~a4kh1JPR(*i=+W!D+^~PVx zQJ>S2n#fT6z5xB}nB}38O;rFos=QVsP4+5S>_+zn=Nh_v z?kI8!yvC}evQx#cL5wLv2NvscMX@6|$CZ}7U>DYc4+g5fi zifpNAs4AqVvRNaTDX{|F+T#BJUP%@>#l0SH*~#UGw=RyNmEOxHg5tw_0z8M;t~{-5 z>K7kjjgN6OE&<(RVYj`p>}oqTn|6Ocrj}719UW4=q)A&#Fz9Yh`1U0N441MJQzK7M zu_TtXaMVI1F^l}#Z)@*tX^T}t%7~P)QU$xr&QnS10Nc~9DW>h#T?(7WSka}m%Vn|; zV}fJtHc46|K|B(rLDEEuZT|qc5x3VJ2um+$a`@)c73b1CF17;x=X3dEpXd3rW_48( zo2PbnR+Q;s(!hOo7}w@8_D}(;c%c{2J{ih}`T%j7t&6f~W%w4%Oqxkzs%(C*Yh3zU z08xA~Lv}?f4cGy?@6h>rVG0>WrzSG|J&x;spWhPRnaZ?!)yt8fxHlH^7RHK;v#BT* z74k^sw^Y@p!_<$+U5gkh6w{vQ zK<>ywcsJbeKhB$*agL=|m{CPMQA)8$%uT>WZ2)=Wo%W8NOsg`K(aPVus#vm+2p8m~ z{=aN$IwKB;@sm~`!iFQe$n8WQ6r_UNuWclo02sJ^0+I; zIn_pSG_HpJ6mZ2w{A6q|egNn=#gAq?TT_e^Q;l1CE-&1~%iSF+a45Ui-7lFdir;1Rp{z{jpz1KV}w8 z&s0e-^{wrG2;^d}qcznNIcpQs14}9RCZ`C1J8M}@^(z6u-qt)DjAq_>rZ1*9V!JT| zW%u&Ok;0krrS$F@8eJAu8KcNZTl3)^aXk!_l(N#)Nhf;2wYWt$y|!Kb`Ny)%ilxz| zimFAFMofk~SSj5!*i9%S{ocqj4PV zYZ3wQ?|b=l`{R+-RXs&ZO!73W&PzGuoLV+pSC~rG6>_kWRxN8?jr}@ce8;oZ6jAG4 zXVJjl*p9f%nr!5}j7jmml|haC@PywGtN6F)4Qi;?rZ@{(;uDPBWzM_d`0%V*FH@Fg`n)zqXh zsb*uq#WJ_D+a#k%;%vsVRCKFw9^W$oeJkd8_UnUk`u_lqhG2Xe7!^QzTa)H+Pwr=y z6p4efMl`DQ1Cjv2bp4stA^2)mBn#aXl1G@gOh*RMnXXZytggmNsCN`l%K4GpSNlj^Rk> z&(mx)Wl^IBc8mrju@@H|I(``6+d6Y75;&e2S(ZUApW!rQTKC^o_u~9uh~=3gR0zZ< zw>M+ACl(~-(5W+3!5*HB>IwXD17_J2L0Rh}zSlrCpKFb}^uvNDCJNP4Ngs9q%oD#aKgvMfs?dy)jLN` zM$(Q-BxSz;0H!XGx>id0NYG?hOAq$0{{W69Oo|}8>DA;#$J-S(U8|{%Qj$i|u=$mi z#C`As_L8n!C}z1f*luvN6|&N&C`l33kpWOVVC>s}#xoU=3TC=Kpn4n=m}WK6R6G+2 zVv!D)NdXKGsOgHgk>p}nl5v*PHj@-CyZ3zm08jS8GVn=V6M>yDxyr6fr|3JP4-2EFGBNdmG!_l6|mERYqNs zx))cdtYiE*m&YR?^XM_vb+ebT^mN7$C4o|vB2#&Z8iM&>V81{yPPKo%DkP)Hd%F+y zYU&210{;NYEx+aOiRxph%w1&8xvhpT5u$!CUm*>lDdTg*| z>XOX?nF-P)jqbX-ToL8dt}G+0%W5U~fk`>8Cs%n+x_n^lM@9R3;>lX0Q->(=Eh&(c z2Nno4t@`4sl6Qs`6=j-6C5gD|e;g9^pvF}Z{I>(|&Ny&r`Lgk{Md?^Qbh_oW@d|=X zvE!tY&gD(`BLG&_zJ^!>ru!R$Nc}OM5^U6bY?ALm)7Hg6z2motY!q{RRa8w`nki_G zmHzrA_2n-{jp2ke0_5YSTvzK3zMXJ5x=;|#mEx$E`CpgB%qDVitl94NGFwf%grj&rKmo+_zg+!Mw$q)sPRqHM~oqce7f zrYNCMieFT^bsGQ&Bwy+G##^)aGshX-{YD*nbM#4mEZEyzQa4}Oy+B%4QEaax% z5_ZO#kF-?vO?d$CSwLqaRsR0inqz3jK1W*_@P%>Fl>Y#S5v>(rHtuy>Zbmw7H}34j z9{fhnfAt~opQ!%;&K|v)TAGjj8G^KcTGIGRfH$)#1a0SohrxLq@{cU3oo*pc?^fi# z!_RDVY_~Gba#|IkprgxL1l@(%i!tPu9eus9%ACLVEdAY1xO^anQ{KkI{jx7x^dp>4 z1sz-Inx3>sqxnfXe!fQ>rDsJ&tv6~rK{A3e>L{(@A%u^=m>}X)nboaZ&0RIS`5~zIvT3a zhMm8L3V_ig3;0Rcjk2dSDi*=pzQ@r$SnQS#-OMtZI1q(c*P%WVu}jtT%w+NrID0NFl%3%BJ4Nncl5wr zmdt3VJ3}^QQt3@a923g=MS`mlWdL>D05J|znZug)qFmR$rJh-3)?sReLIKzXzcv74 zaKRNjNaZAww2f0jnJ!SV0v1xfFHA}MJ)v64y1e#h1gSLCz@5kSH`ihJ#WsA^Iks&E zTSf?)rSt&X6daO$0N)q+bth}GdJllg(kl3%TLcJ&los1&``Z3^?Ur?T-mVh*4 zQiFSoFzfG#r=W_aJu{}FPd6&ceDx1av5`*Ec8@O1Ax_cL!@4K z_BhuqL~|ld46EJDf#a9F)~pW%5w)?#&a`B+KiS4rm|kiUl&`FZ5-9-x0H5KOoJ|5hh}0MpS^M9z;x0;u^4#y1!1>+6ba@*KVeCW<2z z<;pOPye-$nI@{B1TvX=pQ5j?JR!PvCMlWy&8oajW8O2(8^BJln2nK`Q)1v86c>v#Y z>ug3xMaO1x>O`h`xuaR9PY;1f3D;rgjRv2HKPZZIu+f;)K_O@wSx@u;st>)60jbSJRG`XK3ma%be|_-)aLS$4swAlKFcvZ>ApSgJ zmo)zXK+)jw0HIz#;x=fYuKPrGKYVHqVIzyPtGWJV+*<<4JNJQI zkqO`eH^zv48ZI1aNX<(`rY>2ki2e zs;*#>(rbyEox^MgncQO=+P>V)T)dbli6S@=tkNGgJ%221baHESW(^#UwsIAI=Mc#q z9$2yo1e150vX}Xdxg(2uoL4?+UzkkE2Zcu~7}-a@4qUw=v(z#)pk0~HqCSU@pu|ZU ze&N6RYNb>OZHJ40?2y zHjYGBLM&8^-w#x_B~WfUTbyvS^UE~nJ8b8jr|h81qMI_MXK0BG(CNOAd29K9d|;yg z0Mz!Hk|ID4Byp14fpc%y9pZU4CWZl&0suT%^v4wKR!rGXX%VUJkj~-ZKhST-(Eb+3 zqZIE<{Xf(Er{jwxUS#aVqzVqDjkW8gF|O({aGx8l3cT%J@Ob(*3@Uhf`BkTU?(M zXwtAMqXSo|p4~|E^uY^9nvhlNDYWQV_lr{nUzf#e+;MTxTNRmKWNLD=6yF(7S0UPH zrH?@W0NUc@A921m)Y%;IQbx1R8dhKtlFYArlWQG-;~r^FRJgzPJ_nQM-`Lbf3w_?3f*cR#^+P=K7(v%Y5xFa^kEf-Nf=fD zhMHbMk<~%H{rvHgnSo*y z3w~ahnPCp1?DKic5~Yf6Upr=RwB4MKI;JwhL^Y^9FVV;JxA(^+oJ|bx6rqwtHf1{y zMmx)`<6-HJN!pny{{VmHEa)0S<4GX&0Dp%X!6{!BeV?FtStod9w6?!RB^5K)RmTFj zT}O62DC$l+eqWyD*#!#H&@^$NTNfhE?X}BemS}qdrp3*+HpYUFvGsLyi8z&YN%AI= zLwhjk>&81y9Q9}DazRV5uGd$`p3h4p5d%7cB$mJeI$ZIACNEW2Lm69BW$-FS18FZ} zSex{@JoFe!B$AjtHA3l<2DX#b9u6#F49pb}wfwqbrAm#)Dk_jEr@XB+wD43)!HdZ; zXK7sT$=G}DaV}Ys)#h+ht5L-iEa0O&C2lyl9I}q2pRO%wX&r7@D@az#1@$53;?@i9 ze#aMiZ5;K`=~)!gu{wf+d(HmI0LlDz8e>Enn4e+K`Fmq4Uztl=c{3*~ z4@zV_{{Y@cKErQ(bkZ@|X;+**NNRkPEO3HEm2bNGh5n=Mx2`LGE|V(`(U+E?#iX7_ zySLY%^cbw0H1B4Pog5;$2m+}f0(^%y^7O*f(%yqJ%;$K_R5B$wh{km`v$NRR+)MHIcQfeU#+Dlxi)6|1&;CiT(sc^wa>yGIrtSMg6%5zWI zEp!CFQIRR{xNoxi`VeP%S@w%BK>eFjjqdH6%s~<-_339>w&4E zSr{ye;5Q5gH!T9NAlZTQ7=BgQ*)z<^V5JKcHMP`8+(N!%%$|eK7RbshpRtuW#L^U~ zN_t9rHBCgog@sS%PeF+*tD>c^h8%{N!$n5_0P4=5wL@OT-urzA10655y_wG1gD%T^ zJ5I6Xs&68r0Oj}&_xZNp-xway_Cq|%Yb2g}X&NUsSz>Tj-nIhYY+k!3X2vetQO4)t z+Gr=R3{u2jorooIknIg@-J#ANx@n?A-GmGl#DV8-Z+^GM2wcIHVOmits}i87B$I2O z!wr&2DdZje6Vba1uBB}|b6|PKWo>>e zUnN zad1xfo(!8Ute8)gW?v5>8!Me4ZN=~QzBuD%)6~|sdds^=?yKJ3I71NTz&11 zbCmYxvIamVR|9en3bcBCi@-6*sY?eR1H)qmUZs+kRxcAt@mqut^qbA6K=N0H;meqnyPw=>NOG0 z61E*c2}=mv`RoOcxwY{(XtP=>9?#Vxft|b|bS$=aBY~*j!gjr}X`W^AcC)nET@77hMnskj6H^sc`2o1Kz_rf99qN^wuH6Ox z%kr$rR<^#fIo_32Lqjyn<8&tEi}E%C_~=F{W0hr6Qbk(=K_bVa4!BsOrvW}41Zbm4 ziCbU>z-(`|t%gb78jS{7bfv6Ow3a{To$Ze!mAgCD5l>x9+)WiqR7ooq?+Qj<++3(@ zjy$oPk2n3mvE|PNM6@DO1d~D{c#(l53ln7*2YYqK#*P+=8q+;PldkeEzv@mf$EU*K>Q{j=s1SO7fAn!^rS!;0D*EgKLs+x#(}x z3MCZ`q(6Lny-jWOf!A&^K3=qyxs@altn%x7$=xWruJ^d;zNXycrI;b1ql%=NDj&Ft zVpcMzT+&*=p0-?{f0CX!xT&=c2qHLqxn=?+YDmsyG1o* zuTKdPskjSu40@gqr>+39t;;fc8Ur-3y+KoL4Jpz|{CW?zDP*jqjlieNX%gdNP|88_ zB=r9PEr=$Vtk8obDynY1>0x7Gx%_Y{vP{v&w`U+S1O&6~!Lj^$;0ff+WqI_}!5g6( zh>J)ox3?ar0%jEgq$!FNjxaQkyIYDnTG|OvEH>B-P|Kny)xf(j z;fBZj-v>e2X{w`Is*1XZf-RO9L14qzpv55il%%Fo9$1yn@`k$~r#OOWw5uIRz;YL+ zBpsWkitH-tA7FIHDuR0XVz#3vbTUe3m7;_R2YCoxU2V_fY)WO(Z%0=@cMe+8w{RTI z-4o#qYzg~Y8NAY|>T?O?JK2gL;}=jkN`Wh#Alwsu)Or04zZ_6hp!kVEWs}FO72GyA z=*MNwT`-!H;v%G{rIS~RDsz1x5&xw-ma43?weGdb$! zM{08qcOt45CAt6rB>DX@e^xTtCkVCa6oqy7ET_YL?{UTbalb@nK%>Jfk1%+h2E@il z^}gWZnVDX4wDiVZT-X#B`r~7pQpm7(X87qH@U`Wa!G8=&qq@nz1x_ib{Aj>y5aO0u4&oYuJVSdp<}sKaLRw~8;o>e*vDuU zMpP$}`DY?E9^~)#7r|7YvuGXfn$CtGK@_yBrAND;5&BygoS=^;Z!^b=skHw9U6*~6 z&j)C-28H)iI>9 zh@&UPAyRaYI}Oe~ZQ1%1sI<#_J6oB<5vJ0{LVP1~H?Y6H8Jy&m85L4f)yosJ4-&;7 zV!niQ#>XwpC#j{1iY&%VvnSY8r ztpn!O$+>QEl9*SK=WEF;IRj$G_}b+eyT?aD(fC#*(o}Wx#y*ysa-yI{!Z6xIg)X|h zx7zl_`qOdHV`UoK?p89&OFspHro$jh5=kVDuW~u#(;L)hsSNpslFTkeuBbn!ewfMTxfMDjbHt8IN~r4^ zn;V;WN7}<4yiu*Q_5T1$`gi$AH!tdalo7@r0ybbbz46fdDO6?3nxDCvs?DcTl?9sG ztfbtK0KM3atzpv?RJmh8O4(gP2<7hscW((26LKt1BI-f4jyBmRV%DBEtFDfs8W?5K zG*O^wjDQOUQh$aT_5_2ELQS7Rw(S||sNu~sQ(B2AREQx3tPhK8kT&VC7d-|#Mo;@Q ziQri?3EgTM#o?v_bc4Vo-q!T{;u`#dl_?<1^63c6(ZF~d0BK}CfLPy<#`nd(Vf#$W zXs8j1X)`G-iA}baVf@!SX}?p(F_laI027?tw2I8zvDtTL&{oB!YJFN5N;Htfa&7Zm zUl`dNX%oBN^HWqMq^T_45Bb?rYr2XH@h2j03GoB(>ZL(=bCziSe!<$do#I?`b!&b zZb{<-#_&TJSoK(NE%M>Aq!k5PNP%E2s@wknWA?;tohT8rs#uT;WT;Aj_tsbo`uclg zpmsO612fS@TfJ7=K;lv4JdQc+nKUnM>B{un3{MtI5|m*ifs~6ffVQ_?y87dmOmUj2 z5_r_rGwDhi!4)d%bs9luYwS9c?T$Cw&)QtQqMls4EtJKTM{v>tM|ubIHMi1F3)dCd zpKUAU?5%cCOZV=fR(n{yf6Na2*nM%%qnxO`Dro1D zmT1P#qy|ubsPw<|fsU`)kJ<|6VmfNDBCWT}vWY!K&fdrAjx!TnFU$x#bs(OD&CgTQ z8@|Z?&2v7{s#Q)t2Q6*;(k^8G0I+i3_Ztr@;BA}a?a4XBbVde;T*4La#+^r#VQc<4 zzR0^ob9iKuN;zoCw}mBOSgE~?|-% zT>{QEEyMJ2&({iOTU`>94CFJamK+`k`r@ZB?5)I@+H=%>JHfJan-AGLBx$BIM^GXBaLa5Nt{BKj!OEd>7Y$gIkkwe9;e$KXCcYp z%ji;;1^y5^q?1jIujlMKVZxf5qoKw> zw>_k#$S7K!Q6#UGPMF+XV;|JR@))_!^Zx+cxpt_~O@6Ni!P5q5-|%`M=LBOPCeTz>aj&NQC!lO^7z; z{SV=RB+QpHnjn@)RYO4oYzXr{XY#_w-xeCcP&evBAJZ92MxM$_{>s$BcZ7UIJc|LS z4{pCqR1}&ZQ@oHb1zW@i(D9CsOD?z2q$vQ6BXj-nB}PpRWQ0~mmQ8_)hNJ8KM-rc= zVZ-5^?g^GSmLh{dH}LuS`r+c57t~^HCHWqIOls?U5I|<6oo~@4@RRl9^2TzrDXpMo zT9_Fx#-VHb9u7IRB<%Cf6Hd@f+2(553uILbPd-@8uV#rvk+ABGYl3Vq=ZadazKOD^ zDsuU!nq|MmE2si4G@mDx#8G*bHuxSf*52yQkHVNAbxw5!rdOBEg>Q@kj4!{qSyYu)xzcQH*50_0z`Ws_== zxFnskWid)vqm#Gn_EA}9-ivfqv@ewfu$)#Mp{EOb%ScVsCq<2uW7SjH@Iv_m>W*u9IW_bjDsvlTwo?rl)}!bvvYLr=M$_JG+rmLo}%JM%v{57$B4U z#DQhr!+-68q^yBf5gkfvTev!|6rV%K()hGN^7m@u^07bxF31B7x+y!3o8rnG?hLY> zW1@!r;%jLgmtOpCqwqEZ6p>aM$s~4ZNMyUn>ThGo-)^4!b@ZCx-Cyz)exzjqi1p1xzD;{nMC)M^;qwb^wptw#IoJiM@zvdWD(XBHbPZVitg zt`b1&3o_|hSx%%HNGf-^-)@53V1Vi;rjoz^093ld08wqb4emnP-+XJqT9}K|#+~Mk zjrL!#=dH1u?A;-%s`!x!nNSTX$XQp&-*2`wP{{;Ub#RqtXe?xqLPneKx!V5#ON>(_ z6*N*afX_dA7&f&VHrx?yuqJ6rlh96#q(5}qpTF0P7YYQO+8EL}-L9t1;`8UP_rVe% ziO!}@^nWRB^mHA6&bR}gQP(WVp{?E~%ny*nGEqk=>xW@&TOK#*(EA_01kYiDmo}W! z${87(Pj*d^`5#N)Yz-E8(MxF}B#EFPq)AUB>QGnsY*nmmcO2N* zd)u5+H87H*St`WEM;{CGF;CZ`Wut@35U#q+1WE%X=)>clNkay$*`1zb_Dd>@x?Y5Jv3>prEsA^ zx8shfNtEWanQ~LC^yyC$S!0NNy-6hUPg9Rk=maM}m@O=H6nS)Lx^E<%^_R>j+W}T~ zL7(B=iE{~^k9b*vD(!ugSSsS~D$jsYDxs1|^zCH_!cRfh1k>g{`Yie;jHSU)0Or@+ z`(juIntZva<;q_#b&W#?h6t_&yhVTUQtbfAZ~v4_rY}?#cW;F^s%%g5URk~A5ngNv57~K&n_jA9L`A#VoF@Xs)@Bz z&e5MBcKc&TQ`t&)a?n&f17oGevA>rF*nsvfq%jR$02aOUoO0pl^1m6i#j8MH^;T{F z0Qn>T0D!|!YI9;O@n2;avi|_0S#|fBfDEJ!B0bIc>w%-}y0&8_3)DY+su>D_W*?p> z+Fu7X^!#7_7xq98pJtML)zaJ0+XEV^iQ4kiO3FFApSCq;vJ{X8EM;+HZB3_t^V0*2 zj*V49Ye!q^J9FrNTVqQaJ43^adPy08tu&U6bz7DL7MXoJQ!>>w$dV@D+z`KguZtP- znkP+8!s@&0BG&c#;H46Ma@aM%menkZpbP#S@z>KG6cXDywG4lhnH04(@*oaU z<+f)a?f(F1>+f!Hb(Z#PInG`tk{M{S_p-HH!rj`BGq(3O^u^v++4D~%)wLBg)eT2! zWG+gn0FAiR_uN=)eD}t=dqI`ZRUE-9mBg2MM2gZ>PyWsP2%d|zhC4-LLUw9;j%Q6z{4j^T9dy#qe>U-s^H;A5Xw=2KO^x|u`R>JhHUhtAzkskz44 zQu#G`k8P^-Ra50Mv~;tnj!9j1WWDSZ?tRWNv)6@pZAImOnnyQg_c#W6uJM}hu=3=b zMFlkVCsK_os3~*6znR8cHAAJWX$`c4VYfHK+sVb`7n#*<6Y@_Md7e=N!mzI?bn$&#DxF_GHARw#D;d+e(D#*iHvWxCEZZGI@ zO`Z0AL?Wt)6DF-P$EXrdHv{`^i<;VWf;FlN-RygjsOdN4+oATv2~s=Q)u9a(fLI38 z;^;$pY;iW3S()tqUp{Z0(dF>%B+`V`f0cP-_PzZEKAxfNHd?uwTEAr{V z)7EGdZF~O!F!Vd)rRCMRcW7vnHOVU?l^lHQ!+J32e;jm#ty(%^$g^Wv7ff1;7$=FM zk}%4{gN|j}WzV}Velm|Og1;>5AS|*&{{VO!Thx7Rj;$Pw%uvKctMe)6+IV~c(5L1O8^aO}fCsN%a&b|b%THGYKYa2n97O4fHymtOj8e-OY2-^b8vA!$})yYm5H7 zV+C0Zl(MXWO73*Jiv#L0f0t)2@To0kwY=_eSt!*+!$D=jvW6w+#6w(Gp4y?TC z?t!=88TjiED7zEqWBywQLsz!14~X)5Vgl_MWSHB%ODJ0-+Ww?&Jux&?-TYF+HB^!* zV&xD~!=Z86xNaC&-Me@sgbVDXOXX$+B#mQV>G zdX7l-8CiI?*v{4VCZ3Ww z=j`<6imEYf60vBe{{X!5tbE7RVtk`LhFX=%^DTL1YZ(N=FaS$#sN-e_(;AFv9Wi42 zYKolO_Fa)zr^HiS-ixD>4GMK1>e;jyK;Q zKr}a$-Ol{n08i7dFu$~X)$)vzY>^=hYfzrD(-pJG)!uxh0$EFOIl7D?}PO z3db~XIJg!XSEnY&rYL`AIZDNpE^Jj~k>l=TC!z~n+ot_n5P@hwrg0_+qxzmU_9V)H|TC@O33;kjo#U9nkJ2&; zD<3N1_d+B_9s=kEyzEKb`VXc%RUGU* ztnsSz;BS!=qQF*iD1FLYY!`63f$IN^o5nBKn2~)CYxI3*Rk@q zzZf?u%(Akb#eP>PBnws3RWyvJ`m~ey54Iz8REmtlFBElc6tNdZVCw$>DQ&px_Qb#y zh{%rUth!lQx3N7o79O~6W?_2C78$0IZ**xE?!XT$4y?``qv(xR;A$rS0OytqVd$1i zigF|jQZ@=zSaZ$5Jayj@#vXa;mRN&^EEXjI>agVb;ptNnD=g7>v6aw_G6y59vwy^`#3Kn!aYGjWsr&L22RRES6R{W7>6;RA>dfUi)3`8?YAwR*9mQGob^%HKseqU?|Z>3nHW~nfu zU%&!`{{YBhn?KE(hcB7J#?loQVS54T63O11XiyHGxAnf= zFxsEl#bstyOPh9fWv`{FU0u;S9Sz7fzRWH;*!$qR$B7`4f(b%=RH_;{?Q);Zse%5R zjC5YcNF?mog++uCvV{YHcORZCdnB}voGPhJG}0{8!fvECg>Taq^G=JM-y? zT5%IesE}+0hn@wmtdfe5$r-$)Sq8@ErH4OEQ$;03bo1tuR4kemPLUAY0oL6uey5yF z6S$}%XOWDY7qb-|OApJ8RmU}DI>!`x;c`vR_Vqred=ngTM(pXONj@fHshjW4In|e- zxn!0mM2dLzF}AMsTHOwiEI%AYE^Apds}(eaCb9{2P#6QT{P){zMI@??WRaNfb8CIE z6V15_=G`{6@v0@0(C0P37{XX%o-6YJ3J2Eqwj`H0CRK?joupH!fXG81FnqCJB=^{2 zCzKQNp|R5$V1RL7_0B=)`%|B&hq@;G5rUa>2%at;X zNG)(%e=Ys7sN+ks4o#U#Jf3>sDqWLF1IHk+w%s=L#+NOqhKhj3)W{Kzu(b?)L|iGj z9PP(Jfa~+5%cxsfq!M`?$`Dh=_MMb zbCeX-Gkcu&nkqb+Xmcs)ja2G8ih4j8s-B~7EB>b({{S-1D{2EXEY!5*X|T9r2G%XW z^0NKTDq@H$c_G_sx`^R$8*26#wIzXG!&Vibt}%b07S7)PNoFkyd$9&93D@W zImK~B#fd-yTCj>007U7xC7!=;z zj(;3;Xzrb&l9wq4M~&uNs{FAAB!W3Rame~$XUZXKf(5~|^M7%T3=yoE)!hh)K(FK5 zA7g?u8b~kS!z5)&4PhH=^sxT`Il*=eV`Vbxyg-5E?k;}V^t2T#;aI^0Zo#dK z=P>CiUdH-Of#(sIhxmnDm0g&SMe%e?DISt^gaU_29R{I)TvSw4)WuNDrJ)Vt(x$+k zxYW&=W${=Vm1F%N6N>4MQ&VOYaiJT9Vn82DU{ZX#qN6#Xk_k+!6@W6_SP}V*0X*hO zq>Qs@w}jf(BZ5A=j94XI9CWIST^Uur;DK+ZE9k^^3pA1Gc1a1;YzR_$wjergL!Ksk z+1g4QqCGZ&Qx8@P#lPA}7xf;vx~#wf6J)do6%Hmamu6Z1lbN>SuG-< zs-8tedt4~C=hW^oouz7w*D@6~vq>`+@jQ)kPnI#ml&zmD$nd4)X5}|gUX6BnGIpyl zmb6CEM9LN`Y1)Is6W7g~@9 z>TsE+QY-UFJ{~re;ivBz5L~DiH$Iz;cS^K<2qg%p$E0>1$NtiCUfPACoE*P8PyWL< zEIBc^Uv6=(o#l}}8fF4}-Z$Z7^!N0~0?PY8l+agG=M};L|ny8|oGjNb$KS*SJDC^S7=g&2qXN z=7s62;Ynj)bm{;yA2mFKip>FXfEZZ`tH$6_jWP^E_$6 z^#k)5(C5z%VO>!)Ou;3Y-aTZVyIh{O!09Db9BOK*-5KK#ra@xrcwzZtrD&J4E|l!w z>aU3P;^z~JbW!2OoV5M)?$IC!{va2iK6q-=FuJsMBW!Z2Hkb!+wGcHlpoMRht$QAa z6tv;#tBpLDUG$KA@v2w=+>2YL0?o3cBqFXRRv~<0cV)5L05UQIixmKE#^3RR;hDhP z8=gh&zw3(1W~ul!kee0jBJ6#za?IfaNlrACxnTPrQGRhYQpqZr5%d5r=Dd2~xGI^n zg^+@50aI(@kKCDZgANRY;|Vc$y242t;yA^ zez(MQvpjVxPUL|MgGpozwmk?u{-YFBIkXe%?`8-*v{>5(io~hB!d3>_VnT<+JkLvQ zgJBzLY|>gd1Z^=0>=}EuAR`0NaBt<)7WBEb6z|;%i3v9d7+9$FByWrr4q+@{z*oNj z?-?bC+WQP!#XTb^a2RcMRY7n?xhJOm4fhyXXxUR%BS0OSTx9HZfqk|B{{Vb4s*5k} z1tURQPZdNrI%1rKDsNy_!Pxs8Whv9V7N$B9COY1xKMMPUz~^y(ExqteUlj#FiiA?u z7X{zDW{nd3o;JUwkD$cl!--=iN7_t@O!+Q(-%&uNz8f_Kf`Q2IS9@E}9QQY@tL+1} zZCZd;R%uj;E><)fC>Q8=KU`n-t2PvL4NaO)6b)6R2ItAOQz*&BGmd%}l z^@5rK7MRiXAayo7+*;cKzm_{@Dqs`#0EZyEl$n zjMAQHnZat(X|v(#PfJkG2WoLZy-(WYj5w3ly5;i zaZ#oGC4yWKBvsp8{{ZgQ?R;F$qD*Uh4WWe7(nCQ4qC*f13{ar5py_`v)Zo}?Wbd@2 z$W^>dT|wOM#>D=I6@s#!ot_5xpkq;C6m24U*pF{K4^7&vzB#m1%iOG<6_Rlx1Lu81 zWB48M<8zmz)5RJI=|}*734-t)4X^rraT1LcC=pf9Dg>V>^8(nBYN@2AO;s>S7)?60 z3m434dUBr=&AJtd0X!|S!q-q?!h z-@|Z>pn!CNU;y0u?~hi_0K%rF5VFFK&VSWqv19&w;VC0{=|+Nzz*(=lo%!Fc{#LD5>4;1*nGvnCa6z|EY&+}$)KSYEsPR=7o%(=59N&Srx2_?l4HZMc zV=p?`1t=TDc(HAVpH4Aii4g?Y>0`&ur|{R zuBBNJ#}YQHY-Et}Z%k4e4$oz|e1bzzJ~F338mIAi0I&cZu{L#=(`D3+SxqHHJmSe3 z)36(zfVH;1D?2?~6$M;|rQ1j+P_ePO^XYA|rOQ?>(q=*8K@|lvg2+X+$Zuj#UqAfg zo$TMBJg*^IXv4belmXsIITz`TmtrP~^9szqIYYAOmC$f6arMB}l(5mkRV$!oR3IUH z1~%m16u+~YgAZ=vYiW+67lbJ4ZL0qF7_scj=;~9_n_LTvENq%=#1ZAb2g{{uddSJz&0~%)l>>gAPtyZJl1WyRP2i=D?_g|i^)~~KFqHYNG)pr{t?DI^kkKZq0kB;s zZkV1`oWvTMj?x7m{X~mzvhVc7=+cT^BF22mmMMo4%72vxtvBTQ^u4((ia?CfVNd@i|$+zDTy*$Y#wT3W2wUz$>Ew;r4+0SMu43kE> zQ^6jc{jPby(&iIZGeV4Al!lCuHXgXo%{@T^IiQEZ(@DAd;>MO)%pf%co$2{>t(1>4 ze@sd#VJ%Hc)+bbBa z^S2lx2K+$)gJL}Gh+1-5zN4V+Co5xM+r}`TqbJtOu~Y{ct@viz_k+ z5mXNjxQLbSZ|Wccy|@P(B^zA3Kln_XNtwX~4NCKNHY0yK*!msunW*ivQ+Ar4Frk1| z!4eei>mjl-ALVYWH$3sTmMEujD;B7BcOz$Wf6x53E2XFboo8JxhT2#0xjYYSNlNro zsIyr=d)C%XQB@Rkol?e(3Diq}roZP*Q&r0TF|SVyD!3`eBJA#-)A{q(@<4 zq}Yq}zBE~8Pa6i8Fl4B3FQZuV9JeIn4biGI@Ke@TwU9AZHYV0liz%{L>8W)wlUTLf z3xoZJG}9VdSWIiCoq)0w(n9s-_Qe#2b(B2SH-wS$o8JEbfW|plswyerl0z#-4UsP0 zMfzask$PmQ8}Lt+kNo1tEJHL?%;*A_*biZdY3aB++v~?v{Ls~Wp>iT z8cdEz*19Nr+P?M43aVQ`>uW8^y{>r1K?zwDor)VAXej%ca~dbCkVQ$X2^-0M$K%d5 z`#Cqn*k({VwLN!z8VEIaiu!{TJlMYbb6`)lB+?ewX15^P_Qh>298*zDB^3I!x`^on zVGh8pnJ&isc)c%u@J%J+rx8kANPq?o2sW@Fk<(%^hbty5idsOKfskgQX{BhT?mw?d zadU8|&(i^%!lDR-Ze5O`6?>4!&&w0$k)?O>p^!+BjVx62bAQ7Fb(47_}%nLE*>ikgY&DZBY;TAY`&BFHrm0oW04O^?*$ z9hog1Ov@}3`WTQM2mr7@&2F3Hq03DOvn?bmen)qK9+?3pX;nZxXdl}WIt>|q&Czys z>f}u3A^`xzOE8Ri>mc9Tr#I<|^H_2<%wvZpc+JTV-IC}N>(|rE7ILbFJ6isj4s;QN zJSwI|Q)`Y#mNdzJik!-sWKQ8mmaqs8z~U968G5P))_!t$-_!8L)WAsvH+0J?PFq4N z24ioS8*yv(#dT43jbvu=D7z0M!5Bf2qSG&`0IT1^0AfkGJ8|qWbyJr9^MNFWXNsaV zCNmkaV0vHt>x?xWY9zWCXxKHF?0?O%smn7qh1TTgCg*>Y{{WW9Qzh0-nWa2`x-&Ov zV{4cub8_Bl$IN-+w><2!-@b@ygOI>(zW!eLFEaQlx=#K;$*A1A4X@F?J^gSNQ=I0> zRJmeBC35fF1U8V7y@%5L?Y1{*t&*Rjk!8=jG6A8_D(I=)*mqO9t^GjT5YO5gx|--; zGR&$oD~kyxoViW^0F)eSC(d#@y>QlusThwOQVj$*2hbjHDpPi1n2j}&m2JYAfj^b; zo+w)!;0j@++%US4*Ax{dNajgPvqvViT}(+^Y*Yev7vN(>EmGHI^=B%Dq>ht$TrSa% zJ;>>O@tCZXe+m_SLJ&cF+%pq)Bh#h~6XmrMiJBq3v;DS$>-~a zplDjgAjP=UxP>Y+^o)g8ORb6Sz$`qD_zJi8kwGm$m;@U*j^BQ94HeaSd@)tJC>nYI zNVWLCmJfoCAB2sBaj_t5O~AR^+k8VGeLOPCHMvC>u)d#vE`Q77%P(nZB!-s0lm)Da zPY+T-f%e&chbfIYEs~lw=|mB$pp3#WO=8 z1uhPj)K`74*UK89I(*H|K=@@)oDgi>azPlgq|IUwh~|xCR^I5^Zar_lDQSX<90V+M z5u_c4-1>3O4Tyi~(1{jBE3*Z?y#D|kS_Pkb1k5xkia&7-b|dEpdKDtOhQ7Jy|kl<|=6(IaN!eTHEb$ew{i6q4ol@Vh%M)&o%| zkFGPB{Ulj-Vq#_EPz{aaQZMsu z#rDTtGEy4jR~BCkvMOkcT8(PACc%!v_ayE&#wW2cOAbOR=1~nrV-~w@b>pwz-q_T~ zQt`?zSGjYfs_&-WxaTFv)GcgU+|w?6)jlE#;&3fAbwKC}0XAC#Zg$^}F<|+eZI?W> z(9*3ti=bJx>gRj+dI$s*sxH`8&r2hSOL6s*f6YIzhyROvM4 zTdZNX<9#c8{Yb|bQ0&yDMuJIVo+j^ts2q{uKYU9PC?{qS4q!o!p12GTVc?(Mn@U+4}7cu{ZO0<5RR zSZssJ-Ep%3gW=U}is|HIEnf8ozE6oQBcUp%MXow=>5hg05mUQTuFbW{Bk%+8$CT-) z0aD7XbGFtWh49jZs{+^10p90->G$LN;S8|F0gJowmR&45C>&TDb@jvqq_=id4I~Q! zSd9RBox0*UqO>h-WW<29jBZZ*-rU~*08C0WvC@TzadkpSz5Io~oLd8gjHG3NEqf_d zE&l+wZLiZ1r=(C+IS5JqP{0xEgp`M9i6~hC{u+%w5y3uu?bi!()ITk~dvxBx`n4WZ!;2z9XZe4%T*>krQG}cen>_I!9kz z72P{u#zc#;4f6|rn2^(u6_ot_Ts5tYBQ26wjEXML$|-6cs$!4`;#6Y9{{Xu7=g+1t zyFDc)QJ44YRRc>S`1Lu`1-7+^K4J6!4){Bfj`=$3s@N`h=|4&dNgw8?*TVCT9&P?R}yX?f(+1ouDB#l%IimKM!ayPd7emLbbK=97d zx|ER)mQ%3=dSmID*j40?O*b((kx$^m>IwT`_;TuHb18x%Sp3=r&({-;l}@yL-ICH) z*0I$@%(0W*BvBSDda1B>LVyDRQj=2p4W`6dml2V1NMxa=* zAd}D=5;nr690^vHGP*x?ylSy3+iMG+O@l{#q=qD6RFm z$3zkpAd$)B;j&hh*>)qyVM5V_%>Mvp6b+P1PMMx-Ea@2#G__Vp+S?F_02ty;lT+lC zFY$_NE8~4Et~8=B@Q^7<+2scNUEp{b~noGhK> zd#p=+%L`oMH)faU9po=15JN2mcKKqTI|k# z>@SH!FNoW40_|afvkK{R4AN<8(}jxV$~aljFn-&rQ~3ire}@aTVedlMaRB91UCT{iDT8pfyDv&ern47&3db=0tAIX zE4N*&aYH-@zk4wNgLPfU;nNlu(<-P7-fHvMj28_oBCraUl^`A&B!z>J+>O2LF_~!8 zNwP4Hl*;C{aCY*^O3fw8_&9J$&@m51k zQ4C>78~A~+JqYQDsNX~0%1Ikvt~QQxMcpk8EpKuq%pz8BK}4o`S~0z~1zQh$o^fME zOEzCx%8wlJO&YeeBn554>ITGK$DO#}49RAzr^}}?=W!xWNBD>kijY&F|<9Ql$H)c&`7G_ictgRDlQI5^F5_N&X$wuuP2LAv=vA8~H!o+)D87S(dgqDs=jz~O@ zY*;~?s*ogNfY^c-`}^&RC^oJtVo9DIM4OXya(zMH5G<5&Fl9vyyb~EG5q|oTU1+FQ z?io)!9mTLy*VD7;@S&A8Au2p9I(u=7L6OX*rFbA<(rnB|k#B5y&X|ciDIrV$04kex z^Yr(_Dk~JRSBpxz>2@C6=elE*YX^l({}>N-IT!>HSv{v9z%RhH4iK$WrP z1+xc|@zasxr%`fy%bp0ei1R*p+q7&DGd+}fn_Co_#zN9M*3uABH+Xagu-ukWZTTkO zTt8#kZrc!VV!dr|EK=4-PHIS@iPRg|NJWm{o&}?2%QFP3sDr(L zE{PZBHb2Zby^j94=;N|f`K>Zf6-uc-BnaK-x3{(MAdcx=>!tITzmboWlv3b z8H;GUu?|_hBh|0F7 zZ36NFTXx^qt`~Lg+vS!b3bpse)Ur}fPRk8C#@n0R{kH!AH^p-@0Eb}rv#s@9dEXR; zw0V>j*-b#6npu|KIN~d)d69F*Dy#E%smZA_cv{UXX_OLs!5W_kewRL;LyP0oZygPP zdhpFi0~Q0I@&nt9Vi?yV%2bUlGzpSqL3R>4 z+~Yr$Lmp+C$zM?ydX(%I5J!h!B%AU8{P0I=GeYg%$8vsEQPlLonN2^Ht)640OnI-7V7qZ0)_v))NEKD~5g1+Z(*91bNLlj0oF}XS~=Wjeg6SG#7mKkIc zBC7Xs9gX(6>VFIwB@9Yeyk=2;JjY)<9CA7nK^ynM3dW;mQzKo7xB0dfvn+=*qOc0G z>9leM7ykgX`hHkR*@Yo7M;mB5$vz@?v9PyH6H}Us8c3xQkPU)F=E1Hnv9*C5*z<`b znx+h`Jl_E_Qq)4x%C6BoYL~kc=1-aYZ^kbI$sX4pR>X5G8Lb4>)6&TA6jrH$MwXf} zxMb?GF63`x#rVZWOP|wJH9a#`G|Iu1C8;Qq-uD38VhFXbzc`S%s${A!cRLkU9z-yniimGJq4~tsr1gAs(ae(UTlAfwHl2j#u+*(Um z*pf%CG(<{cPUx^=SOD5BwZ8uVY)v3aNn>*)YQX_ISQZV>x23Q$)loAZ{z|!O7~HHh z#0Fb&xVXcrD`nF*^AqQV|!fsW6al--G%tQtUjJr z!^UBiLpfk1D*Io$YyMjgTop&1WVCfjEo}nTBAr4g%V}<)vlTmf0fh?(h#7%Obqw2Y zaD8rn%VJ_4V9Jv*R^_)O^|zNl`Ni<pFW37VU|R5Ew2 zO~?lJAAB;uG^C+XB>N{80_@&^VvuPF(z7pk>{y-l03TD+4ww)QkO13O;ER4|74m1Z zNplumIw(@tvaNvXPfz*9u1VS~rj|=r<&~9lFt82~Mi05?(-O--6G{9h?$w#dBIjT* z1WPD|ek;0J3EgA8t@Xyzr}l@H(S?FMswldYNh7}B`+pn+-MY)`>WfF&>iULYJOrkL z{{XZt$o9g>71#{oJg+%wBOwsgfTvK>1cT-K?mpP*Mx-pPFV`HhyC%%@>b0w*rTxsR zRL8C`t$s-(lfMSTjBXZr%yAjzSDjP`WEKo(YM?#fr(HAeC<^9j%1*wT}I9{ALi#o4iJ-ED1K zd*T+(lz%_tfV2L?Ra0bg&y?2GR93>JjB?u2fye-Ge7VOlqR*WRe0=l9HK{T|9cuW`1Kglzh&Z%_t>u4(P#DYW$jGV@@NecIr;Y7d;WOb zvIx+UEZqh1@`WCAK3zODG;%UHZBe!N4di~-_a3q-d&Z78u$`V5+KFi0B3~)%lFh(V5K3vRJGrQ!vNRkb5_VojThwJ_x2qzoz1B=7p)F; z3wN9R-n;e2utsV>n>`pYxGk9|s0{DTlJ?X_*x2M$H2G##B+}GQf_J+peJbcUI(qMY zjw*>O69!FJP{YM-09>8Af;#^Id|cDfNmr7`0-cgVQ@njANgLRCUiQa(v%f&qnYzl- zEes5rfeh?#^&VINB8@tAjW@XrRQ<;G!n9^KHf3ZSmFJ#z!~zlVCQ=x(sqXb_Jyp2=_;QvZn$i|-r(uBzsmoJL z?-(xW8x=O-*zfef!f7L>5%;cpP9$3Vl&7;Ypp`#I!Wo^7eoAtjVuHKlne6iwHD^S6> zYeo(66efy%-j(Q9p>;{Agv2(G2SPmjj~im{rIU5hX0`2o@tZ9e@s}^e)zRuV2xN!=)ium6^Ql)_$o-u!#D@EMbpe5hpdZ$Rqe&8|?Pw%~^Saq~4Cz080sSo9$7 zKG?J=cuKG!@`sk?0R%N4t`McZD?MMs<&a?49kQoZbb+^XRR%2aQEA~)dM zrZLYbjyWUnyCP}QK-=5Yc?=nrN+~l~_1#ua3l1&he=HZ6WwdbBRE7ssmT)g(3E1TvN361GxE;9s0bX~;UrH@Al8YvO=6 zRSNgGJuCsf86-(0T8JTS!LY*BEb1<*3WMdp(-6Gw(6pWEh|pY;K^Dd1WU{k2%A%f; z(?~ZOv;$*tj24*D6iBCFZg)HVI2hVgcA^b!8X`5euvTKCSszUgoMV<%6hmL{4hBrC{h6f(-#$DI(b&=S~nXye{5IEU{FYqHroNu z{9$FFWp%Lz{M-xL*p*ngvAYjz;xj7h*)Q&KXP3b(K=9K@s(+YqiaZ0T`LRbRUJ8#Jt18qkOD=9u$(9^~u zxnsAc2FtSZH8M}NoN7|L?Tb{Tzkz`x$*>24FjJwe^u&>?7hP->cq~T46QwaKNgIKE z&OM>77!U#IaX_z5K2@GKzs;m=hr%8Zt*Xp8w@f!pum1r2?gk#JECSpE<%I(q+8nY< zD!%Y2Fx0szqyPgRhw;UqXY=_oj_^vo+RARXEg~oN21OkD^uf9PIH<~HP{hj+?;_g! zj)WgPQ&LMD`EBC|yDA3cSx-^@?}9{Zzs{?n=`>Y6ZvZtVhteuOt)Y*4j)2@1m` zLg8)RDv%v|5ISKbN(XSVB8E|J?7qPJUk|+`>{Cc>3P#Ox2VM>|l@qcGxE#z(awKrF z>e4@}r@jM{B~%Ra#!aq3TYLR*OG}q5Z6b(BLAx}>X#`*K#Z`7^MGPP-#i7$s{vaTp zw(Ix65LMcycxfQrq#(72+Z(R!ax8@)`D7yOF^0(V9JZ3VYid3voDe|J3XjJ4yX`J) zwX}kwo?U9)0llw{rl`wXDH^S+Gf3rSXN_bFaBXHh5^Q?oWer1jXlmiL(D>1=81Lm{ z(EH;bmQ#1tX_xnQmO*xPZx9@tZ@sO1dSgS`?9w%4uTj~04gdTG8g46Z@(Qm z!EvPzhe2kLSX{@@_2l_;if9%OiAkdFk$aNF7-qUUk1$70FnrYUOB8D$iPVzOq=Mkv zrOk)beX!X(wUjT#GPwjPy@>?xe=%%I^FXE4P8z|BGG5^Mw%c>{z=NXioU4)}8c8Yu z`9~ywopFWjUu0y<>Yp^BrBJ+mZak`KB z7_{ygH3-nGfLy#>3vI9_*7L+=?8Id`^(9pZl)9j`n14YVSl{!%Tv$h)P{dF?@w&M- zWpQ=-Vww<5!)GjLK>Qq3w-)u0IzOKPT3tBZg| zu6eTF{#eXsdiG9^jV^DLq9l)6sEvCTBG>Zg9>+gy!!?Yw!eosYfFth2w%g5zq3ieO z9>%SK^s&_E^+`%3k}5dVGYf#n{{WBM8merTf{H%w3QBz?f20%jHo>$sQ00{3D3CNH1zcJ@!DbHYZGgKm&WFy7W$d=rLI| z>djtZQCVQ{_nq2l;HWkR{e1So1?Cm>lvME3(bKHeL|h1)!+#^z{{WUGq3p!9408yl;%QR8povmnq&I zU-vmS#C16)T<*;xGF;u693U9Bkyw%ffCeKmw*u^X;#eqT$uin$QDIOj8G*dMHgGL_ zgZ>O(N!uKUB6Nzfo$~!_b?%|mjp?a(`Wy*R;+(5K{Mh3^n9U7zzY1xD+6gOkzLU28 zml$#6a?Or86-d0P{i4v!*2-vWGYJn2SGtUQvET5;Ed8kMEoor2G+Af{+98X)arJCA zDk^rf%~Gvxw4t((d=M&VDc8HFC_&*-OP|1EtZ_$|AA#e+-y46um6HDYoQIb_&Lju_ z0K`gP>^Q_>bBc3x&oh{q?hCszkMH3G85+UE~~mcFun=9??5nss0d zVFtwRE^p}RQ;#zH3Nhhg)U^4xmuWnWRFG!9B+Fem{s<{941pyO3`fd zKZ+CRuhjZl__fKuXHXc$PiSL?NsjT;snh}KayLH1Y;Kk}Sfhp*(ij(DskN8L04y<= zjx6)#@bKhYjei;fq{}FBh3_Pjznw=UUf#o|4~D6#Sf3IL{F+E(>Ph`EAVfiBMI0Le z)NzDFj+&ez1&%f8djWHeC0!k{9n{vHJ=eM}& zfM=*IKZe8y8sk1q)PJ9@4ebtBSCD5F8C_D5Q3RThjvKAVp&R}2K{MP7cv1fVi4nK+ zbr>^9m%k)iaI##F_BTwiu$wxEohqL@Wak;@!Os5vS~>PY_h#3fxt7+ArT zVlIy)ahu-OJC45CypOh)mGw|a)Sv_2B57tEeX$TNE_(<2>@@2Ymq9c z)+pLQ;0wm5Nh164vmbl~A8RtmqAGqMD_DkTfCJngU(*0jo@EtMUD;|I`Cq*X%YUFZ z_r**F!K=P4f5_p?^w!Xmi!zr_BDtcG=X$mPj zyxgmK-|)oeHKCB2j`ApPaCEwnu;@nz*5jNx5{X)kYbj=cvqV`~fc_xh3leSZd}FBQ z6*HujA>{%+7t^M|uE)>Vb;hQA=9l3mGNeGQ%EYpU)^EWhrN!}-iZ19G3Yg20<3_%o zqi@5WF&RnnZ-|>Wi0pfW@g8)GSP#GJi`HVzrQefsFvXXuQsok%~zSlET;Ab;aAWL zY_{p?iBfO$Zq)%E*=7|%kkT4r_OXEKBij1|>x%lBs~VA@l1TtAO9@zOYjk6<1Dsz= z*>{qn?^6II3xJJb{qZDu9ZW4Jb5jeM0aj;`!6SPPIOAh}G0?%DsLKTcApssa63HwL zs2lTOIJL&di-Xq!2u(oQC2z4I>g687aBklGWr|#Z3 zKxmMW9);D%sIlm7eD}Z?`2-PW89|PDiX;u(+zWwzHtFw*%KppAM_5Zv(!h5Pi+xwW z*zNxSIJ4}NJw1D>yfVd7s)Qi}NnWIR+Ww~+9LkaFYaOT@tyMDz5$h>+^yRdwuSHUJ;<*A9cR6K^0f)CKUe0K-Z1<9m8zqWmz;s8*%r5mYtIfGUth z$oku%#hfsRBaSpNf(DSqeQ}hejlL%{rtI!vmrkgZVn%zABt;|C-rue)hF6^GNWKIH zW3g2h^4#BHjoXRFwQlT?JP&J+uUvYW<^-CQgdIP~O^5trO3diT!P(5*J8GIJnL#7O z7?X;e+bESJ?`kQ;W?`j(AdB06IK8;XPG-7TY2fdFKTr9^E_am!lFjhID2Qv&7`4s8 z;NsaR6S38)CRG++DF$dsQP%#R{+QB9PQ!o!1Iqa4Iekc>%%ZKQjhHROiKq*KVhHsc z-_YY!dw3d1(K5=39o!)W(lxpAH{a`uLirSp)q(W39U=e=8v)eY8Tq?k3~Xa;x}-=A zyizDr{{XuDVjudpW@{XwRjf5BsN7$US9{W>Ui9{@8_Ja7YsV8{)E;wDi-J zSD~nh$eovKNgTG7&0<2Wy^jld7hCsRoARDdbsO<@kaZe_v0o2dj%Qt${uu#^FeB2m?vm zt}Tigno%?n29+8aSYFQ=vkncqANaBs;ba%yW|s29a{XPKJX80ngx zV4z)Gh13%LEyyRP-guLP8nI z@rPtNCSzGpejq(GLy^?CO9Qq#`qIKl@C`Vg8fa6*k$^@PN-#h4Ra8}w<}lTFvO?Y9 zUy-)x2-^l{71T97o*9irX?mJ@LeR+8NgUi4MgruEG3M5`H)b$n(u%t6adEaVy`}8D zbk$PS>5sUnVoL$K6TOeDCz*o-!xwRKQPRj6Wk{&3K<83-O%weN4k8BD&esv=@k ze(QyX2DORa#^Zx)@6dCDk}4^ZtKutUr>O4(K@2b~it2eRO|AX9VmAGkOJ%{%SF~|U zmYQ02j&-manPdjr5I5W~8+l(9Id)$Zm6TNZ#T(PSqqTrN6@Sw5V40~!_ zMCxJ%hd6MUqHKyy?|u$FClTG^i|R-J00%o_1`DVK& zx@b`P*2m1^0=jx1j;b7$Z5YfUGACdmTaY6p_Tptqhg#%I+8QnZT{ zejy#o?dP`kxbx|PBGQ^FUPC=o5+x2dJ9D@;=H6uC%#qa(hwg+-O^&$*`19mg-|vVG z-d-UYY$;8=I(09t_qp;XoJ{WoOgq+9axSaS;f{GrQCveMJe4YeuAqY$-q#~>(%YY= z3W;-ffy_CLWMJHq0)+r_Z~AYHwve-DAwn3mZljx#YoA`YhH0aYGbF@Yfxpd+U1dE} zvW3j+T5#f?ZdPgN|HjVx>xY)+>J z+E=I@aZ;WAYYJKjq-C)oP+XgJJ#cPeC&R(;5nZL24NgxVjx2KOI_#i9Jr!7nNiHWz zBMupMvA3Pa_&Ms4hQRVV8hA`qvdoUwIzp&>8+jfG{4soGE`&ga=jM^c*}lK?htcKo zRMZHfiKeKLi`d(CChW|A9B*=7%TiHjsIMtgQg>A5H2QTo)uc|${zKV(+coaxl7EDu z1Lx4CoOviC@#7r_Ey`&!N*1S~gs!G6%+0B!bIUP2{{Y4uSV{pTkbKK)3^wfK5|Ti6qP?M2r(+MYbJ9 ziMaRQ6QEdL=KU}hXC*4ZYMHyc-$s#kznC3Q_r-C|>np~Z7>qHW{`81$NBdO%XC4sK zP{$=*T)-9G=bgsh=J%4}4`S`*lvL z(d6{aTElMm-C_sO^50BzzSP%tmb9*AEpsrWVKAjpraKO72RnJ+7h-)JZ zq;65U2izQTx{7@g%L8bTD-+=PaQ;aN3C2k`GJbp z%cK1%xv~lEkeV&vvnh0vXM?{cnRl3Z`U1Jj$Zq>9Eyo50%nMPnb-sqxfhPJ@0$l zkESiOf_`IsM1lcawr=ysP_CBXsXvA7iC-y#N7SYD9nQV~00C?k7tG;W0Vo4of#i*A z;XtdCv+X0Z3dI8UG3n#+IGu8N00F8LfGx5g*AvH;1gJ?;X9^DD`~40q`>h@zPnP(g zsu@%$(Q5G`{{X4J?fz}fD`m>wh=+773o-FrF~3hMV^ma|TK@pw6}js7S$FXWR@dPl z)#foM0`_>v``W<<@z@($_Umu1HAM=Z6m5)#OyP67aLmBis0FX|#_ZDTU0e=viFS04 zMNFw79WQ?@2UVBLT|+uY14`O$dt52xV)jUs3kD>fF<~RamSs%rY>F%n!%-&Rna3=d z94fm$SJeKX{6!eTJf$b3ad?J_ULq_3AY5MFc)iPAA}3g9P(D>Q`<{aW_JW$8hqM#H zNmA8R=1r#1Q&zzIr>6YgC;1BaLTY>$s=%s?T`;eDA9)}Gk z{dnJwn6H;OqVL^BL~hEyFr-`W#vC)8uwPwtN=C#pTk+!*hHo*;##>aa6tXom>O$)R z+}tmyx#P>u*p3uUBswp{kZu)^gM036{KVK>(-#?urjIW!uN6d3a+Z6tHU3~n1EKfD zO(gM#ns5Cw=s-KB2gEqI8};OzMnGXY$Eq|YNv;ZzEvIeG_9NSag`|eQvaKS9!S&z0 z1h$`ZV_~q^;={A_^wk-}e-;6GV=WMC5Y7#^9^4MN+{Z+bjWLx`{R*LN>x{Y4wHq<< z_DX3T+M=-wF(kM`%-8FCjqrc{AqACI5R4Lz8DJ*VF2D+ZU536wGUW^UA7>brjDKa8ta6NlTtIoAu+&Uj=2k zgcRAI#0j0DsTyTxBT#GXO}$C`^|m(E5z|zwP*gYqQDqIa&!O`iIBf2 zLPuYxKVQQejI7L+8%m0lrUBVyEpWaB)Im6rLlfe;9(Wrpt&*w~6HOeoQKFejIBSA7 zU`NvZLFX1WOR->0#@59k)qe>EZ@-Df1uO9*ex%>$k2QEBuI&Jcm%Y)&+;20OvJ%eN`r6 z)N|9vBcTj|i76sj^S;CJ_1gs`!eJ#Wbf}V@Ac13IEq&W?J+ZUx7Em)vGGYE5WFqjf zHouymL--tX+8MqYy{YO%@Kmwx?o=C*&gX;gjJ09)MT+)*v6sQ!CyV)>+kG#-4IP)2 zqAw<62ohURRbtlkzSqT=0N+3$zl9+{@d5(@bA9;hhsNyifxg7tsNUG!83m%rDQRjW zk*aDWNZV4PqQzrtZbi@e>xO1sor=0uYFdb?h}%oV&*AqBEP31yrVG*HymQK=8|m7| z($>VpsW(u|)Ng}|V4lC+3ynXk~ zO4xy_*BAE2!@Lb^u|B5`s7ID1F*Isa+%YY;wXrzRMphi^yR)%J9UWBB*2+KiRMkKr6&8T(UZbm#F#Zk!-f%1+?$73T)DBjm3TYxW!q$s2_C=58ntOEiOYyiIGU;c3z zLnD9(hmU_u06dj+vA}Ajkwgj!Brx9IUS}8-dGku?D$Fn5RLFa%mh4qdzyXWQ^4X1K zltQ+SmX4W%%JMafF&qKui=M}2@U1WJCDr^;QWDlTKuFZShu3^%vd}FDWu$nV=9W}< z4k3xjb+EOI-(Y%y_ZYsWqo<^eQkIrD6bl7F2jhdKyl&5+g$JA9c4iH~Cwt%ol$X`5 zgLL!X%N5nRbuB~%8W;?#;*2t#A-zB%?DG-4=~N{{CL zVm};MB}j`YdYjcm{!+SW-<%M89m+jC;Z>-i$do`$6lL?ZuIbL@u73fGW`HWGO+v1Q(p2A#u@}J9nFC*5 zkzh&1+GW$&g7NXSl#D#(^(h{p1DkLKuxtXs8dITSEw=u6rz{y}JNKRL#BpPP_{HNR z%^Z-tQbsMgARWB%Oz{X(OOnb7xFW>**yAcm=$EqgiJoe1{$1pei6@JJU_SwZLh2X6 zaYiMjh0#cjlfpcQOfPikc(CLTENK)SA_o(Q2m;(;LOCGsi9ln0u}Co^kw_p~+wJ9t zTISwz{JZ=dZmd4iPgKK;H;|*D~=+((tO(kNdcoo^dhKj+pZF7CFPGv#+ z+bA@ev=UUS{{TxVxH!*c&`TY96{MzyAcQegU2J&2QU|6rw8wT|J@Ml5E;3YpJN!eM zaPpxj_Z4gVoM$(U;jF2NnTe;G!&e|&i+gX0X&;UJLvf8?XsNR5ZqQY|Vu{u`CuNI3c!<;p3arSWrp>@msmi>g)xfp1$2fp4eV z1rQok9tv{J{;-dLb|ju{&MTTxNh2(Q_j0I!-J7n!et40drhDJIr|Y3dc)%Vx+w3vY z&gI{0vP_#Lsi6JaSuCPUr1ES-Y`!JmanIp`GDIgS1zDtC@q%q(r=SA($JWDF6pXCm zM!$(9h$COh;@jg(**wW=sJ;+_8CcvmpO!IHX&MBGDN@RB%VBCF6O;}Ds5{%7OJSzK zog=4AC6SkxAo+{{l+@xCW2?k($=eg^(;#J5CfDZM;iwpeQGRfx9Z3zb_rMP!1arQX8%xMI)bxka+tKI5Qb_&b5_Z$popn6#&CoraW)nbmXppCf%b^H!8`zgOO zw2Qq;$K| z&}y}aGhDZ|u?k(@_plfXF{7xjT?tr_QwwSeJVf=mz5_3wMOM>h9P$Vo=6~q zNaLm>6?x*RidtzT8X1e2Zb{?;ZHYZGK`88)Y1_DHgdlMu*@5f62&Kp%rhQV!1Cy{) zn|<+KbDY~+$NP^lU!p)WhfxI1rCGt;_Ow976;;m=tA= zMU)Y_J$N|Ez|hn%WeK1#Q2d6l7r6)9{xNx3Lz_zK?N52sSQyj`{)CS|TtOuibkr#w zZ6!ogG=wz19SVlrTluekcEqxbYM$>ghOjGZSyE8?ZUPGeEJgUg+njHfbeR%(oH9td zfgMILl{L*JKX+FoZ!(Y&ie(L80RI3`THuRwelc;`nwFM=N;@d{b{*S0e9CTZ^v5|T z+0qSN8f2XCc*20Kdp740X<&=0-+PQp5R6O@^IN9ddSjW}i1vj!({EmJn_P;rhc&CM zr>qh{NReT6@!x+9{qd>-=Ez#!SZPvqUe^PCTjHY(ONNaaR4U~`(s$B)v6bz0A9W;k z@gpISh~;ZpPmw?8mNes1uBhA=w%~$o?TEw2UXxPQ#GTvtP0g?L{c&QNc4k!cVlr6f ze9B1j_@S$n2z@~4a~LOHl1;5+W6w`~YU$>UA0yKljMA2~vzd%@QdK>g z<|)yE5ilI-Pes?d!fE znQ98NQ%tOqSVmLn)yC!(I za~Jcd>u)j6G=wiMfm4l#Kk`Xq;IQ&x-wR>5KYv zEPA7mriM^MTf{}rKWtEDxm8wMnD^9#=?7YAve;kC$bW1dlV-xIu39RVQ&FHX(lvVV z{J)keW=n|fLk75ExHi5Wdj+{sz8VJm2CxIfIKs&ep{-b{in^L-+{f-3_4n1Zjgxr`TRX)@=GST>4~``!J$3-D9i1F}x)2G-zyeBxUz8Ijv6n2c*xNlfAHLZq9h9Nzl@ z{jm9aZcI8T==-UeNetkz`U_hYQFd3eqdST$%P{U~)&lhKOvFaawgFs$dt1uKW4<#v z#4=F7c4nuVLu5v#H;swtg232$Tg#kITcA55$>z=TGz`*-9JG~_I;xbo;YhzAf#=RT zbdw15MG6R#B?yY9<4E9d#~7#V%@gIBZRbzp)R7|wYn2uj1p9RL#hSM)%B#(ko$ZPS zynz__`QKsJ%L25)CDz0f#rYSu8!I!hQrv@W_8;?zBvGMDFt{7<#wiC)A}d%O>^2(= z3S=!|t6+Ss#vJ|1s+KpuPPaT^iyD>}V4(V73?^#LCV!c_i?EQ~lk$rJe_gR@RZ7i} z(g@AQmSzC;Ad$8s&EAPKdE=555*O5(OQ~>tTj}|?^TBNW&^DIEU9J=9x}i*d@1Dby|B47R8m1D6!AvV z#@9w<8j9Ove?RPTLs}|mGZu|Y31d3Zfxmjbe!im`=$+`%iDZUREKX6uxMey>_Qic? zYZ{(b{ps2IT*k*~qjL<0{_6q{(%AJrcS%(pq#eVlAoM(zfaacd-xK}KCP1AV=G&AR$xil(k9 zXlyS1;@sTwr}e?Iq5Yceon}Ea)Y8Uh%YoEl8yNasKT+2m0eeG1ndNg;(o7u|HY}%R zQ*H>yE2f2e*_e%5yf$wk=Yr@djVP2sbrKCNzaz^Yc|kX4lRtxxER_0T(7KVZyKRD% zOE-qtf*3RoMb0c>hTsyzoNV_FjVz#^a9S>sbpS2oaVkLCR1z=f4X|ubn_9qi_ricQ zYOMFT(4d00alosWxCg zwmJHU=Fmo^LuFp@-%m@QA${@EbNy7koUEN2M4jG*Hn|rz`ePH9M5~xmfgYf;sVi~f zvGYE7fY`%F-BKc!Q{8~O4tB!)F?jC8T=nAyEUwl4z)&G_N%4H1xO}wb9g7~eu*5V8 z6dIqq3N8jGikRr}Lr%b(ol%BALy01R#J%aYy{~bCQB8@}s^iMoG8JZl$l5*c*1%#3 zsa_=|;{$wO*{((J>!jh5A{8pi0Aqd5z~2{;;%Acjt+*bzs_jt$C?z0WU6%fLAMuS; z)N$z!fZxlIaY5QTN~*y{NkvHY6)!1uL>D1cU60!q?41Ifd2 zV@nfR)bu#Vi9~aw-{oL&tbpo;4f$$f5e_Th}3K%lZ&{fk?PP0;XmPr+Z0z8QwM+XZ}AQAF+ zTOaf7k6-Bf0@Q{O=;@?2i5&Uu`tOLcVH{NzR`BbL17X3v!6WW3?SfeuVY_M(xv(H? zNb*090;X|KnI+#!zkrjqugBwv&_?#2tt6*O2?xADNe1Hf#Ng|4Hv|qmzWAicr3>*8 zai#941&Ak~#}`osJT9VshZrLt2$`Gc+@RcvB9NJ&FBru2esT3jKG&qyGR5hQ056I7h(cyLynunEUgsGI(rVhtZi$9;#nsU{9s4ah~jzY>7~ExyxEMZ6e%% zFyG4GmNkS3_P*fU?T7}#3~gowi5rc!^~BcFgh$1J+}jcByv4S*+gp4PjEr~GNE_~U z#AQN=-&pXQf#!d}a6fPhk#Yzeo<8_3h}eU-Tb^<0ru7`q=q<9B=FCqO6bLXNd%I0;Sm6$EN;w z$2qBmqn=7xmrKMuq5^;{FaBSx@wKxJQPL@pB{COnL5=U}i2?vgQV&~otWC#`8CQ5><5j~LuFxd-3>02t~b((`cMUVnUZ z{?^ka7IGYF0--|^cnmh%@HpHh>6n~-qVp{69S&r|6j>vX0Qw{X!`R^3ids6!JIPF! z)1+CA$G1WM02sk!)YN&NaqzVgN{mkkrtS6q_}Y%kWVFFV&{QaHzZBOe&tr{BRAw=< z(g&obr$tuqAlamFH^fyLl_X(6l@}z zma&XixsI)v+t3x~+SrOq*;-}7=ae$Y$d%Bx{4>~J%KRJ^9MQ^H1_#lO$Io+$3VzMy z8ErzXc4XC1>>3HxilIA#LcYNJTMn%3MKqC?%kyaIwcO~|;yWGyHz)6WUPzo+c6`vj zR?@7Iv(u3%v-H~IV|~Um)sSVzp(`@>Xyiga^pbAu*W4*nupL1h9k6^oldm$EYMz1J zh2w7a?)F;|zu)LFOc`Dd0U@MYZM1vL6wjl zm~Ug#9ir_Jd2K}6_Z<${k66Cq-8aXdmL~QDZg857kIF|lpjT%A6mxGek72jI`mK*( z4LJbX&cfVZt|OHT5#S2s*ptn$LljUNG0pA?-|dWlZgY8Z+@n-eG*ZtZqM$Y`I)Hj@ zj%LixX)GhR6|<{eI3h-q#iqvJDBp9i+YiZgW?iC2dR6XqUsA*gu;7+Fe{qcEBMNBJ zXk(1j8?lvR4&{#j0L{g&cN>gvdmy^IIFgvk$uqfd7S4TZ&LL)P)z?7jxWB)y9OJuF-T{7WcDJSlcbOwl91Cr7ImXH|Sq`wIYqsPa@Ec4^ zUs8~ITVaC=$YM7t9Q6a74#-x^{KRjzDF_+gMy=T2fxg&wpij!8{Mg#~lXL|vrGU2> zf?`9PAib_Uum*RuNl^}APf<=HQ8IT zlkRb6m_%xF=_8bd2ga{^=_7DQ_Qp1zuB0CJm$*d)tDQkX^&v*4#Y~MC(!7y{kf}=`(WYP_X&0tQS zEzjQ!p-M`GM=jmRMV3WvEIk3>`+gYOc4CTH`#+qF%w@2Tjb~FTJa%2R0d^$X_aJ(c zwkc|Ak{MnHf>x9p5Q%#m*n{hh{Ipfk)Cu6MDJOE!>qcl?s}M*fJ%>Soa?G#yJuh_) zC}+7XA)H-_`eDV`)m36u+e~&A9(xVG_`H5cBE2%YNG6QYG=@0G{{V36KzbD(W9^BY zMN3T8Q=6b;ZTDh1-}A*zW!gmW_ewjUz#S*0`rsa>Xn+yI}jiS(1R$wa` z>H*c^76>*`=k`4M<3A+5#W)9qxnEnGj7F0f=|p9`BwdG3^Yy@*ja^D17E9jVo_N8c z%9N0xSe84J&iJ&ZO~%BYe6Y%DeZ_|uxTU8oMTNKW#tjQkPG3j>;>I|PY=_}wlgx#^ zuze*Rg4scTU4|_dlS&T-*zas*vd}b8nIb}lBL7m8Jw%d*^#@<*VX(KEEH`}4Zp#x30>2d9b7g*)c4wod5gRUqldtA^# z*=mSgfq7k4FipuihA~vp)zTVz*GU!>YlqQ$+mApodD|+AgPKvpDyvhXnO9gg*U*b^ zwZ9xe4OMM@Aa#LR8Hm#A>!@Gm0Z*sP(-@STOt$S&bCooe^@dqO1siO()Ov5}d}taY ze+dHKX8!=^IKxF2Wl3zlI-NmRyzniE9Qe6EOj$K$bwp^@63S&;lNya6pDnqzB;9P= zl8V`)Why>mNnSAI8>*6Sc)u9P%pP{slE@pYM&#SfY;Au`2x}^7<3>YJ?(L_%>(4jo zZ_60xW>!V)-iCPE{vrV00kaBiDljtM<+9z|AHkyWE?lch)oITg~@QmhHT(*T#G zr|qUmB~;=I8ACjb5ePAx+@D)xGgDIrVN>xWG!xwDjy3=~f_B>1{OmC`BzZMWRTP=c zd7c|;k|>mx(nmKt0b#fv!y3nu*`8`hyX`%GTPJB?6m>N926#KYP)HqC%x!ycZ@1eO zGQ*^9q><2YFXqM?-xsGu(vz$#x7=wiDC`^0Gn=?$D-^}Nl_it z?PHBDQ#XG^tWNd^`~Ek@9ZW+w(h+c_0xSy@d%9c+<0Lh@<5^QzZ7Vp>KlH3YKl z*8c$KTweCewE4DSStSi~LsJT!XZQgKxUe3a6O7F*j+NYwhWqf@4WG=BFK<2Wfr z+GWha(w*c(qyjZq8{6Oe`Qo}`Ekd@GmDc4;lwya>YPGNIaD5?`L8$n3cy#{&x1YWv ztgOr_a>+92s-#K@r|--oWz}mj;{Lq-F}8F>FlUA;^_FS;Q?0c!l1;Ye{NnLDLkube zl}fBniPq;${KxjbGbohRVUg2X$^*p9u}14_eMj2{N0Go9=89)xH`S=$9NIKn%iCm9 zRZMnX9IcuDgzfbh5xaR~tGf(A`4+?UH^-yN)&~9_UPE5tyPkgk0In|M%jKepE7A&8 zFp(jSLvbM;Hsll28Er1jD7Vp0y}Fcu@z84D#If9w>P@X|PJ3f3RY@w70x{SOkdfx%T?vU0RhCM#^*rE*8bDu(9YmdEh82KG#+E!dga~ zybXOl-IR|pabi6VB9gLty0)HB)bBGW3cFm3gU6}k5Xl8gMv{o+c`8dE3~l2paNle6 z^TXw&o)R4?r0&dqB_mN=jlmY;*jO0^&zI*EH3St5!AU!o7b5)a{KFk7#BsAJU~Db6 zIlW|E>crB_EUb$X5KA(02qNQedt;!ny2q;K{DZml!8;|Ahv&~>w@+LV2@Fk}b9-EJ zKTHOI_+08Y^2Fhd$pMMrF+5_jpn}ezlx4lF!()GJES8aU%Nm_aVlQEck?i--TEfHz z!`4NT#ZQShH|E~nSmx2RW^-(*D1oV9<4+5{M*l+LsvCyccYN%DF3%`X(Hovc?Gkvw8k!j)06g|vncE&!Bv~)`9`HEDjDh`X6R&OwGu)$LH*DsDm(M?qGUw7`ug!^9oagHq7c4))I z0NKrtB-k8z^hI|kFF^H0PCEt5L$MYFgm;^3omc-$ssYNMS~52 zQ)7w6m9%EEV!3B&sHB=T3pT?|hf%Th*!_+=*jJWF!$D}Bh<&x7TXTDUc;ja8tzJg!P>#<}E{CzP1nP9QOQ%5FeQ%O;m!>e8VK<=$>KMUcR^=y= zP!6Ni5#@fkDD-K_k2uPxsvYXhLqPr5`G{!7{YcyoUYN+u4OU$8!*)xL5C>8acL&J% zgMwy!+M=;t=<5Tr>0%)ymFvdeme?kPBFrnMjybaTr-N3a%yg2yR@c3;wXV)@W%pws zr>mrS>!30^Nv0~99j->(DDnrcF0+i5k2Qf}m5|LBjt6fOMtsLn?}?}=rKFw}hq;cI zMumw5iu-x`;JMN`33+4=;=;%-dGg0Mw`WD9ak`p%+2xqdj|^}~bVYK@87yuua!&_) z->t~SzFD71L|z()Sv8PV++N#m2_9Tu7QMa5hLN38M6)s-6)hiyi2hc;LJ6@xM0sN< z7MRnincg->RA3+li}T`p*n%&yvBsj>FwwOYQBN5ytz3M_S5UF)2R9H_BK5R*B-lLNl%zhAe|x0W@@z>Mw8(j+_M`1J#o86 zXeGfmH&M4tdld3!l~lD)OPXoXW*N8dt)oJO!P|gPO#HDxe^%r*$SX*n+=BIz?=Oz$56}YVan-Y zp{KlpCGj~QF(%~wPB~FY4O3J>9ifYGUr)?Op4a(K!;U$|q;{jUbm;#85d|8wYypZ? zF`t(AxIUxnibH8SoeIQ@9}(21{`eUqyDPHX17JD1#!WwI1jw=0-zj;^8Ou>5($s{2)w!x0Tx5`oa(=h$_?g%@ix4}qoD7fN41UJD+c_`*jMQ&Ps3 zI`su@7qBFgx%0)gX;U_Ln~M1q$4L-B4u@h`{{S_)wg9OHI9khXAQ5JFzDN!qHQs@lrN!_L+{M%Eae`(ab?=36-zvikXBEcF+sF!;2c z?XVtLXT}C}3@;RWtYqzfTwY9+i~63_RZ9Kdv!{o@1IzKiQp;C3nft~7HJ8F{ZOxCq zD(0P^VP#z*Y&ux&i2f;pX&12d!q}jP5yc*YbzOzq`bSaZcfy*MYlC|OU@yq&fmghk zfTM3SgXw5o-P?O_bBSVrr*@J;r1iNM>x*v9Q5mXbl&|pAX$@|?;25Hj>H{e8a!4QM z*xq(eEQvCh>K&|Rk*{HM&A&`W%8>eOthn3xdI5Y~Qe}kzI*Aq+2NqFNBJHG$kG>69 zZ5S3Cfw&mLGz|qjaRRCc2cC8~C%JhcU>`wcwxD;znftpf_5)$mV3_3tdwSgT7+0_l z9XrCBSloa-OfFBk!-%+Bi|@AFV1;tbOA-gZ9*r9nRyV!*Kb{sSiX`y@Kmy((PWUUj zMz{k{nLF+2h}J8npaE9kjm9RASVs{RGH|-a!`~6Gb8gn=OI4oJ#ZKGNt=!*W-0sc0F~21B!s%e*)&%Yc_r!)(jtc?ezatRF zg`Z!0Yw$?p8>0hkfu<{fYV4~-X94G;|)vHR4_}>x{;Tndm`f-6#3nXOfk_2G; zHnh06mLZNhV&>H911^F9*eKvzj1s_Tx)HZSg+C-& zKn^W#KA57-a+v96r-CPabqvKz5vQit+T0($HL$3#DPmaL-x*HTwzsEcKzp_({Vi)9 zzPOERL!z-DDO(gB;_7As>(i$vt-51XQ>BzLuYiu2%ca%`rtbqtj6qxKBWn_E)0=ON zRVJF8wH<;Rt%)9c;U2aCC0jt~rs07i!0o=k{{WqECRG0b51FWI*~QJhH~g=I<%sDc zPQzk);N(PRGjxvZ*=ijHcj zK`9dIu57=e?|XCi7sgrak`jjZ;`|JIJXxm-KUwsdr-4O!zxgfUW=eD2DRu(DdGx`7 z;igk)ikV_6!O0{O&YkWE^WPQJuPktf&`Pl(2c5sS>w}C-C8Q?T>AHm^?tZ&{vF$#o zSnOkX=LTI!ZF9nqb|2-jvx2j~jyY2HajTqC<{)J?64FmkM^s7=8CeB^7x3JVK5gxX z1KMvH0-^k5hLCi!+}h910GIiL3;W_|#KqY_vZ=lG8x6O&xxg7&qP-1NZ&2XUl46L0G&?@}eZar6<3-t= z$X8I9F0osg6(_^c5z_c5Bssz>c;J>YG|f&37d;qs zvGV+}T-gP6B&ji}h-iC`?M=GV5(JYvH&r~ToO zRKrf9b2LmAz!FWiwa+-py+u_yM|t9zO~j6gq005J8*R?mxXLAxImGZtDk70J7S&+l z-~uhdvHJDLB+g?Rdb7&aIx73v2Y(vq zd4c{BNkxYD*ncqRk4!2@T~a%wrjkTbNL7zzJ$c{nj)e^c1zHIy=wcH_)_4{bMpNf} z6cre63aQnnO~E$wBd?|2re#ULaM(j5y&2U;@G1LB^F^VD#Y0?@!gh4;R_=Z(TO{YoAK>}C^BlI z!K!kLrH#RuMn%EgZa2M-{#e(uDY@B5J1-|5LUnioj+U|8(E4Bul|>bNbcH5~V~a>6 zES6o50B)muF*|-6iHsZsto-@VvTR=VaN>;oxK`?+L7+Fvj9eL}3sIyAk%QJ!q^2dc81G7nCYw~V3 zupeJcXk@1{DUFpR+TjQweH+gVqI!6wDFhCUVl~P^vGP0pjx?TwMDk^8Bupf6EOsjB z7h(vu{&?jX=2<^x^VX%Nsc{5}uAjsS(_*6JgTXd8x=x8_&MONfoWwCuni)FN^=-0?Xul92GHijZ+}a1 zgCWbaTt9rpLWGL@bE6C~Q5Dj;ooRlGo<^Bf;6bfNpg zhN_1-6#ej$CHRF_2p>=!k1>2_kL;IaJ9c+DIv8bQCevmSlsn&{Cf53O$FZk|y0WLd zieS;st*X(n1S#lxZI5FdE7>?l_H!KHFkIiXHMP=B-9Z`nXtXY-Dh~YZ*A0S=Sj$jU zR4O{@F4{ZI_ZrFCiYC5aN@#%F60Xy86>MnS_iSoy&vZ-rbHEMQas09R) zJjV7PY-I`K#?Y_f}x?;i}$5FH_TBxmuhfH7rZ#&^a%)i9B#x=RXWdYcy*ZZ%ZA8f!|@}gj}jA z;YLbSQc$o96|SQ9H@@5(n{>so?9O8l43W{wM!{9czrF2o^}wx^=2Wpq-%-ltNjBVz zp1WTH5LHppNlFP{;lrgOWL+h$Ni0CW=YBB-JuNhKk~(*WFvmj>42-=t;CcFc;HRRf zf-v$@)F|bpkw^u$wXq~nypWbM0L8Q_q2GS2PXpTc09iYzp^HLCsEtmlb!sDxSNTTQ zvBYba&zrxDXu z)sb%TmNjlofVup~+XhrNvnWVu7AVn*A_Y=6B!7HmE3#=dF%dHkgaMA1KAYGNUOB)m zOB~)S4Ssg~F$El&r?brF+D*Xnzzx~TpAd=c4#xd)*5u39`>7+Rho5W@`?@V8}-D3kSh?j-oWpL6v0z=eeM8{e{4^f zPzo%#mQi^Rb}!ca<8IL)P!>JydyH3SlnqgqtZ5l}og$@530Qj^I`P&EjR)twuQ z+kM5i80ax(<1t93q^pc9stHBq2^T6)rx=Y`S|<<F4$_?9Y) z6A(tLi(F?*_`jQz>Bb}Y?68$7Ro-oI%i>#K&l1r{<&RNah#h)g>4vTQz;zMiFR{bU zZIc%Y*_9Y#crtI9nz_`%h4{mXXBWfgY(?=5)RSJ5IM}MankjqaE%#vxc>ic6c zQ`?#piqO;Rd)b3Iu(#6{l|8$fswp8%ummbVd*Q{gXwFGfB-QziREy%7G1(l*0*ycpI^oS2 z(W_O*0{HW(Q_o&;>)8P3&chUf#~1_#+>z6+Brq587vq8YVVc!gk`J%8CK7nH0Qz-w zALXzFeb%xpMXzISm|p0kkgP7&B!hckf~vuauIF+Ue_Ta#V&vE!i`L$_g&Z}<8#cQl z>;<>ROSIA~P(;h~JfUxKvfk$Z0BmWdX#g>?Bong}d*2vr-fxS}R-Fkw+ZSTrCPZ0xTmd*72AWc7`L6)PO5t8^Ej-Xbx2ejwYm&wfw_HbJ=|?5 zUi5^1^1}WCQHA}TPAW5g(aBRkbPyQhHUu7U6>UpXz@fHPkdoXGtTeaiewd|_r4U|2 zZiM>d%aawf&ykzy(3Vw_O6y<=N0bfy*3+O{ll4!&Q8ENVMjPucn- zOP0oyS2eZOT-XmK@?UM+orSUMO!iTEUD@oyv_mw(A-p;tyk;a@g5t!2cH7gYGxUi* zSDGx6sqXKgh~mfB8QjCQnf7NHj;A!KF%zr0N6?r50JUr}Ulw6i3#*CUg6URNj^I_8&?1M5)(<+Ll)^T{{QEv$x{SC%1AtW)eI&I0uN=#i(i$FMV z@#*k_!|=nLBV3KIwTDc3Zma-3Z^q{UE}gCiUNJH#HdkHmakkuI8vz))f;iipO11!4 zv0K}G0iDkB*&8sHY2uZrm}*wHg-9F|(-nQ46>xT@nnq)yQ>3A7t!r&=F}pwdq!GAM z8LhY57+K|xmoaCF!!;z#6qP<859w@1igbdCFKaOee>3TV5dn-A1Lh-xz{E6F5!YqW zRQHO-fF%0$7R2!tSjal`hqz#NKBLxcPV93M}FLrPFIOnt#(&br& zHC651x`($^Jdd&Ij?rI<#$BB^w6qmrNNF zSps*79m^IQ8+&qbZC#i(G$}M~ufwP_9tSr+OlGNb47QG{S>UXSGS1RyiLbf-TU&c? zZ!BRqRBf+j;p3-%2#-$U-d?BE5l4F~YP56&r-G^|%BeuZas}*tFf^H3ERUi= zsQ&;rAfIeiIM1gI{h$NN^0e|%tKjC zjqU5{jdE+VG@nNku3D&SOz=Fg$PL(P+&Js+jbnE z{*4P!4ARDAf>Rv7)&V?pwkmTRp02I|JQXPoXas|M#V?~Rg^&A(9=NfRsf=m{xYX@? zZhx`Epr}`N4KrA;fJ(j{w%GaKrU^7xvnxTHtTe+f%_8_YJHi8 z4B_Gpbs&Rl?R~v5ZC4x>PzdIRI-qtpP(}W{98pQx`01rts2ZY;&94=%jcjV{&qi~$ znK-LfuZje*y45_0q8>ms@B{OaeHl!a+Miwj*(37JZjYuM;zLG zVMqf0o?{-yS1-(tf0wANj?>bS8=xE;bJrfm9t7Rl=vnDi7-=JRsQ&=fHj=?((QD}g zrMeHt&l{>Nz8YG4#16Mm&mk8iew*~g2WK*;sl9yg1%S4=V+&%&)(z)t53e}YN@Pe3 zVSA!kLH?p~={)0EQ3*Ojw$@wN1J@DA{va4?JOTWmeK0~%*_QVjjfSqcm8k;_M%Pn& zk4!8BnA2Cv!sDpHYC6 z0@BkOXh76nL%TB@l7B&hVvU>-!0+U6qq+_d$SwijfN<>$rHYo-ZU*BL%11nI$=wz^ ziv!KEfXwKs=_FWQH2^iqSvEK0YhR~Mc*go^UNt168xLcDEMs%ZsVg%UL_!)r2hG$T zMhjt;Q$(=SRCk9<3y?V1^xns>A6#_GDsP6#sUirfJC(YPx3DK~a&gU`2@1sukgY7D z5Y1x3<9>C27@Jbu(&jrX=`e7gEf38}n=|P#iE9BsKK)Kc*`?TEdqnL(paZ#jHUfgSolb zVh58_>`j-AulDlBKHO}SVdbZK>6vP2qLM;M0hZ*G&XI0^D`E*UfQrxizM=%%NLFn( z>(_3l8?vq48~NCaagSM1h;2qPHy&H_jnW4{r=p-*ptH$ZVZV)Is4H#8`j}hmj;Gn& zldv72Uh11DNT;V}PU=|;JfQ3wR<97g`*DiNqK0IWDWO(IBpZ%z`5XW{IY!4!a!9T$ zR@{TB!5~2r%lp!uQ0kGJdw4;)2XV0I zdUVFsm0idN+nxNzF_EOT8MG}+5-CU7Ng~7xoBhZBajQ4A`6F^MK(n`UM1_KYc_*J+ z;55xLvmw`*Kmqc615r}LKPp)FYZuCHKtA77hCWdRYKe@|M9snhx%bA>v}L+2S2W8M zsTK6+ef(SwI^k0@%i8|{`s#Cb+R|FsrahiUJ5|PSu-nMuKl*J#+*HGBUvbjk=KNv7 zlbSRmFr{DttAw5|vaS6(;!^bTM)9ReZb%NUyALsZWshc!&+#H49mvFEvr>_%UK8$Z z=Z6M48o4asx%p${gK}|!%i?OP`6>r8vv`=;Dub~<+ZHFYl_{{(W46zTWXS7bOUA_p z;=)UN@$HGhmy!sVxTTGub&Z*a&TI|ueZJVCsjHC};e_NupzE-)_P;xm(;7(o8CN1l zB}}oQlE4WZm(|UUfw$Kg3Y?=cn?9?`p;O<|-GRQveDCGIIB=pVCPhAS7%U_rG990A z!_crlrLb0AQ>p8oTAX{y0+{jOxX|`fAr30x(@HKsnHC5Atfb z_ZYR4v(*4Oj+Kd3)p9Hd>0^DzwghT+f-xj2p`&Y9kHFui99ZN&N~WO81gbxcIb>2t z2n~(B&fdWJ<2xdkV&#c*xhJkHE2WXvnPnh_jN7mC90PH0*AbNv>S2#+WB&jcb0_ly z^uqzMz^3o^bx_3S6s`-$p=4D(4ah%x<93h|ETgaA9NV##l4a(up(#w=;0O-AAX{_# zV^;mD(;BD1KBhk^$*Yaj z2q1d-94klsBs#oTBKF32EA5U=TTZe`Qna!uH;Pl%+~26e=3TGKvekjarl-9GuW@Fu z;^g0L?|?P5P+eiDGa*%f;sMIo_34a0Yex!Z`HVL<4rR5k^BexSyvuu4l{{q2SKUP- z{{RskN|s)PblZ`DdqbFIb5+GtLt3&s#!^!eBUQIjbqjNY2(EeiLzL1j3{WLFF^No_ z;cKptLjpGA?QQLdp|0&TrK+j(4PDq8&`04r>`C*#rVL#4O!A8IwQ;m96n1rp#jBPY zMYrp5f5#QcJn(5qs$r1^z&6@Pz9L^D%gnR4HIT^^IlOARfYRXK*q=Yo7bCX0U=7~R zk@&V&B(e6j@rVG`F^+ESf#sxdLB+>qCCf5S(WOmJTMb1tcLB8qD0({H_aOcU3N4nk zpR^hZb!4G}O1Xx_7VfNlLEhM`kGHwn9ZN=~ZEZ6f0qjRO6E~}B{NA@Q8A{S6LzgPM zjnB+UzU1zGcd)=_Rgp|QqB_eoao7e7&uxL-Km&7b1;+;xxQcNrE6Lt7+Q#JC+n>L`I5?v6 zVY$|SHh7B_JQ9dY8_4z=`hYyXzGD>9Q=I}Y^^?pNOgCTu)K!bkUe?daqElGJ1$K1@^)f|wYAh~@SQ)(0XDej({C(g z>oX{-O~p7zz1rtc`yMg1?3AnUwNwYi-N;)>Hz6NzeMaP9ir&fP0bD4f*Y#zj3acYr zi+-5p(>ivJcMV&D5HTnX^z1(#n9}7Hlhsqp94#6-V%BultSw?r{{W8M3{U?6NCNHM z%z)p*N|A4-EGe=Trm2a8Ahzw}weQcSB%SnF=%Ylh%cky3v&1A)VR&xp$J4LS;smdL z^I3M5K-VrAfnjS9Mf~h>w9P5vj*?omjXU~ynn+w+5J2GA?lDsqQ%j!Etx~f^C>GX= z06vU5kZ-=-F}TZHFxJZ2T;{1FSYDz~G}#>hC+mDk4tJU??5R5&?a@ZweK7@1AfT>F zT80ez6qzk$H$QQ=TwTz|NYWU!15+5hmpYK|=fTFzg=RTbXJ|5zC8<}cMAoB7{vo!@ zf50DHbBHeVVx56ueHvSB_yXRWdtu01M{HkS;X>Ibg-`(sm-cCrcF#~EmgNH5-cjxE#jIJ88~ z6crT}7fGarW>Pev7A$z<^u*F2j57ozuZu>T-`C#(RLGTjW--E9TKb@C+<&-q!E{rF zfkQ-5JHkO{Bv|i#@F>V?gBH_H=>GsUp1}TiSYA@H$jZPt*jNs|Mm*7!oa55qtWJagJRjIm+|%mer(5PGpb^ zTJFH=7wW5K78_rFcgIJS16hzHi>HlZ!*SQooMyXemqD9l=~YD}XEC7S%o&||($+mW z7@GD*XR|!23WoeZaT&MF}NE>-!R*}mqNZXH;fpWj! z8RTk!rH{K+XH{Z11dg2uzg#*r499d9w<7jG=i3%5P7ao01A%q#7@wuO`(a)cXEGI5 zRVQ|BBUhEW962J@f{HjB$%r(W(LtupFDIKmh1A>x+jdTq6)HrFi3| zho&QHXpZQc0efoO8RlLkBh$El4YZXW5`%xkY&IxlNo>kgZ*aYFXlc=8H;|Hd8{6=} zwK`%^Cxma!?`&nsvq~j>a4Q=~RDcDy>yCJ?lSpQf^cf2fZE{H_!q?*cdSgl2T+z}I zPK0-osoZ}m;*lwul8Ow$mPLTEMU%U@3@^U>Fzao&x1KveQrXH~==NVs^_lfLM|VVX zF_ixR_QLUdZL5KAQPUgASZWITfN~9yZf)y~uVEErHMLSSp#unFS0oK1b8eUUak2{R zj?Pp$*;s!l^1;1?fJ-A?5R&1Dww`~%h~7C1=+ZSQ+r!AgwDh(PWjntF+=74C&wS+?Kq`{T|z(0oSU%j=0^feHd%{E>0L+Y)zd+joOwup^uR zJF9nyq&OW){#f^Tk;X`Iw*Z_zqD78StjamlVa5ZJZB2F4ayYQt6%dW(QgyrOQF6rj z;|lcyGR;AD%$4x{25usk0u z0I4fGk~llq^u(^8A^u_x+HHY?JIV0z_i@Um;g0w8^1cY315YrCWY_-yZw=;f0%`&E z>MY89zZ_1EKs;&d(%2e3F2h!hZG9?72j31^gWNiR00ipTAMoG=sg5a?flx`g3{T6q zOl0Q|-ZKR)WeN!6i;LUX?Tu}07o{m3!O~8l*5jYPGE{NT+zApnS#AMjy@Pc0y@C2) z08f>O-#Di*o2d+Ty~f-d{qd_RuB0Oyw?-R%@tf?(QJH}1ELF6CcLw8cdu{EFgtWJc zL#$uO^zv=D_IH~L=$4VX-@PDyShmOnxzwcp0H}Vg<^F%j!@qvbVnmEBzdz^s=Ykvd zf1d@^t4zZDih<4{Zo=p4NbX>`>G2DNu}DFmP7czyK6sFJhNF`+d*9RF{Pn{JVLM1c zB9jjPWJl(nLizuAhb^wueTy@)QUFR80%h`;- zC8mw+kw+61RkDOYKbqZo;B1dBs*5>+=B9YzSlxoMf!(n?3yp}}`P}b(Y^~YO`(2qw z+3e+V+Il$XV@h;&f;KFvs^^ox>5MLCT^&&Q^ry{kJV4(60ExxN?L8~2{{U#2ywOtB zJTbb#8!T)=2!L#D=X_&jqpMIg(@YQhqaxUxj*295P2WDL2)cp-{rALI9S#-|5K?B= z7@e%Q+wL&#?vU{8KlXplBiTk9DY4{pi2Jc5s)$9{*kXT&raVm7^-uZ3N<|9|52=q* zEpMg;IxbV04-J7XC=M&WC*)>EB5mktheRtqvo2={y&G_NMcey&Z zJ#nr^c$c~UZv?OiA*b%a00t)K>+6bY3F*?RLo{)+5n!^p0B^sDZ^j3e+0g23Uig3# zfRav}WxFj=q3q}Gvt3v5j8+n#!VTBOwf$|2Oy4KVswrA(d6J!>48?U=$N?4u*4H@2 z!!)tGJaQE$VsE*_=Bk=V^t+NTd|MQ3vQ(w4$fE`H%><5@Jy(!Ad6A72IbK#_{v~1t z3`Lg2A6>uCY;#IFuI7}-tc$+C!vw>cxCD2b-)vq+TC<`IvoGmaAJhYc{n1EvTDZ@x zhA@LOd;b8bhko>N!(8FX4lm^09F8MxV9H zP&km2?s0h`#hdCZzc8TGV3kTE>)K1`Fhkf7Kwo=E}spYY=1-b#~wM| zSRNN3`W$tRz`U>7Nad85X{L9+t;*~_FmcZ#RcPE6_BLM2(jy%PL@X`iT|jz|{NOpe z9Z}tPkyNXZz+}=7pgaAswJM}CIk~rlUwlOHrnS=LN!xxg&yzRA=HCqYeC8SZ%60<9 zmO31c zk%04ESx=WF^!wwTW_fK)6*JMyWHJd>Hxn?~jo4q$ZSRdoW~YZX$e~A?R;Z52BD;8l z0k_iz5p-%Hk#86T?#HE$6v+`(Yas{bEJugZ*WUrQU7}4sCSoiK@4g#46B$zvg4?h= z1LS=6#H3qcj`3AfOHVGVNQGE3TVgG@t}!(8Rb@0)R3bTAq|5xPZ~zt!?0LqVq|Kp0 zCL_Sw*8bRR5a|9JsbRS`0ACd;6APOsumZ(vFM`$>>4jpFCV--JUe!I;rN< zGLT9Gu^mCR6pD{L5kXS}+_JGf^~nYHx|6sEgJFD4mq)*K*Q9Zoe|`9$ z_`S<%8g|=I7YFeCY?S?%sLTOa={{W0UG?Cqlu&^bC`S!$W!N_T{8Z@kdD|33^gVZk~I2H$i z&z{8e=N44iAj(TtELBripm?Fs{oqz2!fi+_Km=HBb$SeMswvBnD@F@+Vxwb%W75=$ zt05bmC&=MX$ZhhNT>kL;PBR^2kZBTMPPMd@`_9LZjgA12bs>66KHe5_rTp zbtOzHUam%#rP}P|1K|gcP4UU}Y&IzL#%8+hdy?B<+YNHFL!_?0wzkCmaIDgX&|O#_ zina(m&OIY4M8p)n<50fdU;&I-w21{exmT7oRvTGuWftq_<&R17g6m>-wfy)Oz_He= z>R5>?gbxw0C!8eJhfrc|b<#*X{k*s7g)->$?ooFo7@gao9{n*%nAIh~RsI^OW9#(6 zv*tksuYWLcmhE0_u;t=7srAcJrFAjgN2R^-sK(5~FG-&iyf81w=%v zSD9FMXTq!e);d78<8yp>IUdS$s?5HLDMVMH4h{oPhnxprhm3Qn63J@4uH;8cYpZtbWu2zI$~00oWr>&32b z&chI;;`YXOEFK7;8mtncq$6?9mA<$H_WoHJ){`%mR@`b0;M=XvE8QuanLj2-5RzVlGhei)Q1; zcTUgW#}wmD$yd_D>H1)KDd&Na!I(@frJ4ezZMe1V*RC3{yA@kANv~4eYPsLj6oE45 z+0AWGSl~zk3wLFK)_FJb_QWrp*O-A*O&!jX6t=5do;bl#<&~P;%azR0={8>J>saHtqn(a;0P2E2mpXzQQw|-+wF~}Uy*+9%j1Z&Yat<=mc7ld&!z2(K})&4 zi(GGe@rh}~iE^>CFxGhCDFgUt)-D4;U}LWN*O?f(Ecf_e#6!ICWi*!15N zfXea4NOH!_z5du)qg0TDX4VeG?b7)2Q_Ah(*3HF;+Y-Hz#FDIqzEu{t=hpx%lW2k7 z#k5DLo^Nbq=_()K=8r%S%5|tk7YwA^bI@OoxV_Asp~|WxMzP?qHn1kwx0t>uY39(Y z-4Z7P(GUnI!{s)_1G_x#GfwkJW$|1C#^7!B7~4r8X#m_Sa>0E(v4P4n4(6`%e9|%0 z>@Rk|Un}EMGuk9hEXu1@6EPqGtaa=9U&iC;`CQR!q+Nht30-FCNIdE*OOzy7q^i37S@*xRpMYOAvtDd7Gj z(Fq3MFeiUZW96!fuDPU)k~EOctF`ab&#ovm86`Y*8I=txvoxLa$m9SOR0|6c&gYzJ zYqEU4O3TSZMrC2Cnc-g%Cvr#|;~kQ;l6HcO!6l{vnnTjp@3XsAxlWX%37s+qK#_@f;?F=;e$vNTe7gQ-gp0C0UjTr|kQ5`Zyru(87@sQ?FM zDs8@@`g9n}TPo2lK5;%-3#%xpV%KJ#?!?#)i92FytoCY{3M!>Ov3~ZQN;QG`bpzKF zuQ_iJ7iO{FhQ1?tSt)|D-S5v$xv<95)flCAO(cVW>`xvhB%fRhE$kaz#r)4W7D~WP z)vk8Fk;Vs}t%+v<3+_ekFO0K5l{tP~(iW0}n(TKbCEppW>n@;<31v!1R3QvPpc`XB zJhyu~Tplfo`m{46i;%3OX*-NdHAYOD3rxb6EqZ(lr>~g$Slbm*)QF6ccWO=e!7$Tz z)HFk({4 z2qkA4tUNf8g;K?U!$vO6v(C zo9%E2wh3(NRj_(j4BjEBfW8f}MUv%tObc&@Sv>p3EOGDMStBSdM`C}XW*DZEGpIH( zL8K3xQN7M2Y{o_*jWgfX#umU5!9@2qkvBdae=hqEwi;unNf8m|I=WmR(-KKc?JG+b zkV)0ufJp@25gtj(krsg%1}sFN}1-619KYKTzm75mzC&>I8p$= z4H9WYRRAdT^Tjq@lC&LOL_?(e=u!M}xX%yPx-8AVw z_vaPWu}@1^EhMu^BruX<4EG^Tk6r9~^xFbL%>_WJrhOArFqSp8@&HB0{{Rwk){bXY zw0aMCM!p5E2{?*4k#;s0+?{vd$a&(gEYDXnqgjMtOi9%cAp3K_*VhD!g_2utk`uT* zljc0|qLaxA!+900v9Rf4ciRz?Q*(X4r{zD}5zjGV8HTHHK*Kx1;Z{1g-+q1ZNH{{u zS%duB>FRK(0puICt}Xss14}#ivDx)$9I}D*+XcW%qPZZox3@R}l@c;Z-ASxQcUKm; z_ZUd0498Ov$sKk=Wq$aU@^Kf?c#8L%Ix*=n0U4^c20G*?!)s{z@EmJ`?DbyK0 zZT!B!mN1ol{eD{Rh|`EZX+R{NO^Ck0Z@-o{J)?6`*;<7Xoqij}I$ec;_r_->n=#AQ zN}4DoWpoQVf#GGo;Qfvz7R%noXJ%O!B$@6s>!*>uucYHxsGzb)%n1HMynn_y46?l) zdS*FvO%KD!SyB8}Un9TM9ZG{YT-Pm1pcqQWNjzD>7X<#8q%32E?c)TEt)z7vVkd|K zfH(t-eAdARMU{KA{4sq;ez=X*je(X%7Pw#*+wqK)tRhvLRD;0Ba81Sf;zp1|eG06M zE&=oY_$6bAyD4WYa7ZiH5z9oa5R5retXqC|>+6eRiD0RYSe1{8!q#q>_64L--a1Nz zf%GFD#UZB9?4L2;g=YOQ&gNL;VxY4TZf*hg#I0~jfbwl?TEHJnHe?S-$Vpv51EbTN zc^f?lTaty8gKft_d_hvP2@|>jZb>W-!_(`BF+vnFSSG^TTWerS$x6n_5w-2_f_n{U z6T6KJw$zMCC#BC_u!_hP4fjxPOI%;id^O7GAjrk`*zIf&GZ`Cwlx#gQ*(*8AL~^(+ zY%C4;#wRwfT*AB(Z=Pl0fToXMS_AFSl zk$(u}{{WtN>XjVqwaNQ9b5%7JT9P~3Fb#FbHuJOPx34kBgaM?S=y5a__|ITm6`uw6pl zScgSDEXuPw_^d#+{e}pVsUuZh>DYn=$pLNF*c5|EAyWE^xALg#{&R$BS&3x<68%NC z_rVVl&|ceHP_e(ZA}mBoN(T0~>wp<8(m2{sM0e&xaD6f8bnMh%K z5XV;dWthlFU^d$dAu~xQb_MQ8w&vt}+ZZm{4~3SCy^-Ffq`Ig(1w5Q?(PSdPTy#9& z9PhQYkkxjgI(TGR1u79C90Gb@4`6mskJiw56w&G8J%8Wj=UwOO?jdy~z)utH5CjR+sZab{EPia{q>`}m41Z5eG! zhsVd6{V+8`%P=~Ef(R^BTTlb<{qZc5Xtm;4>{oRcAbAgbMVQvhIuRP6nT>~lskQBF zLW8YKMNG>Tt_U|g+s@dEe8Qn`-J7+vf=65?j_Da>iHRF;;kmZ{_=M_dil>N?;^&M~ z43f60W&lWtNY!LxdyY;dr>>kLC~)@h-0yMM5y?)U4JFw&epH*<{9$0Fb*fg-$Oig% z*xLXzJgzA~X=7gUTDB3dhSmq4uTQQk>MLm}#;Kq#>=+e6xi_~sin6X++}2s8RMAZ0 zBto}a1Gyuv1g57so@koN_hoLSTI2Ba>B#iN13QPzC(w|jO4fJZ#eIR?`&-KruV!Ru zfhzz%&I2aL%X5ugH9FJ5qMjuPSHxIu$JE;dl}EM0hSC8#M&SG66vroJBcHojYGZ|* zi$v0~Un|)`0AccWJ~&h)HPp#CH`1!_VSTJ^jXNSnwy-9~#IEDp%McIZY@o0_*lc{T z22|zwysGiTn8;H0J=%me^uHLZle3i(PJSV3nVGGrTTyHO0Js}-Y;NYIS(rZB_9vzO z*oot@a;^b!Z2)=uVL-@JWqG|I6Gc3*Y)J20NH*HnCwxNGxuR-$Dp<6DlJ_sqPI0T6 zGQ(7%b!k895<%Obz%oGS8I~xB+_I>!8{2Pe0hnyIF&dI&kHXlp%-xd_q##vBD zq{e_;0CwMfy|G}m?gc^=jZ3bO0(e2axaqa=3=<#T5|04x;~yvn>~{kH0I%bS-4z!d zlcetR<_!{}A~PRLjfbZ=+nR(zp$Kh_?~IRTWPgpTX$OqP0I;y<{5a4TByMcSraZZ1 z?vF+&ryFF99UNLqZ+$nh-;6@?yAs8e?QJ`AhdY}t_BZnRh9L|Yj+-@(*2bXB&1@P< z*MeA-Az43e2x-4ROlP&e|&OF7UV zao$qake6o zIZDW}s0=}|BX3Mvh>_O7l1|}3-xG>SG`036Y`5xdh{9(sq>@T`Cy1gm0P5El7d=I~ zgT@Y`l1XBjXNbuha2E_n@C)uhJlv2x`NV5aBvq3~I9~Nxfz&Pu#IRDyHB50s8IoK4 zyM8`i`08^4XqhBI;9+e-?k{Uz*d~Zr8gS4cl&bf&09idr>Gn9ekF&K6ES{7-v>;)Mr6{VQLqPtW(N2&7|hgv2`_fgy@z<|sn*A#=sDZh zt~Aj0E}58ztdxt7l@|X1jx1<bTF3nPq~SHJcN~E+#!F?sWLkf&!)X1X}mML2KIzXw|^wwfIT(Kdv;n zoe6cf`|%9UHV+_Z#+jF z%3ahbHryL?jPYf(M2WJHEG@SCVL@v)q`v!Y`C?_19Xf!u_-%;t#Jg^J2l=r&9hLJ_ znPOm#A|6WvzvIRzReV8YRuU<*^v19{m)}mI*7y=yRDEE?TfDd=o}AkK1@WlPv`HhL zcCRngkye9Y{+ns@A99(vgMU@2EaUJqL7XV z++XS~j$ahEA%W4}ive-eZU#L#jRia{M^hx!m2*bnBXvE;&8PxLP%YC*sRj@sqj%0v5_z974_r*d2Pw@bWq;hY!2bX_KW3z@j67K^@*VXsiIfxTdkkAs zb}Kguw#t$-Yu%kiu(V1euFt9}^63-0vujpI3vGeF*Lz~uBF%m-N2Znpf<^uyRN=2{ z+wKjzUjob6?DSZ75TEHQIJx>_ma2-oDx5)41duUO0A&YK{{S_J+l&)WqS2x49#s^X zbk$7^ad$o|ptbc_Z*8}~zStMBnX#siR1&-clt|(@P$XGi%+}YgN5(u@F z-rS9kpO*MZ)=HH_B!c=tif7oVP;I~A<+n@-b%_a7R4R2^;zHLV*q#xn8$$id@i{5xA?x9f*swKU6S5*5{^_fy6gX^Nes zEOsl@Vv3J6o+`;9p2}_D4Ysg3wlq*?2+!Rjh9m~C+r#I4N-crb(j=@j#Lm8V9Wm@! zG;ma?G9eb|NGATc_5gSz;v9t`!rhz`cDGM#N?58p+?x(MagSrz^2qLpDhL$9LCLW{ zTvkfNOcdDa7ss*eY6WC-DwC$&FMHy?p_nelz#MxX$9NoBklG z5Su_&AJR`gc=kPtx(u2rivsSd?pDCCy}fZHkE6RRHIO>-)22O-Uqj9RM~uUQqx52bxs6@)L4K`tUWP#SfCM3yF|Mx zk1hZ{cE_>o5E~6HsPr_9ZopjfG2?iuCtz+sxb(Lc`{UU51RP@x;naB-K6k(@QDqDg zumSC4`^j<|Z3LLT6= z6S*Fk_C0_w-SKyn*bP%K+mXIDot&Xa^6TokcW#^jZESlU#9**=gD61ucOnKfU`@qs3oiw*SaBG>3Gk7L+{D{3QML|dO1J#gHw zFBzt7SNuT-cSvd&B5c-REpC|hJ%BFzD>r`Co)DpXvtif#zBISB{RuesJ&z_|>OFYB zq>6G@Hes>!_QN9@SgzYBu>+2{_C17pGcLp^j9G|25q^2Xs_Bka2V#JM<-h#n*!DJz zFhWmy>P_|>`(nzTnmJ`uC9Vapf37``VvzBO4PfXcwD(p9muTq^-FJ#oQJn*B-~Pkr67=M)qqcu{&wR=|>!b>1gaoHW>Cjh*1_5Siv0L#GbgBDdCz$ zSB*}>=g#={J&dxVPUaygQly()v14}3Yq+bFXr#b5B{+)kxi z)5_l1!^1i5`==VLHXz$=t}*O;9nq7Ze$OgJK1W?3j^;|Rt-Y=Y0DXow$wZX0M^y!_s6m9ahGREkjmmCsaJOK6LZcR8<+0%fVz#3+aAZTLdQs@rvp~pkVV1U z9*xg*%-$e`?Zxrzdl_j_xUwWa5DTw?gB$g}72VRQ8&;t4?hZYVV$z~s$VH`ek-EN{ zW02OsBFt)_hro#|0dac{aqN2&2W(~O2lh6eimSAh5LZ$yS}Z;42@b=4qpmt^c^*>$ zj!JB@k`ioCq)T)pdE?mjI?J<~CLq~ProGDUZ`Rn0yp*(uygMB~Lyu$Fs2+k>l&WiR zP@5fIf8fKRVzrICUrosd*Ese)gCO}Qm0~Zfw}=88d*LYSW|@gPR0k9B22x22zSzk2@}4N-uTx&ZSkW%)7n=q=V0zT1gDNq%!to#h9sz zq^tLO8ZxHD6UaYJ@6#KIDg|y?9cOm2v#Pd{zdbSRdm03e`Wba1I2N#F;}Wy?5iW&Y g*ps*Ak7L-35}KhNol%F|&fM7J*!De$Q~%iw3YL+i2mk;8 literal 0 HcmV?d00001 diff --git a/code/esp8266/otastaImg-close-button/otastaImg.ino b/code/esp8266/otastaImg-close-button/otastaImg.ino new file mode 100644 index 0000000..f9bb7fc --- /dev/null +++ b/code/esp8266/otastaImg-close-button/otastaImg.ino @@ -0,0 +1,115 @@ + // Captive portal with (arduino) OTA + SPIFFS + + #include + #include + #include + #include + #include // Over-the-Air updates + #include + #include "./DNSServer.h" // Dns server + #include // SPIFFS + + DNSServer dnsServer; + const byte DNS_PORT = 53; + + ESP8266WebServer server(80); + + #ifndef STASSID + #define STASSID "\xF0\x9F\x9B\xB4 beta" + //#define STASPSK "mypassword" + #endif + + IPAddress apIP(192, 168, 4, 1); + const char* ssid = STASSID; + //const char* password = STAPSK; + + void setup() { + Serial.begin(115200); + Serial.println("Booting"); + + WiFi.mode(WIFI_AP); + WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); + WiFi.softAP(ssid); + dnsServer.start(DNS_PORT, "*", apIP); // redirect dns request to AP ip + + MDNS.begin("esp8266", WiFi.softAPIP()); + Serial.println("Ready"); + Serial.print("IP address: "); + Serial.println(WiFi.softAPIP()); + + //Over-the-Air updates + ArduinoOTA.setHostname("ESP8266"); + //ArduinoOTA.setPassword("change-me"); //enabling password disables SPIFFS upload + ArduinoOTA.begin(); + SPIFFS.begin(); + + //close the captive portal screen on ios! + server.on("/CONNECT", closeCNAdelay); + + //if page is not found, redirect traffic to index.html (cheap way to redirect all traffic to our lading page) + server.onNotFound([]() { + if(!handleFileRead(server.uri())){ + const char *metaRefreshStr = "

redirecting...

"; + server.send(200, "text/html", metaRefreshStr); + } + }); + + server.begin(); + + } + + void loop() { + dnsServer.processNextRequest(); + ArduinoOTA.handle(); + server.handleClient(); + delay(50); + } + + +String getContentType(String filename){ + if(server.hasArg("download")) return "application/octet-stream"; + else if(filename.endsWith(".htm")) return "text/html"; + else if(filename.endsWith(".html")) return "text/html"; + else if(filename.endsWith(".css")) return "text/css"; + else if(filename.endsWith(".js")) return "application/javascript"; + else if(filename.endsWith(".png")) return "image/png"; + else if(filename.endsWith(".gif")) return "image/gif"; + else if(filename.endsWith(".jpg")) return "image/jpeg"; + else if(filename.endsWith(".ico")) return "image/x-icon"; + else if(filename.endsWith(".xml")) return "text/xml"; + else if(filename.endsWith(".mp4")) return "video/mp4"; + else if(filename.endsWith(".pdf")) return "application/x-pdf"; + else if(filename.endsWith(".zip")) return "application/x-zip"; + else if(filename.endsWith(".gz")) return "application/x-gzip"; + return "text/plain"; +} + +//Given a file path, look for it in the SPIFFS file storage. Returns true if found, returns false if not found. +bool handleFileRead(String path){ + if(path.endsWith("/")) path += "index.html"; + String contentType = getContentType(path); + String pathWithGz = path + ".gz"; + if(SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)){ + if(SPIFFS.exists(pathWithGz)) + path += ".gz"; + File file = SPIFFS.open(path, "r"); + size_t sent = server.streamFile(file, contentType); + file.close(); + return true; + } + return false; +} + +void handleAppleCaptivePortal() { + String Page = F("SuccessSuccess"); + server.sendHeader("Cache-Control","no-cache, no-store, must-revalidate"); + server.sendHeader("Pragma", "no-cache"); + server.sendHeader("Expires", "-1"); + server.send(200, "text/html", Page); + return; + } + +void closeCNAdelay(){ + server.on("/hotspot-detect.html", handleAppleCaptivePortal); + return; +} From 550eeb939402d8c995ca1267fc4caf2a003c73e1 Mon Sep 17 00:00:00 2001 From: then Date: Sat, 24 Oct 2020 04:19:18 +0200 Subject: [PATCH 5/8] added descriptions to folder contents --- code/esp8266/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/esp8266/README.md b/code/esp8266/README.md index b19f878..868c36d 100644 --- a/code/esp8266/README.md +++ b/code/esp8266/README.md @@ -1,5 +1,11 @@ # opencoil-paracity: code +### Description of Files + * otastaImg - Offline ESP8266 webserver + captive portal + filesystem (iOS only atm) + * otastaImg-close-button - The above, but with 'close' button, just like your Hotel/Train/Airport wifi ;) (iOS only atm) + * paracity_gallery_v041 - Offline ESP8266 webserver + captive portal + filesystem hosting relevant files to reproduce all of this hardware and software (BROKEN) + + ### Prerequisites This guide assumes you have a 4MB ESP12F microcontroller and use Arduino IDE. From b94f9591a3b63d9f97e90fcc5a5d897000f54738 Mon Sep 17 00:00:00 2001 From: dennisdebel Date: Sat, 24 Oct 2020 05:35:16 +0200 Subject: [PATCH 6/8] changed name of new otastaImg.ino to reflect the folder --- .../{otastaImg.ino => otastaImg-close-button.ino} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename code/esp8266/otastaImg-close-button/{otastaImg.ino => otastaImg-close-button.ino} (100%) diff --git a/code/esp8266/otastaImg-close-button/otastaImg.ino b/code/esp8266/otastaImg-close-button/otastaImg-close-button.ino similarity index 100% rename from code/esp8266/otastaImg-close-button/otastaImg.ino rename to code/esp8266/otastaImg-close-button/otastaImg-close-button.ino From f65793276fd159137f5f5c8aec0df213fca883ff Mon Sep 17 00:00:00 2001 From: then Date: Sun, 25 Oct 2020 03:45:24 +0100 Subject: [PATCH 7/8] added data upload instructions --- code/esp8266/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/esp8266/README.md b/code/esp8266/README.md index 868c36d..93ec1d5 100644 --- a/code/esp8266/README.md +++ b/code/esp8266/README.md @@ -14,6 +14,10 @@ This guide assumes you have a 4MB ESP12F microcontroller and use Arduino IDE. * SPIFFS: You will need to add SPIFFS file upload support to Arduino if you want to upload files to the ESP12F, see: https://github.com/esp8266/arduino-esp8266fs-plugin +### Uploading Data to SPIFFS +The website served on the ESP8266 lives in the 'data' folder inside the sketchyour sketch. To upload this data you need the 'Arduino ESP8266 filesystem uploader' plugin. Find it [here](https://github.com/esp8266/arduino-esp8266fs-plugin). +You will find the tool/function in Arduino > Tools > ESP8266 Sketch Data Upload (make sure the directory path is correct). Close the Serial Monitor prior to uploading data. + ### Uploading Code For ESP12F use the following settings in Arduino IDE From 2391a68a5c6b4c8f038a41987882ab3f67bfe8a9 Mon Sep 17 00:00:00 2001 From: then Date: Sun, 25 Oct 2020 03:47:38 +0100 Subject: [PATCH 8/8] added upload instructions --- .../paracity_gallery_v041/README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/README.md b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/README.md index 753ac67..fc44203 100644 --- a/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/README.md +++ b/works/Dennis de Bel & Anton Jehle/paracity_gallery_v041/README.md @@ -15,11 +15,11 @@ The exhibition will start on October 26th in the public space in front of Zentru Now do it yourself! ## hardware -In this repo you will find a 3d printable .stl file that will allow you to print a mould for vacuumforming the charging pad cover. +In this Archive you will find a 3d printable .stl file that will allow you to print a mould for vacuumforming the charging pad cover. ## software -In this repo you will find an arduino sketch for the ESP8266 wireless chip. +In this Archive you will find an arduino sketch for the ESP8266 wireless chip. ### prerequisites @@ -56,6 +56,11 @@ For ESP12F use the following settings in Arduino IDE These settings give you about 2.471 KB of SPIFFS storage space for files and ~512KB sketch size +### Uploading Data to SPIFFS +The website served on the ESP8266 lives in the 'data' folder inside the sketchyour sketch. To upload this data you need the 'Arduino ESP8266 filesystem uploader' plugin. Find it [here](https://github.com/esp8266/arduino-esp8266fs-plugin). + +You will find the tool/function in Arduino > Tools > ESP8266 Sketch Data Upload (make sure the directory path is correct). Close the Serial Monitor prior to uploading data. + ### over the air (OTA) uploading