From baf5d8b14a5a8aa5dfeb6739fa3889ae8d882ea4 Mon Sep 17 00:00:00 2001 From: Ravin Perera <33562092+ravinsp@users.noreply.github.com> Date: Thu, 20 Aug 2020 15:20:11 +0530 Subject: [PATCH] Fixed incorrect memory access issues. (#109) --- examples/nodejs_client/file-client.js | 4 +- examples/nodejs_client/text-client.js | 6 +- src/bill/corebill.h | 4 +- src/comm/comm_server.cpp | 50 +++++--- src/comm/comm_session.cpp | 53 +++++--- src/comm/comm_session.hpp | 2 +- src/comm/comm_session_threshold.hpp | 8 +- src/conf.hpp | 168 +++++++++++++------------- src/cons/cons.hpp | 2 +- src/cons/ledger_handler.hpp | 2 +- src/hpfs/h32.hpp | 5 + src/hpfs/hpfs.hpp | 7 +- src/p2p/p2p.hpp | 20 +-- src/sc.hpp | 4 +- src/state/state_sync.hpp | 2 +- src/usr/usr.hpp | 2 +- test/bin/hpfs | Bin 219288 -> 219288 bytes 17 files changed, 192 insertions(+), 147 deletions(-) diff --git a/examples/nodejs_client/file-client.js b/examples/nodejs_client/file-client.js index 529c3917..1bb59098 100644 --- a/examples/nodejs_client/file-client.js +++ b/examples/nodejs_client/file-client.js @@ -34,14 +34,14 @@ async function main() { // Establish HotPocket connection. if (!await hpc.connect()) { console.log('Connection failed.'); - exit; + exit(); } console.log('HotPocket Connected.'); // This will get fired if HP server disconnects unexpectedly. hpc.on(HotPocketEvents.disconnect, () => { console.log('Server diconnected'); - exit; + exit(); }) // This will get fired when contract sends an output. diff --git a/examples/nodejs_client/text-client.js b/examples/nodejs_client/text-client.js index 40e5a5cb..1fc36ef2 100644 --- a/examples/nodejs_client/text-client.js +++ b/examples/nodejs_client/text-client.js @@ -32,14 +32,14 @@ async function main() { // Establish HotPocket connection. if (!await hpc.connect()) { console.log('Connection failed.'); - exit; + exit(); } console.log('HotPocket Connected.'); // This will get fired if HP server disconnects unexpectedly. hpc.on(HotPocketEvents.disconnect, () => { - console.log('Server diconnected'); - exit; + console.log('Server disconnected'); + exit(); }) // This will get fired when contract sends an output. diff --git a/src/bill/corebill.h b/src/bill/corebill.h index 07f37a2c..8ac0bec3 100644 --- a/src/bill/corebill.h +++ b/src/bill/corebill.h @@ -11,8 +11,8 @@ namespace corebill */ struct violation_stat { - uint32_t counter; - uint64_t timestamp; + uint32_t counter = 0; + uint64_t timestamp = 0; }; void report_violation(const std::string host); diff --git a/src/comm/comm_server.cpp b/src/comm/comm_server.cpp index 11defd48..7b8a1717 100644 --- a/src/comm/comm_server.cpp +++ b/src/comm/comm_server.cpp @@ -79,22 +79,15 @@ namespace comm // Counter to track when to initiate outbound client connections. int16_t loop_counter = -1; + // Indicates whether at least some bytes were read from any of the clients during the previous iteration. + // If no bytes were read, we would force thread sleep to wait for bytes to arrive. + bool bytes_read = false; + while (true) { if (should_stop_listening) break; - // Prepare poll fd list. - const size_t fd_count = sessions.size() + 1; //+1 for the inclusion of accept_fd - pollfd pollfds[fd_count]; - if (poll_fds(pollfds, accept_fd, sessions) == -1) - { - util::sleep(10); - continue; - } - - util::sleep(10); - // Accept any new incoming connection if available. check_for_new_connection(sessions, accept_fd, session_type, is_binary, metric_thresholds); @@ -109,9 +102,27 @@ namespace comm loop_counter++; } - const size_t sessions_count = sessions.size(); + // Prepare poll fd list. + const size_t fd_count = sessions.size() + 1; //+1 for the inclusion of accept_fd + + pollfd pollfds[fd_count]; + memset(pollfds, 0, sizeof(pollfd) * fd_count); + + if (poll_fds(pollfds, accept_fd, sessions) == -1) + { + util::sleep(10); + continue; + } + + if (!bytes_read) + util::sleep(10); + bytes_read = false; + + // Loop through all session fds and read any data. + const size_t sessions_count = sessions.size(); + if (sessions_count == 0) + continue; - // Loop through all fds and read any data. for (size_t i = 1; i <= sessions_count; i++) { const short result = pollfds[i].revents; @@ -126,7 +137,18 @@ namespace comm if (!should_disconnect) { if (result & POLLIN) - should_disconnect = (session.attempt_read(max_msg_size) == -1); + { + const int read_result = session.attempt_read(max_msg_size); + + // read_result -1 means error and we should disconnect the client. + // read_result 0 means no bytes were read. + // read_result 1 means some bytes were read. + // read_result 2 means full message were read and processed successfully. + if (read_result > 0) + bytes_read = true; + else if (read_result == -1) + should_disconnect = true; + } if (result & (POLLERR | POLLHUP | POLLRDHUP | POLLNVAL)) should_disconnect = true; diff --git a/src/comm/comm_session.cpp b/src/comm/comm_session.cpp index a6ceb2e1..33c79396 100644 --- a/src/comm/comm_session.cpp +++ b/src/comm/comm_session.cpp @@ -12,6 +12,7 @@ namespace comm constexpr uint32_t INTERVALMS = 60000; constexpr uint8_t SIZE_HEADER_LEN = 8; + constexpr uint32_t READ_BUFFER_IDLE_SIZE = 64 * 1024; // Global instances of user and peer session handlers. usr::user_session_handler user_sess_handler; @@ -48,8 +49,10 @@ namespace comm /** * Attempts to read message data from the given socket fd and passes the message on to the session. - * @param should_disconnect Whether the client fd must be disconnected. * @param max_msg_size The allowed max byte length of a message to be read. + * @return -1 on error and client must be disconnected. 0 if no message data bytes were read. 1 if some + * bytes were read but a full message is not yet formed. 2 if a fully formed message has been + * read into the read buffer. */ int comm_session::attempt_read(const uint64_t max_msg_size) { @@ -59,33 +62,39 @@ namespace comm available_bytes > (max_msg_size + (is_binary ? SIZE_HEADER_LEN : 0)))) return -1; + int res = 0; + // Try to read a complete message using available bytes. - // If complete message is not available silently return. if (available_bytes > 0) { - const uint32_t read_len = is_binary ? get_binary_msg_read_len(available_bytes) : available_bytes; - - if (read_len == -1) + if (is_binary) { - return -1; + res = get_binary_msg_read_len(available_bytes); } - else if (read_len > 0) + else { - if (!is_binary) + read_buffer.resize(available_bytes); + res = read(read_fd, read_buffer.data(), available_bytes) < available_bytes ? -1 : 2; + } + + if (res == 2) // Full message has been read into read buffer. + { + if (on_message(std::string_view(read_buffer.data(), read_buffer.size())) == -1) + res = -1; + + // Reset the read buffer. + if (read_buffer.size() > READ_BUFFER_IDLE_SIZE) { - read_buffer.resize(read_len); - if (read(read_fd, read_buffer.data(), read_len) < read_len) - return -1; + read_buffer.resize(READ_BUFFER_IDLE_SIZE); + read_buffer.shrink_to_fit(); // This is to avaoid large idle memory allocations. } - int res = on_message(std::string_view(read_buffer.data(), read_len)); - read_buffer.clear(); // Clear the buffer after read operation. + read_buffer.clear(); read_buffer_filled_size = 0; - return res; } } - return 0; + return res; } int comm_session::on_message(std::string_view message) @@ -168,9 +177,11 @@ namespace comm /** * Retrieves the length of the binary message pending to be read. Only relevant for Binary mode. * @param available_bytes Count of bytes that is available to read from the client socket. - * @return Length of the message if the complete message available to be read. 0 if reading must be skipped. -1 if client must be disconnected. + * @return -1 on error and client must be disconnected. 0 if no message data bytes were read. 1 if some + * bytes were read but a full message is not yet formed. 2 if a fully formed message has been + * read into the read buffer. */ - uint32_t comm_session::get_binary_msg_read_len(const size_t available_bytes) + int comm_session::get_binary_msg_read_len(const size_t available_bytes) { // If we have previously encountered a size header and we are waiting until all message // bytes are received, we must have the expected message size > 0. @@ -210,7 +221,8 @@ namespace comm const size_t read_len = expected_msg_size; expected_msg_size = 0; // reset the expected msg size. - return read_len; + + return 2; // Full message has been read. } else { @@ -218,11 +230,12 @@ namespace comm if (read(read_fd, read_buffer.data() + read_buffer_filled_size, data_bytes) == -1) return -1; // Indicates that we should disconnect the client. read_buffer_filled_size += data_bytes; + + return 1; // Some bytes were read, but full message is not yet formed. } } - // Skip reading - return 0; + return 0; // No message data bytes was read. } /** diff --git a/src/comm/comm_session.hpp b/src/comm/comm_session.hpp index e8e17621..16e0ff2c 100644 --- a/src/comm/comm_session.hpp +++ b/src/comm/comm_session.hpp @@ -39,7 +39,7 @@ class comm_session std::vector read_buffer; // Local buffer to keep collecting data until a complete message can be constructed. uint32_t read_buffer_filled_size = 0; // How many bytes have been buffered so far. - uint32_t get_binary_msg_read_len(const size_t available_bytes); + int get_binary_msg_read_len(const size_t available_bytes); int on_message(std::string_view message); public: diff --git a/src/comm/comm_session_threshold.hpp b/src/comm/comm_session_threshold.hpp index fb2af16c..73ba77bb 100644 --- a/src/comm/comm_session_threshold.hpp +++ b/src/comm/comm_session_threshold.hpp @@ -33,10 +33,10 @@ enum SESSION_THRESHOLDS */ struct session_threshold { - uint64_t threshold_limit; - uint32_t intervalms; - uint64_t counter_value; - uint64_t timestamp; + uint64_t threshold_limit = 0; + uint32_t intervalms = 0; + uint64_t counter_value = 0; + uint64_t timestamp = 0; session_threshold(const uint64_t threshold_limit, const uint32_t intervalms) : threshold_limit(threshold_limit), intervalms(intervalms) diff --git a/src/conf.hpp b/src/conf.hpp index d49ea0cd..43e26128 100644 --- a/src/conf.hpp +++ b/src/conf.hpp @@ -10,114 +10,114 @@ namespace conf { -constexpr const char *SELF_HOST = "127.0.0.1"; + constexpr const char *SELF_HOST = "127.0.0.1"; -// Typedef to represent ip address and port pair. -typedef std::pair ip_port_pair; + // Typedef to represent ip address and port pair. + typedef std::pair ip_port_pair; -// The operating mode of the contract node. -enum OPERATING_MODE -{ - OBSERVER = 0, // Observer mode. Only emits NUPs. Does not participate in voting. - PROPOSER = 1 // Consensus participant mode. -}; + // The operating mode of the contract node. + enum OPERATING_MODE + { + OBSERVER = 0, // Observer mode. Only emits NUPs. Does not participate in voting. + PROPOSER = 1 // Consensus participant mode. + }; -// Holds contextual information about the currently loaded contract. -struct contract_ctx -{ - std::string command; // The CLI command issued to launch HotPocket - std::string exe_dir; // Hot Pocket executable dir. - std::string websocketd_exe_path; // Websocketd executable file path. - std::string websocat_exe_path; // Websocketd executable file path. - std::string hpfs_exe_path; // hpfs executable file path. + // Holds contextual information about the currently loaded contract. + struct contract_ctx + { + std::string command; // The CLI command issued to launch HotPocket + std::string exe_dir; // Hot Pocket executable dir. + std::string websocketd_exe_path; // Websocketd executable file path. + std::string websocat_exe_path; // Websocketd executable file path. + std::string hpfs_exe_path; // hpfs executable file path. - std::string contract_dir; // Contract base directory full path - std::string hist_dir; // Contract ledger history dir full path - std::string state_dir; // Contract state maintenence path (hpfs path) - std::string state_rw_dir; // Contract executation read/write state path. - std::string state_read_req_dir; // Contract executation state path for read requests. - std::string log_dir; // Contract log dir full path - std::string config_dir; // Contract config dir full path - std::string config_file; // Full path to the contract config file - std::string tls_key_file; // Full path to the tls secret key file - std::string tls_cert_file; // Full path to the tls certificate -}; + std::string contract_dir; // Contract base directory full path + std::string hist_dir; // Contract ledger history dir full path + std::string state_dir; // Contract state maintenence path (hpfs path) + std::string state_rw_dir; // Contract executation read/write state path. + std::string state_read_req_dir; // Contract executation state path for read requests. + std::string log_dir; // Contract log dir full path + std::string config_dir; // Contract config dir full path + std::string config_file; // Full path to the contract config file + std::string tls_key_file; // Full path to the tls secret key file + std::string tls_cert_file; // Full path to the tls certificate + }; -// Holds all the contract config values. -struct contract_config -{ - // Config elements which are initialized in memory (these are not directly loaded from the config file) + // Holds all the contract config values. + struct contract_config + { + // Config elements which are initialized in memory (these are not directly loaded from the config file) - std::string pubkey; // Contract public key bytes - std::string seckey; // Contract secret key bytes - std::vector runtime_binexec_args; // Contract binary execution args used during runtime. - std::vector runtime_appbill_args; // Appbill execution args used during runtime. - OPERATING_MODE current_mode; // Current operating mode of the contract (Observer/Proposer) + std::string pubkey; // Contract public key bytes + std::string seckey; // Contract secret key bytes + std::vector runtime_binexec_args; // Contract binary execution args used during runtime. + std::vector runtime_appbill_args; // Appbill execution args used during runtime. + OPERATING_MODE current_mode = OPERATING_MODE::OBSERVER; // Current operating mode of the contract (Observer/Proposer) - // Config elements which are loaded from the config file. + // Config elements which are loaded from the config file. - OPERATING_MODE startup_mode; // Configured startup operating mode of the contract (Observer/Proposer). - std::string pubkeyhex; // Contract hex public key - std::string seckeyhex; // Contract hex secret key - std::string binary; // Full path to the contract binary - std::string binargs; // CLI arguments to pass to the contract binary - std::string appbill; // binary to execute for appbill - std::string appbillargs; // any arguments to supply to appbill binary by default - std::set peers; // Set of peers keyed by ":" concatenated format - std::unordered_set unl;// Unique node list (list of binary public keys) - uint16_t peerport; // Listening port for peer connections - uint16_t roundtime; // Consensus round time in ms - uint16_t pubport; // Listening port for public user connections - - uint64_t pubmaxsize; // User message max size in bytes - uint64_t pubmaxcpm; // User message rate (characters(bytes) per minute) - uint64_t pubmaxbadmpm; // User bad messages per minute - uint16_t pubmaxcons; // Max inbound user connections - - uint64_t peermaxsize; // Peer message max size in bytes - uint64_t peermaxcpm; // Peer message rate (characters(bytes) per minute) - uint64_t peermaxdupmpm; // Peer max duplicate messages per minute - uint64_t peermaxbadmpm; // Peer bad messages per minute - uint64_t peermaxbadsigpm; // Peer bad signatures per minute - uint16_t peermaxcons; // Max inbound peer connections + OPERATING_MODE startup_mode = OPERATING_MODE::OBSERVER; // Configured startup operating mode of the contract (Observer/Proposer). + std::string pubkeyhex; // Contract hex public key + std::string seckeyhex; // Contract hex secret key + std::string binary; // Full path to the contract binary + std::string binargs; // CLI arguments to pass to the contract binary + std::string appbill; // binary to execute for appbill + std::string appbillargs; // any arguments to supply to appbill binary by default + std::set peers; // Set of peers keyed by ":" concatenated format + std::unordered_set unl; // Unique node list (list of binary public keys) + uint16_t peerport = 0; // Listening port for peer connections + uint16_t roundtime = 0; // Consensus round time in ms + uint16_t pubport = 0; // Listening port for public user connections - std::string loglevel; // Log severity level (debug, info, warn, error) - std::unordered_set loggers; // List of enabled loggers (console, file) -}; + uint64_t pubmaxsize = 0; // User message max size in bytes + uint64_t pubmaxcpm = 0; // User message rate (characters(bytes) per minute) + uint64_t pubmaxbadmpm = 0; // User bad messages per minute + uint16_t pubmaxcons = 0; // Max inbound user connections -// Global contract context struct exposed to the application. -// Other modeuls will access context values via this. -extern contract_ctx ctx; + uint64_t peermaxsize = 0; // Peer message max size in bytes + uint64_t peermaxcpm = 0; // Peer message rate (characters(bytes) per minute) + uint64_t peermaxdupmpm = 0; // Peer max duplicate messages per minute + uint64_t peermaxbadmpm = 0; // Peer bad messages per minute + uint64_t peermaxbadsigpm = 0; // Peer bad signatures per minute + uint16_t peermaxcons = 0; // Max inbound peer connections -// Global configuration struct exposed to the application. -// Other modeuls will access config values via this. -extern contract_config cfg; + std::string loglevel; // Log severity level (debug, info, warn, error) + std::unordered_set loggers; // List of enabled loggers (console, file) + }; -int init(); + // Global contract context struct exposed to the application. + // Other modeuls will access context values via this. + extern contract_ctx ctx; -int rekey(); + // Global configuration struct exposed to the application. + // Other modeuls will access config values via this. + extern contract_config cfg; -int create_contract(); + int init(); -void set_contract_dir_paths(std::string exepath, std::string basedir); + int rekey(); -//------Internal-use functions for this namespace. + int create_contract(); -int load_config(); + void set_contract_dir_paths(std::string exepath, std::string basedir); -int save_config(); + //------Internal-use functions for this namespace. -int validate_config(); + int load_config(); -int validate_contract_dir_paths(); + int save_config(); -int is_schema_valid(const rapidjson::Document &d); + int validate_config(); -int binpair_to_hex(); + int validate_contract_dir_paths(); -int hexpair_to_bin(); + int is_schema_valid(const rapidjson::Document &d); -void change_operating_mode(const OPERATING_MODE mode); + int binpair_to_hex(); + + int hexpair_to_bin(); + + void change_operating_mode(const OPERATING_MODE mode); } // namespace conf diff --git a/src/cons/cons.hpp b/src/cons/cons.hpp index 4294e68a..8aac2272 100644 --- a/src/cons/cons.hpp +++ b/src/cons/cons.hpp @@ -19,7 +19,7 @@ namespace cons struct candidate_user_input { const std::string userpubkey; - const uint64_t maxledgerseqno; + const uint64_t maxledgerseqno = 0; std::string input; candidate_user_input(const std::string userpubkey, const std::string input, const uint64_t maxledgerseqno) diff --git a/src/cons/ledger_handler.hpp b/src/cons/ledger_handler.hpp index 16d4f12e..86ec07d8 100644 --- a/src/cons/ledger_handler.hpp +++ b/src/cons/ledger_handler.hpp @@ -19,7 +19,7 @@ struct ledger_cache_entry struct ledger_history { std::string lcl; - uint64_t led_seq_no; + uint64_t led_seq_no = 0; std::map cache; }; diff --git a/src/hpfs/h32.hpp b/src/hpfs/h32.hpp index 8a75edaf..a9cbab54 100644 --- a/src/hpfs/h32.hpp +++ b/src/hpfs/h32.hpp @@ -18,6 +18,11 @@ namespace hpfs std::string_view to_string_view() const; h32 &operator=(std::string_view sv); bool operator<(const h32 rhs) const; + + h32() + { + memset(data, 0, sizeof(data)); + } }; extern h32 h32_empty; diff --git a/src/hpfs/hpfs.hpp b/src/hpfs/hpfs.hpp index e564134f..f27dca44 100644 --- a/src/hpfs/hpfs.hpp +++ b/src/hpfs/hpfs.hpp @@ -8,9 +8,14 @@ namespace hpfs { struct child_hash_node { - bool is_file; + bool is_file = false; char name[256]; h32 hash; + + child_hash_node() + { + memset(name, 0, sizeof(name)); + } }; int init(); diff --git a/src/p2p/p2p.hpp b/src/p2p/p2p.hpp index bebbd8c0..f43d0bf8 100644 --- a/src/p2p/p2p.hpp +++ b/src/p2p/p2p.hpp @@ -16,9 +16,9 @@ namespace p2p struct proposal { std::string pubkey; - uint64_t timestamp; - uint64_t time; - uint8_t stage; + uint64_t timestamp = 0; + uint64_t time = 0; + uint8_t stage = 0; std::string lcl; hpfs::h32 state; std::set users; @@ -61,7 +61,7 @@ namespace p2p struct history_response { std::map hist_ledgers; - LEDGER_RESPONSE_ERROR error; + LEDGER_RESPONSE_ERROR error = LEDGER_RESPONSE_ERROR::NONE; }; // Represents an NPL message sent by a peer. @@ -76,24 +76,24 @@ namespace p2p struct state_request { std::string parent_path; // The requested file or dir path. - bool is_file; // Whether the path is a file or dir. - int32_t block_id; // Block id of the file if we are requesting for file block. Otherwise -1. + bool is_file = false; // Whether the path is a file or dir. + int32_t block_id = 0; // Block id of the file if we are requesting for file block. Otherwise -1. hpfs::h32 expected_hash; // The expected hash of the requested result. }; // Represents state file system entry. struct state_fs_hash_entry { - std::string name; // Name of the file/dir. - bool is_file; // Whether this is a file or dir. - hpfs::h32 hash; // Hash of the file or dir. + std::string name; // Name of the file/dir. + bool is_file = false; // Whether this is a file or dir. + hpfs::h32 hash; // Hash of the file or dir. }; // Represents a file block data resposne. struct block_response { std::string path; // Path of the file. - uint32_t block_id; // Id of the block where the data belongs to. + uint32_t block_id = 0; // Id of the block where the data belongs to. std::string_view data; // The block data. hpfs::h32 hash; // Hash of the bloc data. }; diff --git a/src/sc.hpp b/src/sc.hpp index 9f538a1c..c3f8a2e4 100644 --- a/src/sc.hpp +++ b/src/sc.hpp @@ -101,10 +101,10 @@ namespace sc std::vector hpscfds; // Holds the contract process id (if currently executing). - pid_t contract_pid; + pid_t contract_pid = 0; // Holds the hpfs rw process id (if currently executing). - pid_t hpfs_pid; + pid_t hpfs_pid = 0; // Thread to collect contract outputs while contract is running. std::thread output_fetcher_thread; diff --git a/src/state/state_sync.hpp b/src/state/state_sync.hpp index d431906a..cc6b6e9a 100644 --- a/src/state/state_sync.hpp +++ b/src/state/state_sync.hpp @@ -19,7 +19,7 @@ namespace state_sync // Represents a queued up state sync operation which needs to be performed. struct backlog_item { - BACKLOG_ITEM_TYPE type; + BACKLOG_ITEM_TYPE type = BACKLOG_ITEM_TYPE::DIR; std::string path; int32_t block_id = -1; // Only relevant if type=BLOCK hpfs::h32 expected_hash; diff --git a/src/usr/usr.hpp b/src/usr/usr.hpp index c1286204..63b96a97 100644 --- a/src/usr/usr.hpp +++ b/src/usr/usr.hpp @@ -34,7 +34,7 @@ namespace usr const comm::comm_session &session; // The messaging protocol used by this user. - const util::PROTOCOL protocol; + const util::PROTOCOL protocol = util::PROTOCOL::JSON; /** * @param session The web socket session the user is connected to. diff --git a/test/bin/hpfs b/test/bin/hpfs index 5aa37e76466f30d4d3cb3d662b5dc3444243064d..90885c215ded0ea68450a92960349d147a0cf86c 100755 GIT binary patch delta 52341 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 z zUcFIA-z|rv5HeMNYAgAgm|xsmiIYu=EBkUgX^DNxf$i7|U=y;PymxcoV`@yteJG^~ zm-#x$B07*pti{)OZn*Aa2e)HQiTfI!UBSNmnxs0^+il9%9>p8{nbl4bMhaQvPU0@V z-oxT^@u-}(6K?)&7u%3aMl-8#uwWZ^v)Fhp4`Jb)KbwBn?H(0yss`x8 zJ%>oNt@kEV`CZsQhtMZ~Z8VkdjH(RAjjZKi5=lzg_H`>8)`R#^Ouk%Pxa!LQm5ptH0F3jpE=`71LtLnF7xTJR?OIi9+GSIfwI#Xc@ z?8#BmSgvHuUQfKNY}cdge;C`kj5x9GdJOq=Hd_x@=Cd_=RM15KNRMHOEvw6M5+T2z zR#kyDOFoV#=|YxyobX)>6Q{cPSD>~s1rhpr=geul(&y}`>QSuus! z{MW~|?=BpGaf*#8#QmBWseM_$vt)qfY8`T5JvmF>$z%iDbDntjJG7E-NQ(@Oag0Ki zQW(5dRn_~bTB)kcKB|_fs`AWA<9Ga&W*8_UBfnz}i!cedvWOxq1Gg5l5#3~0HnoV@ z)z4i4@6<;Ic&A{A@XjWv;GNBSRzxC*`QSxjopR>eIrjGjGSuda6^elq7BPqRvWDg| z4O?`P#MY@?j=$x{y&!z-@?r(MdlAQ~%S^t6xz1SYOC;X%C<-%dWy>y+g>q=7-th<0 zk=V^yhHUD$JX_fC%Ot?*pD%egi<{_i*w(-Wec8Ip&G zK{45nltI@>AUVedU&EGu9eaI^^tVf2glg6()fBOT*HO(bHt#x_MtZTot`iRu%xrIv z&Q{On!L*;}u)+{Iu>OH`_*DZ9Tybo!@aqPs;MWcM^*2Zk!M?ivPh`2}=W~#2IJ^22 z=_ofeWA?X5C{AxNw@6#<{AW3M6*4ySWNHN;+TSJ%teF6eiOo{JSB=e#sR%B_8ki;` ziwytHMx9wAQEZk@WT}c2Bk$r&9;XL+hi2E&*t7Hb1WOdMnfI;0q@?BcFg+@36(A8vO#x9 zfYyT#hs+pmV>Yj>MK|8N%0o<5g(<33QNbDo>Qn9(&(ad{cxhwd6miLHdj2JdY%%Ll z@;W|ybdkw(U~bD=d=$l`K~9?E%|6^Ajr}I9s5ExVJg1~AGGr`9$2-38bCu#o$tZ9ty|l}6>u@T!6v zOsOAAjAnhzWAa7;~J$S;EpEyKqZcwR@ zm$g&ThWTvi1JXR{7pzBcVm?-=w3*7_>CW4$3)7{FHW|`I^Z7+Nrs)iOZsDsJeBkhh zfmq?(lnn7|hQ31Nu|+s0x;`YnK7;008lRep=A$a;yFj5@a~7>K9ALv9k|x?7Gtk}7 zC-eGUR!oLDy0CDlFtVp{2^ptNKspXj9-`N zT%wdzhm=$kLU0!KL#k|LT{vYl;-76{2a9kdto?`_l^Zo4 z#(dBy6z_S*jTJv5b4g=;&p$C`@!-vUP6ldjCUK{pH580AIhP=PHnZ=CefItLcuI8m zi@cR5c=EdwcC{@|MR?6<8gb~?o(~d!r6hW-b$eDBN!*yl3*5B)nW*=CK{^pUYDT@p zP$O*hOVZD*(a=gd;;tLM4sl_cSERSu_94nq_~^V^Jh}9sIN8%7Pv>5;ycLA(C z4M&#W;)nyA+ymE)KMumPtL|{pgvGoi@2xNP6Uk!fTZ6xT>N_%r$R1kp#+qE9#rGIq zEbs$aYql(2bfRqQDB{@8NhE>=Rg!pYKIc~wAN#BpRUMnlO`F2Zt^CS2|y7uRJTvvKsf z(MufA*Ibtm2cPebqO$nKyvZGH`8$UldMQ=;_cm2E5kbR1{kKH6C1%~?l+k!cmZP03 zV|gJl<*}zrEx6UadQ=*j_X?bWhMCC|f{wpVX1l9NUSQm=e?@nssUpyS9;dy1a?xo*Y(+3dL2x zl|iVVWrxUau0r0+Wu-laXw-M3BTJk`>a$XYA-N(3j+s+eUQPDu?d|1@#5@?q(XGF` z(pYBC%pK+7UM(mIdm>w?2&Il+T9qn7x3LzyIR+p-0YayuJ;ynoKybSr|Lca;0q z`UCH$b9pxNc9Q$p`W!J?v59@@B-ba?*m@_qB{{|}Imx+=LUtjZKbX@Ct$DVPp1c>h z7cr>ehMx@@w#iu@L~gRz&T@0do!^+s`?Eb-RnnG)y2!zDgHPCa7dahGd+H(&Ha{PZ z)?E9mo;e!e%|_LeCt`$MsVDa$<5&Y%+0!riYhG_gh58(uCORM0W{9t?l$!hNN4m;h z#I@ByUZ?U^#mDa*BH22P?CIu;NWSTKsBAjy)kAmGL1tfzIJ>U*=q9r(lGdbMl0nkSvvv`#QmYXEiS!6#q+hIy?DL` zaS4qJ3gJ6PPgdJQ9%23miecHQB!I2)kn1@-IgX6H))?`8DsRIIJmdhgfDmy-#HRKk zRygL?ZXo;O5+bO9?B-P`g6F{NSm~e&?)}bIJflfOy=!{W8l4LS))B0i8BsfV8IT+Wd@2j zrF!)>GN+%jhbOCE|NC|)RJyR0$imBMh(BiHPfZ;zs$w(man&5YLI0S+W0w&1cteH9 ze$Tr=w?>F+qT0H!D7CmTEWM%Z+v92H|Kte`f|!0XA4N!YGn9=>Mpc1>{ZMi-vNu_9_1@@MKGIyJeG)fnY4-FKZYw_o5ErCoMuI5A>YD{p7}`d&=(GAe4Fx zUrKX7Jw(`)YUB=X;D7w&!(FEfb5#x5EBwPJUZHS=nDRUDr()cBPxc_K;=CIvJe$ee zDe!h#5o$D?-c#wK8mLEdQ`H&F%S#T8;D7LQ4DSST)7-0@_7$$LYM3^JTdNBjhb+8D zJXyAvtZ7ujU+IA{ZXb=Y`mZs&*biQE3+*i4GG)Q7$2&&Mq^jXDw^P+#RcGp z-g4sLuB}aT<^-H4mHCQqEi)vH3+|gf>&1GOt1h2?JMyY|FDeN{FNQtFa#UedUZS@- zA%@fyw%SJyX;}vkByrBls4C%c2VMd{YNg>(5cu)9H7XCQMXg41Th~Q9c-_je25@N#7tE>>eH%WfpQxUN^SmUC@ZhCz+o%nFdz{(F9Fs}qYKZ(1sQ z+DLY*bqRlI#>Fwr&R5nDGv@CrcfeC?tgk#H_y}Ls)6aQTEwiS~d1!_>|0VNPw#tfk z+gNQsIShBy(SEXX(C^>=$9WIYLg8f5cvN}y6ymE~S!76H8Gf>FhY$RDuN)Z9DyJUq zD$0doSl(cA(z}h=Ry? zwxhA^t^J#~>Z9fDkgp84hJ4+rD*6hNRP}OI3mtj+%8YLlz=NjLIsZrM$HGNo4_WKK zsl%uLAIXn?On%27=e?(d@BIJsN?9J8+eB{R_`bPmR4EVGnXI4*M%4rMQxlA;khM+a zrcOU%N5&2OxCz?MIy9AC&3)izHo2)hMf>Y9?n(YWkh)P4!)7XfDgQSGU_;uA4XTJX$@x9mj6^yG~(y?j;1hBTAgG;G|gMq|F^ z{lM=sFzW8HgU#e6o~`zAGqBIs#arXRt{m2tYnF_+d~@?NaUnmmNzLUBj`lD|Y@e%k zA01dhbJ-hLzxSHUt!<9t{d)d4a)z&2!xpl?`?q}k!h5cK4C~@iNw&HTj%34I$Z75a z@h5K>!Td6-kXy7|k#ownv5FS*F!zgme_TEP5;gx$mflis;_D&`#(Pvceiw78x9o?CIB{gK=%ouR=|(3u8V(awCt-z^bNNiDXY_ zRrxJ?HyarwM@1dtFS4t?yvBF_RnF77?D6N_Ca$V{|1lcXdIs=%oU7iCo5>yo$-&x! zfU0`bKMcg1QQT=0)QLZZm#n^CmVT1EQo^4Q0>-iyBBgqF$X5>GfrJ0eU%H!HX)5jm zcPSr$x>)=J0T~k%7rI>aGa1|sfBeTBLS#*V^>(D?PODn^iVVH^K1>Y!s^!x!h<)de zk-r@t7TLxg*rsL^)nHJm*>z!|qLw1Vq1UPr=!pS`5zef!y1FSwSJmMRqyO_zA&1%W z5ZTM&zE}dqDsZYHme<|vyAZjtZ#UFq_@e<#)wyIfK+AMtt$Ed17L&PzS|``%dw6$t z@&-=7ZClA3%^GA^((8s7GPp?33?8VvEe{eC>D^!jr7uc3ixrfDEcl8wq zW*H_g!BV~=Om2WTQ}&0+UUqxYGsuQRbCIEl-42sSwus~^Wu^wzSG}hsc=z!*Sr0J= z;)e5h4!_8n*ING6EKS32i`xk%%3;v>d2zn$b&4dy21|SJ)wH+W*b>!Hrut5 z1>>zD)*xK=ljDA&UO%|g!s~W&qhHwMa5+|9bApl1#9Lnyj;jnZi#=&8m&$$WF$a6R zBlc@M+1c|9yoecD<1|v~&F5*6;df@=UhdTKG8c7`^XkFN6P&o0!+um$-Cdv>ps3EP znYt+AKdRWqiLGoeJKOGn8~L9s*ce(RvP13VfOf+@FcT`wW>^^<$K&x3kYy1kH1Z4^ z!#*7jb20CqI>Nc7cz>Q-gEze;=nO8ynPY_9-mL^*%_*DvD+rnP&Knby&Am24cGqGj zC>`T}^^TG8H(r7@rOI85%>UioPg^3IX094OoxfSm|LkILeQqcIW;a%6@y3h)EiMA( z2&juwFctY82n|*sk?*X*0Y)`c4**7f+4k`OkduktUz%5mD@D0pLtCs(hMPL15GR#O z2%UmTw0Yg2k0-j(tx>}<+)#+dz)Dl9+(pP-qcOaFx-dW0sMeU|n8${0yc*?D(&oQ5 zm7w*8+w6U$+(2V%GDfa$OflYgl7qBUJYhy}#f-+)%`jyAj~TnUWxB9rWZ_*H!n+J+ z%ojKR;$S(I-$#CQjlJlE$YX98SS8{+nbWbEH)1n!yv9rE=M6iYdtn@j8=ZyU6Yh%0 zBD7(0|2(s#}XA&W8qv=Dy#oB^#WJn&km4< z+qFjg^>5f)SH-R_eBnbwRxaffU83#JGnkI6Ug$%^bRI2?nt)Jk(>!XeS|w&%u?MUg zp;(m#H<(g&=U=J(*MYSatK3zq&Wn+O+4d5vOx0}5MtNekEk!_`Z9njYxLOjLBEuE& zMc7%xUQDTOs{LQ}`;YzYcvod*Tu|>SUN6Mbl5rQ3;R|F^8Z{XqleO*peVlaKU+SYx zW0W?nhOwqp{T3kef7|5Do2d(HuiEy&np=I=@QjaX#kIHl@)Rc5&VdsQ2k*m_vj;1U zX(#W%Dk;SogW7>FwmUs5Es?Xx5W(hjl3O z7l2`*uSm=P(O#bRq#|1Lzw3f{KoOhs3|d{}PM)KmqMN4XSf+?~HA;?oium41R55^O z@KIDzYKEbTcu36~jW6@QNwX=R5*FKUUFrE^QrlBC%U`fN@AR-wiUmU79#OlPz8lS|f zibcIkdA;{Ns@0ooCF<4kdh03mPPRp&1f`;GYQ6XeGBJ9v3UoNQdn; zulS84vcJYvV@)5N=Bq7Vk%cK&d9uz`rdaaExhS@@3`b3KxMOvZ*J~ryNo!I0a^&F2 zrYK^n>iR7#u!}s#$x9VS!8E))U$@9&HQUlfZs7dVRq4|ZCBnAIVvGYT?jpN6UsPi( zOfhX7*asf7O^qo*RVWO3Y#dmVu5t_4=jPm&jPk$ubCQ3}{*yf{9Kxn{#h$&Pnyr_T z4K^%9EP4iiG{IK}+{*BLx-g<9^fQ$|6bbpy)43m0{Z>!0+-Oy0MHo`?ht1Q0A5;CH zruxOIWmU4eNQSE{>1oi%WVvdxJX2w1tXHhu(DqVYzL3f(wehcxu+&)Dd+a7?FpBDC zSx^y&EA@3K4P_N`^V18x_)ZIZXSK-YN|CkBTiEdCJ`Mh#l=aknx?;TKS$mv*5O413M_=H8h-K;fOA@jW-cRL4aeFXHY;IhM!jEa4SE zv!_1)8qbX$ylQWjF-x2h$RM_{yWGOh%NvFBvlQk3Cp*Qt+9F&mw$Q;Ij^& zt@t3BMqk=n?r+tm$-YYCux~1j3-DQs51098&hC$4F0X)m1RvMEmBtoQ3s&4;cGWK! zB;$pt3pn{|W*Ut>@fnQ|m-)x?i;rP0dq5tG&vb-Yi=MK(e&=A>#!~z2=?CMo#`xb7 zUVJbf0TaPQaNNre#%B1d`3qniIN;R><0SArxD2cS_kp&rKNv5Aah%9E9DD{QgSODm z=Q6mF%ebQ74>kjvyg|85@sGoGMIgMTB&`4o!8iYWFnXbX##VeV26n;!?*mRkhGpO~ za2L1_{0F=Y2LFo+z-gc@{!xJ&U^DPvFb>qbMSgHCxD4C|?gKA?&zfl^=`jNK&GC<< zzWZPd0+YdbFc(Y)AAs55J1`gYdjG*#490=w-~`Yf7d#8WATS4v2XBMPUhbL3iPt5G~>nup>)9RPj7sbDPlCCL9#xm(~8unV57`@m%IGU$V8Rt_Gp zuQb|+q2&&h#vrf-7!OVXlffMhTDS~>!%*acl4GT@1at>0z%ihvHCh6OgB!sF@HvTTmUbFzPP-2 z28MvP;gYlm3<58J@!%~m8FaxSmkss@b3rq#us6Y8;482Iw+PN{;d(F>w8rY)9~=Uv zfHT2$pmr4k`3O7&?}Fvvd(a&_6OVS1#CIqW;2vz&#(??YLhuE+1MGl{k#pd2FBlHG zVCA=MFG(%IW?)+|4on3nfpdM(a4@0@hJ$Cp1h5iJ1tXdu zKR6J~*CMbQff8^FSONYBYN90RE*K6z2NOX1rYHbx4Xy)6g8ASwums!*R)8g-CR&ny z2gAXC!35By8S;bi;5u+PsLe-UHUcH!Mz8`r3Tiq@(m603v}}$7z;G}X>DfG6TGNWmy@ z_(XImI1yYDhxtDffn8AS055>oK?5jFLf7=fnhgem&XX~Z!A@W@m<(ovo55W0ICvAR z1S>$>DKMxP7APj5MC%e;l(4d`I!VjWB;1aMumV5@LXc5RqU^VEH3(LSx;7xE5SOIPXHA!$S7!Df11n@1G z3c4J^Isit2`Cu=w1pExF02hIpkr+E*ICu(707DOB{-+`kkH9)`5||Gz0ZYIgUw}ZPNN^cA2;2vb1uuh(k6`{kLtrNq zOW?Y<-=ZS8%;hMi3)mXW0ndPi+?8M{_!gALVVdeO*ud^!XK)-i23!v=0gr>bz?#`OTjNeX(BuX`hwbf2*e`rst}_Q)SSj( z1Y4XzMz9}P3XTM&NjOG>zThRWGgt|Z0Rzus)_{G_Vb*}D;5jfCd<>of%_mFJ-=Hs8 z|9j-0jQQULfiX}F2N!~=;0|yVcn&-QJ_fIY=2Nf(0)4>-=TQLI6dVI4flI(e;4W|< zcmX^Q8o=L*&}CDx-3J4~N-&oHw=EMcV3b0!7F-5y1NVUkz{{ZKBKi#M0@^2|A}|O% z0>*=H!DP_q68apB0CU0aU@@2omV*mH`)OEu!60zy56I8|bAknzQ2>|&W`pvNSO>s{ z;7za{_zGMKYNq2U28M%Yzyz=uOa%eDVKG^RHx(*x#N}pqI2zr6FuEKMm2Gov0 z;1mK&z}w(1@C|qY>{N{T4K4?5Q}DC`n}OEXu!4b!U<#NEt_B}~N5B@>VK^88z5)|K z=NULxfDxe04XmKx@EiR6k3cpQ8^Nbw0r(cY3y!*pKA#C!gTCNRurt{DCrnfD4{#Y6 zcMC2DbHHNoH?SP6^D|uj1qLS=1jd8$;7l+X%>G#mmm_c(id?V|ECvHgu=0VeK}{;A zCm0Sc2NS?sU@F+~7q}b@0`tLCummgwE5P4C%`9A2f#IO#ZR7`AgQ?&IEduKhI0EK_ zkHHeK-W?PG_60SwaiRgk!9p+*d=Ab9t?$Bf;IdyaTfj@;W6%hi&%tB;9y|vg2jjrV zQgj(O6I=~y&meFFfrv+NIk*{o58eem=ECB~=rhm}Oav3bx!_@NBX|`o0Hr6$4>kec zgRMc2d00uo2=F$T2>t`k1p|LW{&|@HeGw>t;wX3*?EX6}{}QKQ0|pydrwo>ZtNwuH zU_Q7SyagTsmp;W{1B<~|;FxEq7}GlZPmC3CI5-BheU7mLmV!q>%fFCMi@*^C-h)>_ zk2H+Va##%B1rxzH;9M}|Z&(a&0}H?c@Gf`@d=EOl!1S7rts58xMu16R0+!y z9snH@+fm6VE@Ha38bgqQq;BfE=SYX891}71Gd%Fk=l5Er(0}*(Pe+niZ ztOS!mjk(d74aS1G;OzfjUGD-`Rhb3+pR+gT95gS`Aj(AqL!(4QBeTW~8fw(2!D7q` z?a)|RV})gnIx5hRqlSozEHyMVG&L+R@|GHynwlCInid(DnVL4xXrrd^{np-x>i>Vf zkLS_fyVkqj`*pwja$pVI4V&OO81QfA2^bGw=5sV@umDbkYhfYW2P@%sunu15X>Gj# zZ-+rMIX&}awYDbUn1~_`&V>`3^zf)_Cx@Wz)LXvIwE+T z&I^-a9UKdH@?ywLSOZtXpWq(Yi8qc;!<(Uh9-WcT0VTk!cX6cQsDl&X(9R?bck%K_ z6>NbGFp|#?Ip#1tVI&+26JZhb!c{OEu7@SC8dkwhe45}S><<0%xz>cya0*P$XZ+8^ zF&4#Qm^tU_O8euqRA| zcf*NrEG&dC!b*4w)9EhZ|!2iKL&=p0M!wIm% zLOKbIg-c)xY=Gn8q@MH@)x%A2_6@DA_3(etzlhNiO^re8r8)Q-@;JBv&V=Wp8UJNC zuAtZtpX$Zcu-%l=d~d=U2N3*o^gd=)6iw8`GE8tjo9OlBHJBR>!;ZFD>JPF@~ek&Y~y)YVn3zOkBI2LyO zBjMoySPEwhrt0C3@EqK7C&M!9E!qf20`wcgxP}pMA{+z@;hS(1+zgMxI(P{lxr-zE`S2vHgnlbojP7RqN8?DtkqqC0DnuzDzVZ*wGbA0=GPRQ&+)!`xJscev?6MiC57 zWBl*LvE$*^)~j&$V+^ykoO-8Y0HfhnA{+<(i7*$&z!EqVZiVCEQ8*JmFq#a*XWGjD{)jB{&}D!94gDEQ5RD zemL=O%;_*;EE!x!N#S5P4W`4ja4M{U#qcuR3OheZ)4*QvD!dDZzsvYP{uB}5IQldJ z-s5y@90A}!SWgK@!gTyI;Z!&u7Q=G56&`@~@OyX_8qW|h;YY&3a5_wfd2lLR2J7J| zc=bKTf8gJ#!g2yWPaDCnUZU5+=!x`Ncn8dd=0&kpEi!ogQzG92{^H3u)k z0yy&@%<*v8B&J$8A2z|a;Ys4#4E-t?|DWQBCgNi-8TwDA4dHDt7Y>J|ung{mb+GPz z`h>EQb^M={1nz_3A8_df2g9)GWC%{6kLAJsud+Nt*S~1$PgynL_$(adID&|9KTLq9 zVH)(yrMJRJSO|+?C0q|Lz(X*IgqvXkY=vns7!XlUn zPr*WX0an6@Jemr|!V7Q#4Bx`MkVo4L#&H@&I&{yWm%>r77(NTP!ku&JG_ZXECI67l z2V>w^I24w_aj+iFgq`Lw5y3~{9+(YJ!|l+2E6XvAft|DF69JBaa2(tR3*bpu4yP=j zgAAOn}!dq|KohPJ%DOMeyDtR!cY@Ho#CJ;qA;DFa~DAp)l+2MI?+P z9nOT4;A;3UxCd6i)36Hqf5eOiW8m~9R5{FpneglzR5=VPrpnlE0-OSas<^QU z6X0%`R>k;lz%dbpV<{29FjxtbU>(ea7hnMls%D0R3DCWaD<+r#C&5Ix2tENf!RhcQ zTmmmazY>P|4*CL2hJ)bP9a(fD9JwgQ!&2A)_rNhLsB+i}13u=A_boab%!a8jA7;WD zSOA@+G#LzoHSlKG1P8)^oov@(JbWIe!hD#Sg`*rt0gPTr1aJtffump(6d16JWfjK5 z&tNM2<0@(nj)aA<7*@iBw`p_LL&t81w=)aFn24i5C z3g#CW4adVtFb~#MF#gMMTtTrP`mbk(g41CKrsjMY3)jFrcy}dL48Q(>jKb3!$S8by zBN^S#u-i(L!MQNt0K*ohARmO|;RTonJ8dIfn3sj42FK?xfdFCKsbYBl4kjY_3@nE4 zz^!oFZZZgy_Rus3>74th8F*knZ3@3QKxc-NYiLq9sFsNfw)>nWJ;Zq;4Emha6z)Wy zbpc1W&zS4$Xd{>kN5ScE5?lrs!BcP(9B`O6hR?%GFdufSVM_)F!3{^q2&{v-@B}P{ zabJ)i%!B7(1ME=C_)j=W71uJnU<%BK2;2t*{RE_==jQ2A+l!KWF?uR*xZy%5SM+n0<=j16Q6Q$8~hNvs59x z8K$AngAU{^FcO}IiEz{plpM~0xv&zJ!Y=37XdGsSh0$<791rVZu6mr4#+kg7e@WWS zGWxkj?YP$Jl{;q{H}I{{j9ErkbJC~RB&)^wk0@@C$%;E=v0}7r2F9BQWSPcVkNHZutUjd@l1CnlgV&_rc_YL<*krUG zkTG+N&|Z|n;hd71@}R>xDZul_`Hv$VVPPFS{`w0ek@!XPuTB={Q3LyB8_^h-4#VyKD{vNYeg(P$xeg+{0}=nB0yjQ!>=& zACjZUmF0@8J!368>Jfwa~c1oPYG1bl!($ zW+C}6mdPmjT-VY<;x3YHiqrBnFphlX>ti(U&(eJ%st)xUaj;|`HvC+tsgo-*dLem_ zL{HzBl7%D~S}&^>^5TDTy=p|3IjNLq z6k}wLVu@6!-$|)e{70ILDEbWHt=ArW-S>82Tsdxc`}9sMEHYVD@!#0FEEmJyjQHl7 zw4OA&yQ(mFQNC7#Ov`|--I)!JbYDbl)8tM?v5a0sx;ILWN)O6%MTt}^mPwaIf7>9l4x!tg&WEy@^V zF@oDg(oZ9U*!akuOG)=f$yiEegU>LynG0OGc-a)VsX{PcK5I|t(x6^XpOrgaH$scv z#QnFklE0QPkqG8=%=%Q)I}_Ebm>9HYd)2F`%`01_N+g}ur9`DSksiN=xT4lt>j8`ihvSLb0Ft?*SUkUM(@ zM_>l~ZaK}~mX*jAzN}dFk*HEBG3ml9UX>Ohz4;kZHWIVzYb$7a(ZtRh-92R?d^-}M zU$7bC*^f}Ifwvjm-AxD=?Sx$cp&Tzt-?vD&)~*6qDykFm94e;$IqGxw4^|zz%JDfU z2h=A{&cDS_N|P?7;FR21ie0z!GNzQlmoBfVc8jc2?TP>uEtDg3C8gS~QY!`0k|@O(Nm6W=3`I}L0cN*|7P+gG@+5|uey-9U z9Q#PM`j3=GMXos4fHH|%L#{rNVTw4Ju!i5am_g=#d7YYRSVJ|;=q|I{o1sN(DfgG+ zT5H@Gb&NMXIx+?Px)~Yz+h!y_ipvzae=T{qt;HH2q55L|?R*BF^wJbv+och96eWK_ z4y@%XdFj&Y9X_u2i~RK+axqt?DNe~s#Xvdm4gr(pyh=YxmojSls|blZ&$vk~BZIpm zWXvUmOcm-PWZ7p31uC5I3FRs@MaaQ-@Toy?w#Z?A9oE>|!?Jek7HyyHc17YoDtE3U z(Ni*d9n;%!$pL0dj~4l+kZP$~M~66vq%9~7Dyd(XFk0UwrAH%WNmr9O2*Df^*&=Ti zW0$C2V=@430?$N z*C*ej&aU`$CFo55s1|uVU(2FW5YjiA#|91DDN0Vg$7KIXl&=`&D5pf(8BbJUrcdyy zP!wfXf3^yxKA#d5Dxze{b<{(Z&u4oL)!(4P5!9h}zNEJShlIPd6D`C0w zlSDM8qi2hJr1k7o|Ep1wzYF7R1THXMtDs$?vCww$l*Mq1PK7rR_9KMbK3$5|vv{`e zDec!AJjywb)}$NATE)nH_RA(2v6VYQ||IcBHOScC5XnTFrm#D_cHbW!y-8 zVS5F)M5=I8oP-jOCpOOEcqGnl9#;y&Sb1h6S(t)OTiBh4?v*%eWV_37XT(`O%e5c( z3vvcq=DK#97?Crj?7 z=p+>yBB4L`=Iy{~INM8q)lS5DN#?0ts7z2zC7M1`tC~loSusmP>C{XJ-8PO;6sUC% zzV|=RmMRqUrB*RRniUHqa4RU2{)(kCLa|mRDBh5HTPfnlRxYGwDO<%&~M4UEo)3}=0DoxD|7Lgz>Lgh}6B zMp&=tfehhP-YEV3Qe%v=)*8L;O~(Hb$}zMSft6}>8DBU$r(w%R>!+m)#MS=(Ku?x$>bgSwxv z+(p$m$B3(%d{x@MiK;5M-ClK<+3sw0ueRMK>Mph2Rq8I0T^hyDs_H6Ns~PfdiED?^ zhh@0`4t)MCBX%%TQ8X>5YwGPB1;}Fc*=JRtXDgadeWmc|%W#{0f?MB+d)p4@(YNB( zsE1B7`fA);ZC2?B^L$oQaWBB5M?RBF`Nw4Dm~8%-`R9lb5U6h*7ncN$8(h|XU%c-4g-5!&UyD*!h+3w-Ym-`i0th#Vz z4%TbdW*W&gh+O|9>vl2E86$jiWgXrv>a76+chd>lkC5kEnV_tlTFWkdSFqPCY65iRgnaIf^@M>idU%#$=WfcB5`)`*H4%) zh7j4~x^fkuH2yR~C$?ZI`-G~ClMg;&3+n%nZQ*Vh!b9c{SVOYQT{;%);YHq!FWifV_^h8B+K>~J&jHe$qs1p`D4qdXfN3cw*}fusPRZtM*D}P z_g?Hm@v_#HlteD&+Jx~4y){rVja;&qoJPu;y|i4s9N0?@vkOyIXlK|p zh;lw6>pmqYBTmCimuAI$3EU5grN3g8j8K%x1jSC7r&uo)id|Bx_)MA=+a>S-I3)cQ z`(=b;w@gs%k$JXMq1Y+4idtz_d?bMf$wZAN#5V#C(#A(@cc!}QHNG$@z-=6PSmJay zQ*H^P>}_g|3Og);b@MaYqDjNOD;J5@xG>7zgofWsvp!-ke}i%V_*(#fhR)>A$U>wn z{fs#??h)C3#0c}lDn`CW!xs9Q;#KKhLtD&##A-wO&7XP5Kn41Z%Zu=$OvAuAR_!=0 zL^EEtsb-mctr#HJG=lbz`9^yDCBx4hIg~pIkI9f)2KK#@QH$N(lA{oEG}O}bMiE}OVMT{1=M(aqZ=@kg50wj4M_(%aNmTR-q~riHk4-)=FLImWm--QF!`B5;xRG8V=I>Glq@{Bu^e zDe2Owk*RYm_3(-u`fNU!*ve3RnqP-VZUq(8=InM;=@#T;}~BDr>Oo$@EE(4g&2&K3JloU)Y@o1OyPD* zmm}nPnrxM)0oA3)?ZM@8JfO2= z_b>3j^td(8coI=v!QUEh)+wMD&1sqT1vAr)Uc1jo)fd!buvc32qN+iK!Cq_iEINui z4tK0x>8LQ$CnTyc-L?|13Yk8iY!w#ygc1a^iga`uk}8#UBk6ul8q{#3SGL^Dh37FE zZc9akUq*o@~X)Nc~VXMGJGZ_D2?C@+4l`OuTqNvvI`5&TfaL- zrKV?C!_L!T1UDfFWX*Y;J^M2_hJ8s-sFDd^Vt!oaDgG-J3Kk{xdrB@Vs`)h-lwV2` zFx*ed6JN2KjgncaT_S5#yXk3b=i%P}AkTU{Z4d8rxZizRreALcOJqGs9+jKw$$Y1A z#?bL{TzjIv*7&aE94AbjEI&>RiLzI5PMTHulLUT)G)Zn(L`%ju zC~uY=B(wYls~JLEWh1#SE_>B$x10gyq)eYzhlh0%yQu-Md>IDJ<32CXc)X6<0;^X8 z6>><{G%$?L$^kW0KfTa!HDOpM9UF~$2yK=Z37BaszOZXP zgt)e1@~j+FulaKMTjs(Yc3+)SaYObr962HDPNoSnpZhI8;_b!OR3?-`5G4nZr%or};p%f65+ z#ogTwyAx+OJM2ky`og;X9%mEgGmpj{rRF`H;dZF8XoBrfx$107u@r&Na@Z;EMCj^^ z;w0|g8lZ=>mqaP7yt9n5QFAAIHP>?Lm=Ph_XXs`3TFFQWZX+?vnhm5%J%(vuej!8M zw^{C@vvj3iq^V1=L?ZEXB$iR4`gF%fPd&t|J_Bu^Y}`h4mYmh;vP6X=S#n&@)vDC$ zs_Z(;-ff&TpCzN?B=85O(1aX&f0OzH=8-w}6$!;(g@DA*Q$cQ(G0nEd0gcPJ>>xYW;i;X zB3(`B;$+@=x^BQ&o{7oTj72#4`IPfU*P=~KX{o3$%X8;Rqo-&Yx$_9N3xoqX^km2|y0 z|3hy)iE$rw>b^NjF+h?Ov67(}DmjWPvRrXNsufMrs5mFiCSr<}zD?w(_e^^jxl^BJ zvp!Rv?{0?qk?Y zduGeBEA-0L3)++Oe0@Aqr5jcHwH^vk8C~+ECEASe6#tz^Qf==L&sK!{RM0t~9^u|R ztEan4$LV%BpW|kKn|J2VjEdg*n$ysB99ueKs1klK>Syxdo-6x) zHf}bT&GjW0@IR7UBwhYT4bGNZ|3@qDm}~E3(x2zyEuWodD#AV$^f0s-p-u(84A_dW zLyi%FxdWZ9h@PwHwj)?q_w4!ojjeO7nsX<2PjHtYxC>-E z7Dk5xt;q=b&$UbBep!K4i|*J=9;hkMN{sNN;{N+QUtTg19+5eh8A(Iu$#xpnRgP+~ z96%K{ZeB|(SB1YV71MrOD)bH1+0yX}r6?da=JPJ?IKp%srDlud{wqd5Gi|;vmFx+6 z+kPpw)Z8`@mA9a!HSqT_r`Rz^qtlmer^&S|bU>q!81w`n@fX^&b%C#Sy($IZr>V-+ zUvw*9C^LRB;*7dN8A3Bkjhe(PwChWnRO;C#1ze>kgfEoftJLWqRZFu-Dq8bqBx|pc zsWu}Q+Vg9H3U~X2apQ@O~=a0xvO;0IJtP$=x3Z;XwS!q*Rc4pEfudy^=+ZE zRXT#Coj^)dI)r2$WmF*wdEU1M(EFCANGuPTwaCg$6hd2&eF&S4SC zvMp)!{_BL$LoEOgAH7^;#?u;)oQzRYz1}F7Z|N#UCp>tU*URlk)Gmk>v@sn zx3c?SJF1qkQmYs(&5DN?2AWKy3;Xl`z=b3D|G|Y5_2XYmG*~q234<-c>Pg#37IO*Z!;`V!|bK9gbOe!SFa;@S-qqNiKC0dE)u^% zF1pC{90_rg>GP7L@X9l8{MN`Ux7o)W^+8)WH?gF(NlhxHwn+gVq?9%(9*NcQR*%`k zT-K({RFfsP#IIU=On**i7JAG+&c8^t$L#0)qckHK9ac+(zj?C}v{r`uo4uXGWrDwX z8y#(pVz@N=lec@t*$&(-QSHnd%m*ud!_>>YUn8Z`9(36%46+2@p-l-ImdlldF`ljb z^^nnD1-%S*oy*p{NVVrko1<+AOg>nf<#AYfn2RW4eu5Zan@E$}Cje6J67u zYWqq9_HZ7MX2nhkyw1GQ=(fS$01bYXE36H6Hr?q6K^yemT7==*AWM|t8)OSKJGU9t zW7KYg9*0LbTP36eaq{FFF#hv_ZXiNke&qI|OzuG1lVmwC0yavgRx+nA)%KP%Y8Ok@MQ?cH(O^e?)|v0-(pQ2o^!ZE zw-B5u)!ktR17VAGT;Yzzov_Jn5N~H1WVAffnM`kyS&9>~rZW}soz!-wFRkL&=D@qs zKLEdeGD0y*CMZ6Xd5U#Xp?Fhj6?3FnQ7nOh;2r6&SSBMB4KhK&?~5xoNQI(FY83;e zIgn&eO33x*4N0SS@-D)z*31)ye>(K z*CYcNp}XYOAhWkoy4z|_SJ~@&1h!W#K9n;-)Z^O{(go>jxxEX8eOWSqnfaMLF}U;c z*mZqooz%JXo#Sz`w+oZXBsotYb2?_)n_K~N^n$f-FcD3W`-8FI!75U}a zyw#P=>_f*w8{*!IuBJvF;9j)59{1o{xzd$km{@B~9`5kDj1bGsec^7VztOE$9_?oK zG{)3gGGUPxiSaIY=6v-U23|M5x-;hIbxFvk;m+-ta0H*nmJBIfkNL1sruhT>7lQH+)4iZN2HctIK!&x$kB@{6*Oq z75gQyrzQ1QRLO{*q!VylUg^m~{gf5Ny9$X! zFjo zjFZ$;cG)ELCej#!)I(>KOqKr9=2w7Z3^`>j2~v*0b-)KV5m%8MzKKe%_8GdamhcXf zgxrkRNx2=Ek>A_XmnVHWb&g+-$a(T9#cLo)g>-CUMgeXJDLC`QQMJ~UEl6LISm`_&cP=t6j$$UNb1(U|I^mz$}v z46jG!kywgfDbr#J{D3S4=0E=9TlaTjFVd)9ABnRsiS3n}`XcR;Vc?PP`5?<7lk55! zU4Pqa49_$F#r$i;MH>H%a~R9$#L@KXXbLim53=lZVn6M7_Cx<=nj4)~S690f?0QKx ziQV)epHn%g<}dyK%&Tp4JsrMK%JV%E7-#l~x{t4@tT52Ez1mWQx(+TC0(N6Z~5U@?v}%7dbu7kuK$NW{_Fu*J?kc+7L$Z>3RjP@K2WhCg_C9gFt*wGEB` z{Ms}2uhO5BPr8K*jHb@=>@BQbi)0R=SZdb+bAGU$TUX6mj)~;_EeytU==3RLPtZGD zUHb%A0)oGcNFeMnnV^V~d5U&Yp@^5-1oO`!qq?@XYKLn33&Igprf-?WHP7QXYkuy$;@np;j$HmKNt1uHv&?i0j>esPc4>@51TInMefspe(P z!*-75R@vOxiH^+QLm%3F@)MimKDT+~3!BIFXPWu@Jj^at(EyvHhS~ITJMs5_*~4zI z#IrA1$a17jw7s{mRsH?nBA;QJPoM9jKYPaC|CRgf^qYkGH`~V@K0Ch=zprjS2Qb{u zz`>nrokbV296Y__qu(y|V3qZ8h>zQSynDCpKg!3oJ|6LL(4%&Odwe|YW65K-zA)Y9 zVkHxW<4vE!j+Xn}!*1Yr3wn*n{)=sh+~#F7_5ZF<^y$?|EiU=O+17ghympw`^#pME zz&EfY$qwuBMKMU0-)H`X-CnbXO_snE^Jz2DF5~t0`qCfi<5Tx-oSk9@oASSV&7m9p zQ_XUNkeeSQxtMNtgl!C$%c|Bd&Ffzq=gaL6nf=-w9b~JI%7ll^+u9Af!xjfg1>&!H zY|HB;xvYWOYNMO-WpWx;1>6AFzXGXHs}i5s#y91%TD8?=qV)eO8Swfl z)+-ZKOn%(1wPdMKapp{0oGHzS?Jp&mRtlFAWWY#sV7r<>+cjMy6Goc1$?1`1pllvV kB7=t79)qMAk9O3m6^=9?CTDF8l$~Nnm%VZF!!*JF0T{HI-v9sr