From f56367b9b37355c1ba4d51a886b7389d92ef9587 Mon Sep 17 00:00:00 2001 From: zouhaitao Date: Thu, 28 May 2026 13:03:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20DI=E6=8A=A5=E8=AD=A6=E6=94=B9=E4=B8=BAM?= =?UTF-8?q?odbus=20RTU=E6=8A=A5=E8=AD=A6=E4=B8=8A=E6=8A=A5=EF=BC=8C?= =?UTF-8?q?=E5=BF=83=E8=B7=B3=E5=8C=85IO=E4=BD=8D=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E4=B8=BARTU=E6=8A=A5=E8=AD=A6=E7=8A=B6=E6=80=81=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=A6=E7=BB=86=E4=B8=AD=E6=96=87=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Core/Inc/modbus_rtu_master.h | 109 +++++++++++++++++ Core/Src/main.c | 42 +++---- Core/Src/modbus_rtu_master.c | 211 ++++++++++++++++++++++++++++++-- Modbus_RTU报文 | 99 --------------- docs/Modbus_RTU原始数据来源.pdf | Bin 0 -> 176834 bytes docs/Modbus_RTU报文 | 209 +++++++++++++++++++++++++++++++ docs/报文.md | 67 +++++----- 7 files changed, 567 insertions(+), 170 deletions(-) delete mode 100644 Modbus_RTU报文 create mode 100644 docs/Modbus_RTU原始数据来源.pdf create mode 100644 docs/Modbus_RTU报文 diff --git a/Core/Inc/modbus_rtu_master.h b/Core/Inc/modbus_rtu_master.h index 669724f..50035c4 100644 --- a/Core/Inc/modbus_rtu_master.h +++ b/Core/Inc/modbus_rtu_master.h @@ -1,3 +1,20 @@ +/** + ****************************************************************************** + * @file modbus_rtu_master.h + * @brief Modbus RTU Master 模块头文件 + * @note 本模块通过 RS485 (UART3) 以 Modbus RTU 协议轮询 Noris AMS 从站设备, + * 读取寄存器 41161 (偏移地址 1160) 中的报警状态, + * 提取 Bit4-7 (火灾/水密门/舱底水/气体检测) 映射为紧凑报警字节。 + * + * 报警状态供 main.c 中的两种上报机制使用: + * 1. 变化通知 (Type 0x10): 报警状态变化时,通过 PROTO_TYPE_IO 上报, + * 格式与原 DI 变化通知完全一致,上位机代码无需修改。 + * 2. 心跳包 (Type 0xAA): 每 30 秒定时上报当前报警状态。 + * + * @version 1.1 + ****************************************************************************** + */ + #ifndef __MODBUS_RTU_MASTER_H #define __MODBUS_RTU_MASTER_H @@ -7,24 +24,116 @@ extern "C" { #include "stm32f1xx_hal.h" +/* ================================================================ + * Modbus RTU 通信参数配置 + * 修改以下宏定义可适配不同的从站设备和通信需求 + * ================================================================ */ + +/** 从站设备地址 (Noris AMS 默认地址 = 1) */ #define MODBUS_RTU_SLAVE_ADDR 1 + +/** 目标寄存器偏移地址 (1160 对应 Noris 协议中的寄存器 41161) */ #define MODBUS_RTU_TARGET_REG 1160 + +/** 单次读取的寄存器数量 (当前只读取 1 个报警寄存器) */ #define MODBUS_RTU_REG_QTY 1 + +/** 轮询间隔 (毫秒),每隔此时间发送一次 Read Holding Registers 请求 */ #define MODBUS_RTU_POLL_INTERVAL 1000 + +/** 响应超时 (毫秒),发送请求后等待从站响应的最长时间,超时则丢弃本次轮询 */ #define MODBUS_RTU_RESP_TIMEOUT 500 + +/** 帧内字符间隔超时 (毫秒),接收过程中两个相邻字节的最大间隔时间, + * 超过此时间认为一帧数据接收完成 */ #define MODBUS_RTU_INTER_CHAR_TIMEOUT 10 + +/** 发送回波屏蔽时间 (毫秒),UART3 发送后屏蔽自身回波的时间窗口, + * 防止将自身发送的数据误判为从站响应 */ #define MODBUS_RTU_TX_ECHO_MARGIN 10 +/* ================================================================ + * Noris AMS 报警位提取宏 + * 从 16 位寄存器值中提取各个报警标志位 + * + * 寄存器 41161 的位布局: + * Bit4: 火灾综合报警 (Fire) + * Bit5: 水密门综合报警 (Door) + * Bit6: 舱底水综合报警 (Bilge) + * Bit7: 气体检测综合报警 (Gas) + * + * 提取后映射到紧凑报警字节: + * Bit0 ← Bit4 (火灾) + * Bit1 ← Bit5 (水密门) + * Bit2 ← Bit6 (舱底水) + * Bit3 ← Bit7 (气体检测) + * ================================================================ */ + +/** 提取火灾综合报警 (寄存器 Bit4) */ #define NORIS_FIRE_ALARM(reg) (((reg) >> 4) & 0x01) + +/** 提取水密门综合报警 (寄存器 Bit5) */ #define NORIS_DOOR_ALARM(reg) (((reg) >> 5) & 0x01) + +/** 提取舱底水综合报警 (寄存器 Bit6) */ #define NORIS_BILGE_ALARM(reg) (((reg) >> 6) & 0x01) + +/** 提取气体检测综合报警 (寄存器 Bit7) */ #define NORIS_GAS_ALARM(reg) (((reg) >> 7) & 0x01) +/* ================================================================ + * 接收缓冲区配置 + * ================================================================ */ + +/** Modbus RTU 接收缓冲区最大长度 (字节), + * 正常响应帧为 7 字节,64 字节足够容纳各种响应 */ #define MODBUS_RTU_MAX_RX_BUF 64 +/* ================================================================ + * 公共函数接口 + * ================================================================ */ + +/** + * @brief Modbus RTU Master 模块初始化 + * @note 在系统启动时调用,将状态机重置为 IDLE 状态, + * 清空接收缓冲区和报警状态变量 + * @retval 无 + */ void ModbusRTU_Master_Init(void); + +/** + * @brief Modbus RTU Master 主任务函数 + * @note 在主循环中周期性调用,实现状态机驱动的轮询逻辑: + * IDLE → WAIT_POLL → WAIT_RESPONSE → PROCESS → IDLE + * + * 状态说明: + * - IDLE: 等待轮询间隔到达 (1000ms) + * - WAIT_POLL: 发送 Modbus RTU 请求帧 + * - WAIT_RESPONSE: 等待从站响应或超时 + * - PROCESS: 解析响应帧,提取寄存器值和报警位 + * + * @retval 无 + */ void ModbusRTU_Master_Task(void); + +/** + * @brief 向 Modbus RTU 接收缓冲区送入一个字节 + * @note 在 UART3 接收中断回调中调用 (HAL_UART_RxCpltCallback), + * 仅在 WAIT_RESPONSE 状态且不在回波屏蔽期内才接收数据 + * @param byte: 从 UART3 接收到的原始字节 + * @retval 无 + */ void ModbusRTU_FeedRxByte(uint8_t byte); + +/** + * @brief 获取当前 Modbus RTU 报警状态 + * @note 返回紧凑报警字节,位定义如下: + * Bit0: 火灾报警 + * Bit1: 水密门报警 + * Bit2: 舱底水报警 + * Bit3: 气体检测报警 + * @retval 报警状态字节 (uint8_t) + */ uint8_t ModbusRTU_GetAlarmState(void); #ifdef __cplusplus diff --git a/Core/Src/main.c b/Core/Src/main.c index e34123b..416f9c1 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -92,7 +92,7 @@ static volatile uint32_t u1_last_rx_time = 0; /* === 协议处理全局变量 === */ static uint16_t g_hb_seq = 0; /* 心跳序列号 */ static uint32_t g_last_hb_tick = 0; /* 上次心跳时间 */ -static uint8_t g_last_io_state = 0xFF; /* 上次记录的 IO 状态,用于变化检测 */ +static uint8_t g_last_alarm_state = 0xFF; /* 上次 Modbus RTU 报警状态,用于变化检测 */ /* === W5500 外部变量声明 === */ #if USE_W5500 @@ -169,7 +169,9 @@ uint8_t IO_Get_Current_State(void) /* W5500 variables */ #if USE_W5500 #define SOCKET_ID 0 +#ifndef ETHERNET_BUF_MAX_SIZE #define ETHERNET_BUF_MAX_SIZE 2048 +#endif static uint8_t ethernet_buf[ETHERNET_BUF_MAX_SIZE] = {0}; static uint16_t local_port = 8000; #endif @@ -356,16 +358,17 @@ int main(void) ModbusRTU_Master_Task(); #endif - // (B) I/O 状态监控与变化上报 (Type 0x10) - #if USE_IO_MONITOR - IO_Monitor_Task(); // 执行去抖扫描 - uint8_t current_io = IO_Monitor_GetAllStates(); - if (current_io != g_last_io_state) { - if (g_last_io_state == 0xFF) { - g_last_io_state = current_io; - } else { - g_last_io_state = current_io; - RF433_SendPacket(PROTO_TYPE_IO, ¤t_io, 1); + // (B) Modbus RTU 报警状态变化上报 (Type 0x10,与原 DI 格式兼容) + #if USE_RS485 + { + uint8_t alarm_state = ModbusRTU_GetAlarmState(); + if (alarm_state != g_last_alarm_state) { + if (g_last_alarm_state != 0xFF) { + g_last_alarm_state = alarm_state; + RF433_SendPacket(PROTO_TYPE_IO, &alarm_state, 1); + } else { + g_last_alarm_state = alarm_state; + } } } #endif @@ -373,19 +376,9 @@ int main(void) #if HEARTBEAT_PACKET // (C) 30秒系统心跳包 (Type 0xAA) - #if USE_IO_MONITOR if (HAL_GetTick() - g_last_hb_tick >= 30000) { g_last_hb_tick = HAL_GetTick(); - uint8_t hb_payload[8]; - uint8_t io_state = IO_Monitor_GetAllStates(); - - #if USE_W5500 - uint8_t phy_link_status; - ctlwizchip(CW_GET_PHYLINK, (void *)&phy_link_status); - if (phy_link_status == PHY_LINK_ON) { - io_state |= 0x80; - } - #endif + uint8_t hb_payload[7]; hb_payload[0] = (uint8_t)(g_hb_seq >> 8); hb_payload[1] = (uint8_t)(g_hb_seq & 0xFF); @@ -393,7 +386,7 @@ int main(void) hb_payload[2] = (uint8_t)(XTELL_FIRMWARE_CODE >> 8); hb_payload[3] = (uint8_t)(XTELL_FIRMWARE_CODE & 0xFF); - hb_payload[4] = io_state; + hb_payload[4] = ModbusRTU_GetAlarmState(); uint16_t modbus_val = 0xFFFF; #if USE_W5500 @@ -401,7 +394,6 @@ int main(void) #endif hb_payload[5] = (uint8_t)(modbus_val >> 8); hb_payload[6] = (uint8_t)(modbus_val & 0xFF); - hb_payload[7] = ModbusRTU_GetAlarmState(); g_hb_seq++; @@ -409,8 +401,6 @@ int main(void) } #endif - #endif - #if USE_W5500 ModbusTCP_Client_Task(); diff --git a/Core/Src/modbus_rtu_master.c b/Core/Src/modbus_rtu_master.c index d73a166..0450580 100644 --- a/Core/Src/modbus_rtu_master.c +++ b/Core/Src/modbus_rtu_master.c @@ -1,8 +1,34 @@ +/** + ****************************************************************************** + * @file modbus_rtu_master.c + * @brief Modbus RTU Master 模块实现 + * @note 本模块通过 RS485 (UART3) 以 Modbus RTU 协议轮询 Noris AMS 从站, + * 读取寄存器 41161 中的报警状态位,并提取为紧凑报警字节。 + * + * 工作原理: + * 1. 每 1000ms 发送一次 Read Holding Registers (FC=0x03) 请求 + * 2. 等待从站响应,支持帧内字符超时检测和响应总超时 + * 3. 解析响应帧并进行 CRC16 校验 + * 4. 从寄存器值中提取 Bit4-7 的报警位,映射为紧凑报警字节 + * 5. 报警状态由 main.c 负责上报 (变化通知 + 心跳包) + * + * 状态机流转: + * IDLE → WAIT_POLL → WAIT_RESPONSE → PROCESS → IDLE + * + * @version 1.1 + ****************************************************************************** + */ + #include "modbus_rtu_master.h" #include "usart.h" #include "main.h" #include +/* ================================================================ + * CRC16-Modbus 查找表 (256 项) + * 多项式: 0xA001 (反转形式),初始值: 0xFFFF + * 用于 Modbus RTU 帧的 CRC 校验计算,采用查表法加速运算 + * ================================================================ */ static const uint16_t crc16_table[256] = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, @@ -38,6 +64,18 @@ static const uint16_t crc16_table[256] = { 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 }; +/* ================================================================ + * 状态机枚举定义 + * Modbus RTU Master 使用四状态状态机驱动轮询过程 + * ================================================================ */ + +/** + * @brief Modbus RTU 轮询状态机状态枚举 + * - MB_STATE_IDLE: 空闲状态,等待轮询间隔到达 + * - MB_STATE_WAIT_POLL: 准备发送,立即发送请求帧 + * - MB_STATE_WAIT_RESPONSE: 已发送请求,等待从站响应 + * - MB_STATE_PROCESS: 帧接收完成,解析响应数据 + */ typedef enum { MB_STATE_IDLE, MB_STATE_WAIT_POLL, @@ -45,19 +83,52 @@ typedef enum { MB_STATE_PROCESS } mb_state_t; +/* ================================================================ + * 模块内部静态变量 + * ================================================================ */ + +/** 当前状态机状态 */ static mb_state_t mb_state = MB_STATE_IDLE; + +/** 当前状态的进入时刻 (用于超时判断) */ static uint32_t mb_state_tick = 0; + +/** 上一次轮询的时刻 (用于计算轮询间隔) */ static uint32_t mb_last_poll_tick = 0; + +/** 回波屏蔽截止时间 (发送后忽略自身回波的时间点) */ static uint32_t ignore_echo_until = 0; +/** 接收缓冲区: 存储从站响应的原始字节 */ static uint8_t mb_rx_buf[MODBUS_RTU_MAX_RX_BUF]; + +/** 接收缓冲区当前写入索引 */ static uint8_t mb_rx_idx = 0; + +/** 最后一次接收到字节的时刻 (用于帧间超时判断) */ static uint32_t mb_rx_last_byte_tick = 0; +/** 当前报警状态字节 (紧凑格式,Bit0-3 对应 4 种报警) */ static uint8_t mb_alarm_state = 0; + +/** 上一次报警状态 (用于变化检测,初始值 0xFF 表示首次轮询) */ static uint8_t mb_alarm_last = 0xFF; + +/** 最近一次成功读取的寄存器原始值 (16-bit,大端序解析) */ static uint16_t mb_reg_val = 0; +/* ================================================================ + * 内部静态函数实现 + * ================================================================ */ + +/** + * @brief 计算 Modbus CRC16 校验值 + * @note 采用查表法,多项式 0xA001,初始值 0xFFFF + * CRC16-Modbus 算法: 低字节在前 (Little-Endian) + * @param data: 待计算的数据缓冲区指针 + * @param len: 数据长度 (字节) + * @retval CRC16 校验值 + */ static uint16_t modbus_crc16(const uint8_t *data, uint16_t len) { uint16_t crc = 0xFFFF; @@ -67,6 +138,16 @@ static uint16_t modbus_crc16(const uint8_t *data, uint16_t len) return crc; } +/** + * @brief 从 16 位寄存器值中提取报警位,映射为紧凑报警字节 + * @note 映射关系: + * 寄存器 Bit4 → 报警字节 Bit0 (火灾) + * 寄存器 Bit5 → 报警字节 Bit1 (水密门) + * 寄存器 Bit6 → 报警字节 Bit2 (舱底水) + * 寄存器 Bit7 → 报警字节 Bit3 (气体检测) + * @param reg: 16 位寄存器原始值 + * @retval 紧凑报警字节 (Bit0-3 有效) + */ static uint8_t extract_alarm_bits(uint16_t reg) { uint8_t alarm = 0; @@ -77,47 +158,92 @@ static uint8_t extract_alarm_bits(uint16_t reg) return alarm; } +/** + * @brief 构造并发送 Modbus RTU Read Holding Registers 请求帧 + * @note 帧格式: [从站地址][FC=0x03][起始地址H][起始地址L][数量H][数量L][CRC_L][CRC_H] + * 发送完成后设置回波屏蔽窗口,并清空接收缓冲区 + * @retval 无 + */ static void send_modbus_request(void) { uint8_t tx[8]; - tx[0] = MODBUS_RTU_SLAVE_ADDR; - tx[1] = 0x03; - tx[2] = (uint8_t)(MODBUS_RTU_TARGET_REG >> 8); - tx[3] = (uint8_t)(MODBUS_RTU_TARGET_REG & 0xFF); - tx[4] = (uint8_t)(MODBUS_RTU_REG_QTY >> 8); - tx[5] = (uint8_t)(MODBUS_RTU_REG_QTY & 0xFF); - uint16_t crc = modbus_crc16(tx, 6); - tx[6] = (uint8_t)(crc & 0xFF); - tx[7] = (uint8_t)(crc >> 8); + /* 构造请求帧 PDU */ + tx[0] = MODBUS_RTU_SLAVE_ADDR; /* 从站地址 */ + tx[1] = 0x03; /* 功能码: Read Holding Registers */ + tx[2] = (uint8_t)(MODBUS_RTU_TARGET_REG >> 8); /* 寄存器起始地址高字节 */ + tx[3] = (uint8_t)(MODBUS_RTU_TARGET_REG & 0xFF); /* 寄存器起始地址低字节 */ + tx[4] = (uint8_t)(MODBUS_RTU_REG_QTY >> 8); /* 读取数量高字节 */ + tx[5] = (uint8_t)(MODBUS_RTU_REG_QTY & 0xFF); /* 读取数量低字节 */ + + /* 计算并附加 CRC16 (低字节在前) */ + uint16_t crc = modbus_crc16(tx, 6); + tx[6] = (uint8_t)(crc & 0xFF); /* CRC 低字节 */ + tx[7] = (uint8_t)(crc >> 8); /* CRC 高字节 */ + + /* 设置回波屏蔽窗口: 发送后 MODBUS_RTU_TX_ECHO_MARGIN 毫秒内忽略接收数据 */ ignore_echo_until = HAL_GetTick() + MODBUS_RTU_TX_ECHO_MARGIN; + + /* 清空接收缓冲区,准备接收新响应 */ mb_rx_idx = 0; + /* 通过 UART3 (RS485) 阻塞发送请求帧 */ HAL_UART_Transmit(&huart3, tx, 8, HAL_MAX_DELAY); } +/** + * @brief 解析 Modbus RTU 响应帧 + * @note 校验流程: + * 1. 最小帧长度检查 (≥5 字节: 地址 + FC + 字节数 + CRC×2) + * 2. 从站地址匹配检查 + * 3. 功能码检查 (FC=0x03 为正常响应,FC=0x83 为异常响应,静默丢弃) + * 4. 数据字节数与期望值匹配检查 + * 5. 实际帧长度与期望长度匹配检查 + * 6. CRC16 校验 + * 7. 提取寄存器值 (大端序) + * @retval true: 解析成功,mb_reg_val 已更新 + * false: 解析失败 (帧不完整/地址不匹配/CRC错误等) + */ static bool parse_modbus_response(void) { + /* 检查最小帧长度: 地址(1) + FC(1) + 字节数(1) + CRC(2) = 5 */ if (mb_rx_idx < 5) return false; + /* 检查从站地址是否匹配 */ if (mb_rx_buf[0] != MODBUS_RTU_SLAVE_ADDR) return false; + + /* 检查功能码是否为 0x03 (正常响应); 0x83 为异常响应,静默丢弃 */ if (mb_rx_buf[1] != 0x03) return false; + /* 检查数据字节数是否与期望值匹配 (寄存器数量 × 2) */ uint8_t byte_count = mb_rx_buf[2]; if (byte_count != (MODBUS_RTU_REG_QTY * 2)) return false; + /* 计算期望帧总长度: 地址(1) + FC(1) + 字节数(1) + 数据 + CRC(2) */ uint16_t expected_len = 3 + byte_count + 2; if (mb_rx_idx < expected_len) return false; + /* 提取并验证 CRC16 (低字节在前) */ uint16_t crc_received = (uint16_t)mb_rx_buf[expected_len - 2] | ((uint16_t)mb_rx_buf[expected_len - 1] << 8); uint16_t crc_calc = modbus_crc16(mb_rx_buf, expected_len - 2); if (crc_received != crc_calc) return false; + /* 提取寄存器值 (大端序: 高字节在前) */ mb_reg_val = ((uint16_t)mb_rx_buf[3] << 8) | mb_rx_buf[4]; return true; } +/* ================================================================ + * 公共函数实现 + * ================================================================ */ + +/** + * @brief Modbus RTU Master 模块初始化 + * @note 将状态机重置为 IDLE 状态,清空所有缓冲区和状态变量。 + * mb_alarm_last 初始化为 0xFF,使得首次轮询结果不会触发变化通知 + * (main.c 中通过 g_last_alarm_state == 0xFF 判断跳过首次上报) + */ void ModbusRTU_Master_Init(void) { mb_state = MB_STATE_IDLE; @@ -130,9 +256,32 @@ void ModbusRTU_Master_Init(void) ignore_echo_until = 0; } +/** + * @brief Modbus RTU Master 主任务函数 + * @note 在主循环中周期性调用,驱动四状态轮询状态机: + * + * IDLE: 等待轮询间隔 (MODBUS_RTU_POLL_INTERVAL = 1000ms) + * 间隔到达后切换到 WAIT_POLL + * + * WAIT_POLL: 立即发送 Modbus RTU 请求帧 + * 发送完成后切换到 WAIT_RESPONSE + * + * WAIT_RESPONSE: 等待从站响应 + * - 帧内字符超时到达 → 切换到 PROCESS 解析 + * - 响应总超时到达 → 丢弃本次,回到 IDLE + * + * PROCESS: 解析响应帧 + * - 解析成功 → 更新 mb_alarm_state + * - 解析失败 → 静默丢弃 + * 处理完成后回到 IDLE + * + * 报警变化上报由 main.c 负责,本模块仅更新 mb_alarm_state + */ void ModbusRTU_Master_Task(void) { switch (mb_state) { + + /* ---- 空闲状态: 等待轮询间隔到达 ---- */ case MB_STATE_IDLE: if ((int32_t)(HAL_GetTick() - mb_last_poll_tick) >= MODBUS_RTU_POLL_INTERVAL) { mb_last_poll_tick = HAL_GetTick(); @@ -141,54 +290,90 @@ void ModbusRTU_Master_Task(void) } break; + /* ---- 准备发送状态: 构造并发送请求帧 ---- */ case MB_STATE_WAIT_POLL: send_modbus_request(); mb_state = MB_STATE_WAIT_RESPONSE; mb_state_tick = HAL_GetTick(); break; + /* ---- 等待响应状态: 等待从站响应或超时 ---- */ case MB_STATE_WAIT_RESPONSE: + /* 帧内字符超时: 已接收数据且最后一个字节之后超过间隔时间, + * 认为一帧数据接收完成 */ if (mb_rx_idx > 0 && (int32_t)(HAL_GetTick() - mb_rx_last_byte_tick) > MODBUS_RTU_INTER_CHAR_TIMEOUT) { mb_state = MB_STATE_PROCESS; break; } + /* 响应总超时: 自发送请求后超过 MODBUS_RTU_RESP_TIMEOUT 仍未收到完整帧, + * 丢弃本次轮询,回到 IDLE 等待下次 */ if ((int32_t)(HAL_GetTick() - mb_state_tick) > MODBUS_RTU_RESP_TIMEOUT) { mb_state = MB_STATE_IDLE; } break; + /* ---- 处理状态: 解析响应帧,更新报警状态 ---- */ case MB_STATE_PROCESS: if (parse_modbus_response()) { + /* 解析成功: 从寄存器值提取报警位 */ mb_alarm_state = extract_alarm_bits(mb_reg_val); if (mb_alarm_state != mb_alarm_last) { - if (mb_alarm_last != 0xFF) { - extern void RF433_SendPacket(uint8_t type, const uint8_t *payload, uint8_t len); - RF433_SendPacket(PROTO_TYPE_MODBUS_RTU, &mb_alarm_state, 1); - } + /* 报警状态发生变化,更新记录值 */ mb_alarm_last = mb_alarm_state; } } + /* 无论解析成功与否,回到 IDLE 等待下一次轮询 */ mb_state = MB_STATE_IDLE; break; + /* ---- 异常兜底: 未知状态强制回到 IDLE ---- */ default: mb_state = MB_STATE_IDLE; break; } } +/** + * @brief 向 Modbus RTU 接收缓冲区送入一个字节 + * @note 在 UART3 接收中断回调中调用 (HAL_UART_RxCpltCallback → huart3 分支) + * + * 数据过滤逻辑: + * 1. 回波屏蔽: 发送请求后 MODBUS_RTU_TX_ECHO_MARGIN 毫秒内的数据全部丢弃, + * 避免将自身发送的请求帧回波误判为从站响应 + * 2. 状态过滤: 仅在 WAIT_RESPONSE 状态下接收数据, + * 其他状态收到的数据直接丢弃 + * 3. 缓冲区溢出保护: 接收索引超过缓冲区大小时停止写入 + * + * @param byte: 从 UART3 接收到的原始字节 + * @retval 无 + */ void ModbusRTU_FeedRxByte(uint8_t byte) { + /* 屏蔽发送回波 */ if (HAL_GetTick() < ignore_echo_until) return; + /* 仅在等待响应状态下接收 */ if (mb_state != MB_STATE_WAIT_RESPONSE) return; + /* 缓冲区溢出保护 */ if (mb_rx_idx >= MODBUS_RTU_MAX_RX_BUF) return; + /* 存入缓冲区并更新时间戳 */ mb_rx_buf[mb_rx_idx++] = byte; mb_rx_last_byte_tick = HAL_GetTick(); } +/** + * @brief 获取当前 Modbus RTU 报警状态 + * @note 供 main.c 中的以下场景调用: + * 1. 变化通知: 与上次状态比较,变化时通过 PROTO_TYPE_IO (0x10) 上报 + * 2. 心跳包: 每 30 秒将当前报警状态填入心跳 payload + * @retval 紧凑报警字节: + * Bit0 = 火灾报警 (对应寄存器 Bit4) + * Bit1 = 水密门报警 (对应寄存器 Bit5) + * Bit2 = 舱底水报警 (对应寄存器 Bit6) + * Bit3 = 气体检测报警 (对应寄存器 Bit7) + */ uint8_t ModbusRTU_GetAlarmState(void) { return mb_alarm_state; diff --git a/Modbus_RTU报文 b/Modbus_RTU报文 deleted file mode 100644 index 380a1ea..0000000 --- a/Modbus_RTU报文 +++ /dev/null @@ -1,99 +0,0 @@ -Modbus RTU 报文说明 -1. 请求帧(MCU → Noris AMS) -发送示例:01 03 04 88 00 01 C5 D3 -字节偏移 值 含义 -0 01 从站地址 = 1 -1 03 功能码 = Read Holding Registers -2-3 04 88 寄存器起始地址 = 0x0488 = 1160(对应 Noris 41161) -4-5 00 01 读取数量 = 1 个寄存器 -6-7 C5 D3 CRC16-Modbus 校验(低字节在前) -帧长度:8 字节 -发送间隔:每 1000ms 发送一次 -发送方式:HAL_UART_Transmit() 阻塞发送,@19200bps 约 4.2ms -2. 正常响应帧(Noris AMS → MCU) -示例:01 03 02 00 F0 B8 47 -字节偏移 值 含义 -0 01 从站地址 = 1 -1 03 功能码 = 03(正常响应) -2 02 数据字节数 = 2(1个寄存器×2字节) -3-4 00 F0 寄存器值 = 0x00F0(大端序) -5-6 B8 47 CRC16-Modbus 校验 -帧长度:7 字节 -3. 寄存器值 → 报警映射 -寄存器 41161 值为 0x00F0 时(Bit4-7 全为 1): -Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 - ↑ ↑ ↑ ↑ - │ │ │ └─ Bit4: 火灾综合报警 (Fire) - │ │ └──── Bit5: 水密门综合报警 (Door) - │ └─────── Bit6: 舱底水综合报警 (Bilge) - └────────── Bit7: 气体检测综合报警 (Gas) -提取后映射到紧凑报警字节: -位 1-based偏移 0-based偏移 -Bit5 (手册) >>4 >>5 -Bit6 (手册) >>5 >>6 -Bit7 (手册) >>6 >>7 -Bit8 (手册) >>7 >>8xian -当前代码按 1-based 偏移 4/5/6/7 实现。 -4. 报警状态 → RF433 数据包 -4a. 变化通知包(Type 0x4D) -报警状态变化时立即发送: -示例:AA 4D 03 69 0F [SUM] -字节 值 含义 -0 AA 帧头 -1 4D 协议类型 = Modbus RTU 报警 -2 03 LEN = ID(1) + Payload(1) + SUM(1) -3 69 设备ID = 105 -4 0F 报警状态字节(见下表) -5 SUM Sum8 校验和 -报警字节 0x0F 各位含义: -Bit: 7 6 5 4 3 2 1 0 - 0 0 0 0 1 1 1 1 - ↑ ↑ ↑ ↑ - │ │ │ └─ 火灾报警 - │ │ └──── 水密门报警 - │ └─────── 舱底水报警 - └────────── 气体检测报警 -4b. 心跳包(Type 0xAA,扩展后 8 字节载荷) -示例:AA AA 0A 69 [Seq_H] [Seq_L] [FW_H] [FW_L] [IO] [TCP_H] [TCP_L] [RTU] [SUM] -字节偏移 含义 说明 -0 AA 帧头 -1 AA 协议类型 = 心跳 -2 0A LEN = 10 -3 69 设备ID = 105 -4-5 Seq 序列号(16-bit 大端) -6-7 FW 固件版本码 -8 IO IO状态(Bit0-3=DI1-4, Bit7=网口连接) -9-10 TCP Modbus TCP 最后寄存器值 -11 RTU Modbus RTU 报警状态(新增) -12 SUM Sum8 校验和 -5. 异常响应帧(参考) -如果从站返回异常: -01 83 02 C0 F1 -字节 值 含义 -0 01 从站地址 -1 83 功能码 + 0x80(异常标志) -2 02 异常码 = 02(非法寄存器地址) -3-4 CRC 校验 -当前代码:异常响应的 FC ≠ 0x03,会被 parse_modbus_response() 的 mb_rx_buf[1] != 0x03 判断拦截,静默丢弃。 -6. 时序图 -时间轴 (ms) - 0 1000 2000 3000 - │ │ │ │ - ├─ TX: 请求帧(8B, ~4ms) - │ (发送后屏蔽回波10ms) - ├─ RX: 响应帧(7B, ~3.6ms) ─┤ - │ ├─ 解析+变化检测 - │ ├─ 变化? → RF433发送 - │ │ - │ ├─ TX: 请求帧 - │ ├─ RX: 响应帧 - │ ├─ 解析 - │ │ - │ │ ├─ TX: 请求帧 - │ │ ├─ 超时500ms无响应 - │ │ ├─ 回IDLE,下次重试 - │ │ │ ├─ TX: 请求帧 - │ │ │ ├─ RX: 响应帧 - │ │ │ ├─ 解析 -每秒一个完整轮询周期:发送(~4ms) + 等响应(~10ms) + 解析(<1ms) ≈ 15ms,其余 985ms 空闲。 \ No newline at end of file diff --git a/docs/Modbus_RTU原始数据来源.pdf b/docs/Modbus_RTU原始数据来源.pdf new file mode 100644 index 0000000000000000000000000000000000000000..79689deff4720e830b5412a833efb2e8c9a353c6 GIT binary patch literal 176834 zcmeFZcU+Upx;7l8DS`+R1q6bC(tEEFl_nw`q)U@dq<3PYHvs_!A<{b$0qGzelp?+N z4g#Tv5R&)7wfA1G{hjlk^S=Llzw>>ImAEo_W}eL4Gjo?~uKT&AeqVt{fLDz4R#R#F zC^@MR6F(Eo+>TsYnorK%%?9Se#LoQKok`2a%E{W<*2$WgN!rWR`HmCJ#nzR_)z%!w zYXNhVoB?b8fMfpVpMFqqJ zghfQS_{G`y`Pt6eoYgz~JscjS2T})Vftaj<4fTL4DpuZ}Fc(YU){lfl`1yfvRAH9? z)$P<>V3zI{R>1v$`dTn|7Yi$(mF-hoE6e{~FSOjv?W`=^eznrJb#nl^47AsFF?;q5 zXvn8v=HO~2D@$(WWO*hff#1cYti|;7>@pMIT~#K&M=%#hGY4Q;a!dli4ZNQL-^+Ws zDQdZ$$$`(pj7i|P`w0Ij_Pe%juIg4UfIOeUoB)Y3iJuAA0p_Ch%*+C4dEd&z*1}3t z@h;FCTL(8_gnak!Y2UZ9fLQ`pm8@*7ZGblXOneW4DRZ-765tmU5duWuZtnK06UvTe z)jGCP6(j_uls;d;#40I4i20D6rCRScHCT4CHdU|#-4sLz{ zVPRnin}m$GpfsV_^%+!3n2CLID&J`p!1aH z2q@3tTR;$?pG4<={ek}RckVm^ArUdjg^Q$@fC}YTKho_gf&#TvgLBS!RVX<*<;}a6!y-!Nd z$jr*l$<53ETv}HCrJ}N`x~aLPwXMCQ^IQMG;Lz~M=-Bw&{KDeW^2+Mk`p)j&{=wl9 z`WSOIu5%!QKZXVT`^UikZCsSVxXu$25)hJ{jqBWbPvA{JNl0{4fS5{7gT&1FDzo5= z3)FXG(n=aHvIuFSz~(M}q}N!5=Wgws4ei&+{(A#^`F}OCe+}%2+jeMM?eXJ zf`)NJgYeaxo_G*E8EbO*U3yFJx4w7&UvHj3+MiJvhZ z#2i(G2buI@^WGlHKE;g;;z6q{XCjyYMDTmbE(L6T)Ahtu3lI7jIdh5!!FDqKQp$Hz zzs_4+n$LBi_ z>8g->GL_@alXiGGXtZb=;ZDCJ<}UqeRncP8lwG$XxK=sW%U;8<=AzQt zvVz)orhVr4NEVF)+1yqhb1&-_j{vrQmiqE17w47sx*R9zCi27{&B;@DS}IxCvOdYp z;BNm&O{Q$6#B6KnuJps|eG~}1%*c*zu(#Z{PrF;;%11n}c3`n8S+Qo6*a8U=@(Nm3 zl~Rj|dl)er)A$a9fZ5G*WSViNQ2wwp5#Ql0xM?40zNEeA@B*9Fo_(DbYmazpZQj)y zx~|+~lb+jIllarU+fe0e$zbv3bBPJ+uKa+H^mJSM6cGmHafLozD*hziR|ww(7(qJx z?YnKV%<_c&wbIbx4|l+c<8Bl2@rq=1v=nI!1qSsReIgTh5XCx&Z%&s*j9OPi)54Fa zgMIjGtg7vNp0yS=8W4i$@~bDQyv(9q(iVIKUh4h^@f3cgKb z4Z%KO%9{}zCIcwDWnbi_>AIHPhfN31ZRtx0%$>WvWPEcP)sDe@4I9S|`v#i6U^UnN zZokg?IxY3+R-dF>r~T=Z{G_G)1P93MjV0uDc*j&e9yHRd9#&AI_?IPz{8&$;%G3T_ z`1oo3(wnj>Yjfq(1y7N^NPk*X0Zw^31-IXT5y<;&>*V1cJ?l6|y_pg&b}f;Xwwy>G|zaaaO&X{%W|FV(_EWhPLS6KIip4 z)Z>NQufz8#YXEhzi4*?4Ao3`TKr0iKotLXTzj>3jq1w{EvQhVa2+OmLZhx`ydVN$h zHcC?LG(a8?N+ZQ2WhHBlvZseBG|E$}pZoO&cY7_gKv9wCr^`DRPVQ0gQsVkn;g`!U z*4UYQP0Z`$1T*|}h;b^vB0-3a!Gr47{R=wWq4elvop-gEx~?btQ6vKFjPH!Bce1;Iib-5{KzM&_`Sf+0iyw}jG&uYpz73e|mJ^DF(44KZgVj4EH3k5XRh&Ud!Pp9H) zP(u$(;lu93PgX~&u-D9S;M%9=?VG`|@KFO)(vj)QhFwk*_{ai$^^)p)Ep+q)q%68+ z8}iD+(nIU;?b0JDx_!F6-U!6*t#&-fR2dt|3X_SxaH7+W#j4;z{zyqa; zA@{ww=D~=t;4v#X``rA+mPb0L4-jj{pOCQ*FzW$iT5Y*Y+}*jM;9O)bR;J)~)yJ`Q zj&=miQ^w$i4b8s3i+eWR5AHp%?~%RbwT}+q`&lFqd>B!X7>D!X*v9Q_Dt-AGi2(cE z>6hltrlp@WiHWZW*@aHa5P36}@2IpSm40q?;pXW*$J2I$am%}R0NnPSJMPgQ{gEpAmgxcOYWb}lAT*i8_>=YetT@yZ>dvJt&xTy))yC0}Nd1^h% zy%+!59Di&Q!Y?C2`jf0E3FRw`{77}wR>QSY`yQ$#Vpg?vnSyWmzFcGbCz(}W{9|uo zDM}6tUQa%XknvQVNZWJ|pWi;Fc86gO;Y*KxxQ~hys0m!qj|*k#<%H)RWut3w^5llN zI>fP_rsoi2Q|w!(=!D$#u+rqbeOA+pwYO0jH}LQ z+Lyh;$t>VOZg9@n%nc1ivH&VCHF^V})(Z-pNRK^)=!t-ElI+I~K34f>f;kf`F_@8J zSGg=_7na2-J*9>|zUl886*g=p9u;?G$Tf^22)!d>3X!l;0F7H`YP z3%Z^bfjYFT7}5s^c+hLvtC90CN)v^`i7+D zSA5tiCA2XsM@tfBuoS>(*D#JF9ay#|=T=@+j%xLSWOJq0R;x%!Y?VrAF(Sjo}0mnkTXf1n|YO(_$jNc+{FHLbOA) zXjW`Z@^iiU)Bx_g4o@7eQ$b~pWpWgaH8!K7oBCSv509um(O0FsfF^?b(eUOZ&mf1z zvH@nVx!8MLBrY?epzWVT4jM{*@=VBtT0j-EcoYDtliXBu!@dheCd6t(8+z&GMT6V(I<;N1)sg`ZJb`j0Ni$Wgyp4>f6>Z3s*P3}NtQIfH3; zs!DE4Zs<)NdFiN>M*=2NCW*6nP}pYL+B4gvl(tOqJT{%+le*wNBgo<`8`%u+x%Eo)aU!*x9VD=3W8jv&bN;cgeBs@e6QgvJ#g#= z_)a0Y*n(Af+jXt}E#`o8_8ylrF|)JL!_^ZMApzjQ&&)$}kwM}J0Z6ll5L!FsQv6%^ zoF-ZY=Lh%$UxUwr9-yfBXYuEJWso~Lb?$7$(qp}f|EklYSmC>Aye)@jO1gAtmv{wIi zte3pkb=MpZN(CDFg-O3_SV@Ay9%MB*hP#-_xjl&HNc?-F^*u zeswd=OQEetenP-hP-C^bTU7N{9;{`2(uDB`Z@I)Xzs%#SCp}&Sd#6IC{3g?CxhCD- zt~X=7Kh%_Lsrt0Hb?XEldb|mI`NoNrAsU5T+6!=Bq-M%J_@rk#2MMl5goPk*G7jgK zJt4khitr*WlwweHn4dCv^47Hu>F+@%X(X`rEPpOXNAj#PkHeipXN5Ek>Sv&|Pp|n3 z#FHsrr_z>168`9RWj^p`W$~O9&#FhO%=zXnQW|zUvbcFILHT|#a@D41PQ*hbyc*_u za^{|mXdueh@Swdh#V*7)#Rj$@5?P!bBo$&pt1j(C`Z=Z%yyqER%ZCSDs0f+9aL+%= zdHIf-*%X{Kv&;IDovTNMkp7gstJAVX`jge>67c@a>w{IS@?4FvoL}9R=(phX%Gv0> z@p@CF9-6CASkE9Kjs?Q=#;A>$|H4hfy>B>eVd|;(Gl04v$%6a9PkzD!A*dH?rZbg* zqb(MB4Txb_CLg_{E$B9&zDU*nYz@uI*?xFGBcVOmOC)c%A@iAwfJ6y2T73OhqMOR<`c7>)Ht}&n=l3glxx1^5U?Payu|uC+dg02tzb6b2V%z~B6KK4$ z1`rIl*TT1=mo&8*&Rjfxk-g|va$(zPsakfh=92E*-NTMX?C4eWNZ-&boVH=nJs4LT zhX>vDvFXWfPt_~OQoUoip&85?Ur8P_3YruPrp%O49Lxo7q?nv$QH?bm?SNx?=lzO@)|1wlk#AE4>(OMU zin(YD)#?Z{#wl@`PXebLpEB+HH-QOJb0+P>FE!1 zXz&&j$dcy%~=zzzs9B_wk0O1Rgse`gG}&K2Xoeq2b>Su zJKV~*Qkl?lS?ij$7|TryF8a4^t9$$FT)~3@l<1@mp*wF(n4~Wt$lwGx5j}pladAmM zAr%-?!bKAf5(NcL#d%I3um~=XFQXa4g3LUSoT5Xx22@weiPPg+7x+Zp6< zN2bYIm{rpq+ikZPj8FFvmjr-fo}XVruWXoVrUupP)&3|Cs{0VhiGIa$MZN}e%6@;4 z_Drc%;X!hdz%-sW#o9vWSVo|$0=e*6z@>^5J0Z~r45BI?gd>2WHBMg@0?6cTJO~du zhrn{Y_ie_5{!*U}%j&aoN-RQwy$Ig{LeeK2(EW=IfXTK76b|&0do+d+P<69HfCodM ziqM%@oVc&X_5`P+qTla$PZ!Z=@S7-4w-!U}MaN4eh*IS;)&<7KZC z`)yYgbakmSioussAAI11Ok2ZjW*DrCc1l}k&wWFv`|7=4pCJOLAe0BgfN(}~1=W%N zut|I7UVCnFyE@u*zTmQa*krMw!StO`EXqEyW&r6x!?X0^aB+Xnf(y~}K3VmmE!_J_ zYatL+vgL){t-==M4&d0l3e>)ycvY$MUz;O#KJ(g} zlX~kLGpLuVKW#WO-tKNMs7m%+u$ulQ*J9F^EWK9`?D7WX*rbx7YSokCLikWzU+_U@ zU!k3w^^XI<-+=$=Z}?MPV6OK-14@kLVCK{{8knEV3eMtou*n)q4=1nEi^0N9&)GL^ zOv#esK^=MCfQu0c%oC4TNs3Ib3Q`*V9Z-Ts@PmCs$4J^ps-G3GS$UxtjM}2@jqes; z*LKu|$qZ;sL|F(kt~jH$IER9gee)mw7#;ua%v?NQQmn)vgbB-tzj&JA55N-@(4&Jh zr0K@?@#&daD#D4R0roID1inh{iw6ZnLQo;-aNP5ehNIQ~A0AJ&OS>hAZ8P6Q1&)4! zN`{p$quT0Vw6Vs_2kP#!D)hRl0>ZueXtP=0OWDzeb=4KsmW^TKqEnwR4GrbK?8vun zj!t;cok5GbPbnEO6ikr#_B4i8e~vlRD~ulbB z-qH@rkJBQxeXQhgPb&?!>Ur<%cW^g$9DmHRmNqU;)r=z0G z*-{jBhk!L8z0OGQtshmr-at7Q)i*kcYdS`|ax`rFkQAS~+c32`Ks&{lnV9Wlx2Sy7 zpMGBR5n(HXYR>Wru>Xz|o(U5K$>&UY#^h(p0z` z%=n%JLz<)KR>!%gS8eahY8|6q^|hCl0Fd!}#sL6GkXs3)*0@tlts#HzS$Y`zrL$5K zf?89Jvz;ozLmZ?*4dV`{x6>b;J!c#hmzj;Yw%q)vc^Rf=ror)eJd#Z#JkwS==Uxxp z)06H~qI-WL35HC%V&M&o8bb{mV|Y;flc}*a_T09PW4kc+e2Hp=@h?MX`peLH;6Xdv zkdusK?Rb(W8uHX+TwifQ@Qw|NQ*T885tQ*=@`AL%jv34V_ZHBr`)t`2f(58lZF458CUQgB&sZ@4{Mz_@p+EXLfG#K82-*;Efz|O z@u+Q|-wvG67+@YQV&QRqD*BDurOyY@6>8AX%t$+hRn+=H?`v6}Fs5n7+Bdw*e0E(v zsT&8|CW;TD`l_o1bTvr>TNwKprINutgtWBcp>dY5$*ir z)V|U*T$YL}&X-?&?GQM2AWdc^6h;`GU=cKqJrD1NR;l^&Hc5A3BuB$aO zCR~6mPlN$Hgq20rpp#o-xMSih9PU?;PY|Tz*f2vhw>*4Jp9^PXp!w8ZyycE%L)?~1 zSPT&Vie*Owo0s`Au-%PkC!#|t(MlZ5yDrXOPo!KidLdpJMledRs68!?5-SJhBT`~we-zP$Z+>5XbReIgZ{<=| zrzUkN-FT|=Qwp+X0yQZ`-R(-Q(>#&pKI@ zr=q}qj$ej-T!zEuqnte00EZzLZStK+;3B+W+(FAkVMnZ=UI|AV%ASRvV+|+Gt`|t^Y0&grxTZXFIUWmyVeUt$A>U12^^L2j{^Lxkn?0&At()X z(u7GAvb}P%Q|e>aeT08y_cKNww4!5n zz*7JMJU4^oy3`5>yBS7POzE$wavxo%EYr6M3nY9Jhj92&e80*-TKBn<1U(&lKEG@_ z%6(_h?`GDNc(X8RPHIhn5iWk-6x^^FPy={-fG@u)vdKtX2B3zvqPzZcAlS)j0;H$b zbiM)`Jpw=Ifu0g)-B6no&j-+P#4mJw4saT-)&3Sh&tT3ESZYn~=l=nX=bZYp?TW0r zuOMjQiz;fr%oK~agBOF39&m_r1J($93TwGb(HW}ktDpWF2c^9wfGOPCztFhx)5h~*AYe+m}Yf0msks0M2D-%RaF`UGl zRrpM2!;}zab@C|B{IR#8t~zwQ2O96q9EORmtwb&H19nT85*P#>o&pktIYf zr6+HGU38bR8J)Oy+`zd@ib1qgbDP}!;Z!#Ej4W?g?1~jl@rjd6`ieMtRxP+UsTj3mQZ43*zx%ubC9Ce8#!dm zMiDAH`T$B=5!-l=8o$WB_9LLVp$@_*spGEV6 zygIgKLJMU1(4l$g%o|n^%Yi*y)(rq~^E$%lF=)p`toUEiE5L&L=~RkTbls%DL}iwY z7g>b@9;@}#ei{BD~MgiOlh1OJfU`ma@-LEb9ob*2V3mKE}bb+0CkL{%hU$ z2SC<HYDqpV<_tVl2jvCn=2FWcwoTK8j18TlgyEP&S{zSa6# zz};{@F{-z(`W>&^&4zSn? zk4RW*#9hRL=Iwj!H#%9AHDcw-3i;(|iEDdX0FSJ&oGo@+;jO-rsB&PCxy9xbyq9`F zAVoG8h2hE^#1hQ=bA0=rY4os)N#^tM#}jOAbPMU%gyH#%54GgDT?k$lzlL-S2$tU0 z)-6g5a-X`NGbS89cJBkpl}~CXt0<`CRxK0-)2y~kHmo#M@_A=|GgG!@A5wIkF5H)% zEf^~UpI24pE@b9bzA+h{Ah53L51E6LjiC({quTmhW_O=Qiu6M{-0KG zD)MyTSQinj(=d0dAE$)}L7V|k#zu#})6QQ{o?1J_?Cglfl*g+Er?9DqtEa2aLMC91 z3jK`pu{k)|8|A`QdKOgm5oo|rvTi>DPL@nhX@>T)+i+{xg4KpVBR}bZ7laJ`fZl6M zi&1keMJCBI19lh>Dgc&?2Hu1o1<>!X^*(l}@PC=9yN4?j7yIU!%cVtN7pzFVU+&m^qm@J8?P0RnfLB-;!G9J0Vp znJIlJ!qunyTUoO)W8G8j^UR~#_&Sys?{F`}1K&TWh7h5h;8(rEE@>;A2s<#&Kl=6x zlNw+2(T{uQatX7@Aaravhp-bm!!jnhvJrNO2VF+ntD$<5zIag1y2mOkWy)suJM>?H zx$24!v-eTnO@IFJGJqGX{AP0M!`4ipe(D3rVrgf0R#8u?Hj9UX_q!y0UMM>mt40z3 ziQWRnXCxeMX$RlG3>dTqavXSbhJ+`l991`OB*)DSqj|v$W_2_*a0s*4>a*{a6$Bk9)2uiF#5ybM@DsFM@8LDTYTqf?{^bGu zegk#7c-E>^oe9?6YK%}UCtV+|aTvOK6^PBA_u{}AIbPRW#y?CONy-dbMAWrBy+ts> z6M>`6d8S;7xNpm#L0u})^kOgx1D#t5N^TCIRa#N!-J(bqEBOgMr*CozZD#vXnE{u% z;hD?F2|As$o{&+i^I^(!nEpUF6dJbI5Gs34_Ga*jma4i4dm>qi^b!Nfpa)X^W0*pu zsq3OdTI{rSkj=QnmAROp3&P(pYOS*8`lU6q_0=b)Uj$Z$Bj+V4O%#j#xOQ&8{W*-{ zO#>~;R2`RW<$O35(s51I9v2Ve9GZTgYy0!sZrl23>Ps7aq2n+WRY}b0q5hcBWJRWc z5aNfr{Ck5GdYEtly-hC*J!fv`?HZmNbFff%U4^94$9E>TtHd4Pl@h%p;ImU+?@X^J z-0RuvC-jpKB;nOk8ZHaOUC^L+FX z^!N{E;6Lb(qJOd$@4=khe$hY0fbTQ`hNhLJt=V0e7n31B@P&wk2(OR`len;;F%zG< znadfiQSgt7npUpA$eFH80Oj;gf+SE-)B@<0zZjO9va$f#5%`6(IttnXB22*R*Uu8f{x*jY;^$P@ZkW(>pL z9ovdL2VHK;Io86Zf*y}O>bMG2baEcW=jX3@Utx(hg{tAbc-kq{n)mpN-aUCIXuG-5 zKG&V%x{+og{R9(mN)ny*D~ZZ1xR553Wp#Y}?f4%dG4?L&%a{g^D8S?OG^fo=5U< zYu#$rhy5(NU$YuwWM z+U1e?O1qVHA<9S0{$ioIk5b*I&dqzW?t2=7 z%f>4 zrCONSY*+e?JDnHu!!}AeotrEded4LA!VPIY>NGGiXA3F6MlRlZEc-P8ne5chZ=5@v zs;E;+nQPE=i(1lVq;wedHkYA**Phm0DDj#lr{D2-b=$fkY;LH6xq{;12_$YZmSj15 ze=Kf#KASVck!Glfu}^e}W#;v?L@SARbtvz&fUvg;MG&oy{&hxQE7y3cEls`LVf@pl zu0`lp9y-Q?{rC9F`(;E;412khc}UZ0SX|R1rLg%W9mQmO!iggbc^%iLdz?D6(vGP+ zN7)^n(B6{1xvtTlEVl1IN!)0$w@Pme&Y7DV@w^*7(a?TGpf>S{PpaQ^Y_EylI9fBD zI!VI4R-6IFEp}14@#3n{gk;VxnOv1f25(u;d6Wr1+w4%}qNFb@RXKR!6 zXZ{aS*l+fqmBBpkc&JPCDFYH5K2lw|l~<4h_A@vqEdSil^-9Vu&ed|Tpm-%I&o_Dw znTS#Cg3Je{I=YHPl8quA-`5$hb#}VTzhec#z;82nz9f{$O1gmZtEjH0IkjMf-sZA> zJD;ceCdH@vF4dq`QFt_?t_MTwg;z47%kQ(p_FkrIGKc9FbP{P&JM7yaIoO~)q?d~H zYhfYZs-Q7JvDXSx_RO+8*a_rdceK~U)LFmud{pX}=zD!vCpa3ZRO8fNB>rH-j(#WY zeD&ZL+LvZu->fOT7klM;^}t+ubx2*~!Q1AWH$^xUTrMt#Kls_!TpPY-;XNu{&b{7P z70ap95n2zj3FuXtKvzq^)E|i}zIZp2q{-I%YA)Tp%i@)bsELJc!W_As@|OOa`$FJv zp20jW_ut)p_4wU_uFJk%)_!Pd2U}G?Zw=>cY}_DM*~|0M)-}}+8^A;>*|P1o~H@cJ*X?iY}ka8x2gfCZ>-@)HCs0NSGte04^=xUG7 z-$|NyFws~}c#oQH&+=J!jU||^FKz}YkcPRhEp+vz;X@y>kBSn;f?Ga5YT;t}l#9aM zw|xpvs3PzApk2Hr_X!VCNh4pn1CY>`k#z}%Z4O7??570b#9prGORA&!EB%UkA&kbm zy#5%c9L?uXVhuZOL&mR&eCUs*)t_72fJUS~sQnKNpWvC9`G>Xm@A35&UCg}yB<%mi zviyUx4_L8(QualGkE&*FK%T%a>&Xuo&HomCUx1&V|F6brbF`5h#DAfM|Ijq)(TmGq z-wx6UubDx5y9l(KO{Hu6S zNCpm^0G#JS^#Hc*4ip_WA25^&_kf)2;X%V0n+A$U00PqhJ+%wyJ!$Xu*Mk660f_lI zKy#9Up>+-Tu&1U#^*5bFoI)oi8um0h;Xyv|88h9h@)5Qm3YwcDIb;u zcX0yV^tlhdvJM=R;@I#YN<}Oe&vje?5Y27R!*{?frv*y5pU|TfJg7)bNqKjK$ zy{o?o1oE4legfQg>{`P(T z_I>_#o&R>7&%%knUFW|eufHR&|2-!0Kg)Ig3vwX;Z`j2Okb}fXqc$4jP-{#~YfIE%@w5~yI_3Ks>Ji5D0YrM=UM|rDV zN&s8eCn&UN!d}<>an#uLP!_hg(7A0BdENcfyDJZCRFXZ%HwHb-R{itmWVLcALfocn z7`uE%dZ1KJx79)gk2$a0HBHpg>RQW;N6nzsC*0m+U*Nz>b-1JjeJcvj|ZugRV8oo z)?1bki=XrAES^NOH4|QOlnqWmb-oxhSPgR-;XyK(N0+)d1r0GOu6=I0M+UX zd+FzGHNQ$Hs^OU1BE(ADVRpJC)4qFZpSXi;Dqt}a&6qbu-qT&?s{$y)ze_#?W}k!m^X`?2)>M^{~#Xc?9(+TJM2aVub$0QVpI;YN4{n@z(e+P8dqOB>D+{bP@YVZAtm;$sfkP z^AsWO#|Zz8@rkRu6B7dR1d~yQJH=1b*yFmWD&gD264;G_00uwtieZNl{o(kezR)X% zFZH?_8=ta#u>QEczp<`5J3}r~@y3lo>Zw3$^{e9r;VsKF4!d4*)OJhs6&oSux`7!3 zf;~BxRzSd3(JaTldbM8g7E#9A{TYMY^lzbD8UCvi)iE0;5<55Meg@o-9}=!xdE`09 z`q0J9Vt}MN^}{~YAPZI6LS=*FecAWnG*O-T;&lM7o`o9ipp))Jd@z2$FXO!(Rewuv zuEJ63(fz8ylDz~dE7Ztcb|%GbnrC>VdHQ<&U=UeMHVa8jNfRyy8tB)Ki_4vX(;w+k z`Rh+b@3H=f(P49>%*sQTnhxKxt{W=;0GZV%Wx}w3Ek2qp?EhY5_fpyTYlUeoaC886 zGoeANW!erqe=ls|L%ut|-g4}WxIER7;TeA$?R@hy1`=*josNijohcd9W+_{|28Z&w6Q3P;jngR$td|?|nOel7R3+E#U z8y3w6;Tr>ZkTtd2b!@E+K|7A$^rGzrRDLJi<-wiE9~K1=vzYcg@T^aCNO_8ZN79LA z)%(yMve)bw_SpdNjGv>jLQS@k+^%XV(f;HO#E&AEdO}3=Fpi0DUTJ9a;e7?myB(h` zpL}8*%MKKsEOedu*G^DAEQmfvC*n>-_Dv93UIaSrqddYYFX2HVcV`j}`hb*3zGle& zIiPdfO?}QMY?Hg&F9(2!%($OpEuPiif69g)uB$H<-Xu`!zinH#DLOo?Xk7TCjXGw8 zUN=R#(BfMmka9vqd6FFz9cR;&q%zYv0jJ40XD()yaVoKt4jx;6XQw zxNvnq;>_J5$cu)Z4Ipi!fnwLkpKxf!qQet-1Wf>}Yd9)qKGObPrGB9Z?LuQ`M3p5h zKb72Hqt$O?N9BYMcU2i)Dvdl)IgIAI;WznVe?fc#;dhii$L>-vd59oJCqThoK0I>j ziu@MzJFl85H=@liuxzOAz`}p}-O3IR|M1=U_Wf(?&-x*&B(6p|jrPiEsHKCh=OHUq zr_;WhMpV$N(M`2AZ9dpk<{kN|HJ2xP0*1w2j|XQ1{NZ%EJl(n3s>SG&76WXTbwlih zi}TZCVN8s{^oVwm-dkNeoy)AdTnCf%uZ~CZ{AAGf_PJ|)8wT^jF)H14UzErirX5^+ z&2S=XnrOaeA-P4-S2?fS1V3?BobD6D4Lon&)f`G?n?r_<9|jBF8r;quvnHqBOe8o> zT!+$!9Ys+}aEGL&$MRiDu5vjSelz``Eu3*pCUyGGGl}Xv}oOwDTVPje>G|BkP zzd;PkzC+tDtuTC5Ib5p6VG&jQ@y*N|mL0~o?-tmuf9rjM>qWJ}haTh1qknFb!F#zN zU3$DeNe>1_TjnuMxclzVv1uA$UFkyKWt>PgL-xM4?}5K-D3*lyo57hS5&vwYahft0 zeY|9G9JZ8iZ)oeZ^4Q$CXC|jAW3&bAHuaWrcx|{^_&QM`)zs68S4*kRCPX`2xCe|# z90tBxj!YAtlH`#j58qP?I5}d&0#CjQh3~2#z>k2vDPQz7R_$KNl$`P71L!NnE=$F! ze{Su5C z;Gs?x!AF3zQH((DeVsAJ6V$vy+}v_(%VNls;_Oe7U1W0B)N(y`d(zW-xc&_q*iEc^ z%6O268o+2?fLz(XC`@tPIJ=3b_}%24(b*sg7L)`evFL)9$+~qNTCG#|N*^||UT-wL z4LV7CYX7uWY;LB-Mp#84!(OWOo%xeWb;EC+ow@`ctUp8{z7I~c)zcWl#5cwRx~$K; z^8mE_gHv|lh`9TZE42vp9rtMH4ZkR%)1Q$I#at_nBycRNfpuaE9%LWxB;y&OXT5WM zo;u)`PXGR=jhu{aZ<;4v%{dHjeGjml$fjP3&O)#18*TRvjip0VO4@DzS=#7ZK-T5841gky zI1w*^(>MGlwg5u||K2=+HJnpXyJkz=Ggq7UX8YwcK?~SAg|i8yz)yJRQ9MiZ&y|`G zw}ipt=g~(2M{A~cXY4#A9aMNuH|sJTCUkP*)vvBzl(9?1-m1R=0GyWswA8ln zqz9C~2tFf&N&W9jla1U|6mv18F=)EM0j&N!ITviSJiKzq=jNNw@EJCiePr5}wDO!v zWrUt&Po%JQey8hIijJf`c*t-)F(bq`l2KLMF2FowxJ^fb_PB!c!?}pPsLC8ywo7*J zOJ*rTW9=(KGdDOxeHM;{J~n+*G?x+^c(plWKc8&G_F_e}oAdjM;w#FV^+)AiqR;zt zLiXEU0d^q#>DeR>4ZeToq+yF-Kg}=z_SgtO2^i=*1T?Gf*%`l@sh);>>(AOA$efB1 z^ks&aDwoP(sKnb?=a>zBoGjYLPyX3>aU!>~9pO1{7c$n-RoAhS_OwH!Qei;@l}*BR z9!KwjF~gpBQ}m_zpE^1^*!p8K!ph(8Wv9&|sMfqsbR#{>eQIr&`If7|A<-g*6ET@# zIx^bvW~S=!CbKythGGqYrbaAiBi#{%cJ_eFqW)t`@l-V7HqLF!a;-RGhn#EvdYEu1 zb$h<5Gu=Vh>T$kej&$_bupQ%NPWYwmi58dXg)n2Ny?_AC-K(LO#oKCKY2nftIyC}j%503<#Ua#SX zjV-kmlMx`lOL;T+WcMtm07<>mfQ_abIa3K6<3I*orwqVV2mq202B#a<7OW|E8gTb~ z^iF*%aDgWF_V&KdXvXE7*^QibHIgAldRcxjJm}4IJg{B?J(8vy{dF6CI1I=>_*jPF z%p`q>mWm*bcg~m+d^oTsKTq+Xv0*8v_})!(^_WS<`TEL^1MobAc4fe7Sa`p}CJ86( z?4m^&xbOr9uRHF07B8#gn;Jal@A_y&nr<`WE>B?XZ5BJprU@^`g-RJ*6*Ad=5O<+$ zW*n1Gc6@v4l8@6=`>H`@FP#mQmust-ht-7_AHF+{&ShA{9J^uJ<)kXJ{colpLq`qZ zV>^qdNl-op(M_6D&Qq_7=9y5BaVG?0cu@_jfHTbXWux9nA&EFcG+Hl9c>zXt&v8Yx zF6V9Av$z7W(_M*EP6tQY+YvKijA~e}DV3gfZ0Q*8=v`&2-=_Vtf0o~e?UkJV8hA*6 zEF(v()D0rH0Vc;|=b-l(%c!reFSd`BQHbVXy`8J3-HZ-D`zol!t)JX6?TABD7!<`s z)UDZgEIm>qj?DSdC-26nm&cIFXc&F?m?`#Ciag+#%-$|4BT$$EyvWKV9q!z z=_R>it7bQExVrO=bk9&_c%TCdu0$y8FH&HhmTBl`WEZ#RVi|Nz3HhJMofv(9q>p^m zkiTstOAX%b4P$G}3^P9aR?{ zR#s~51w5~4^{Hvy4WDS3#&j4580LmbfzOSEl+hwY)w~@jzRP@0B=mjp4F^0yin)I& zbGNlN`{9DkJ;b*#&c2BGxE~wRQmBCzx}V<$3}q3vh$QA4Kur}enL=_xVd9Lc7BdY=(zkp9_3ec0 zcdn+#j=uM^!3c)2XF7PzwC!8h^nJ;L)+B%Ib>Fq?h*~nkg-*i1u%{#LQ5<`@ znbHjOPcdv;N^-6c)ejM|7KKkG2GN5JuEI?K-uQZ%?yS&1Tt? zT`db-w4}0yUXV!Nqvz6$^;CURx7}lLi@}xds{(zBpE|M1fOy6~Xv~|4d`YQwEd1Pf zlXw$#m(d$(gVv3NG@pRoIUAQ|BOnLB)XKbsTop$|K2zZ>&w4lSd48(2Tp7o?2RsQ$ zQcfImGd;{E6npnHX%FWG@Spt3jR&MfitMjnB9D6S%5^nzTK|upP^;g{+r|;1e7qFp z`8zglZ8nos#`sveY5bJHcI)rJUOV_1X8R|tdb_sA5j91WSz}&JYRD`1Sy?o>&jjO` ze>^qgd7XHLptbdLqNdCv2}nq>HxI96+;Rh7NiqoMpGC2Eg8#wAkZ$O04*9F=3&LL8 zZMH8vq1Xe(rQk$78MM_sb>=%E9P5Kd9rA86-J_X?cXDN2?8nn?C|W^aw&r{jMW1{HWJ{AAR$KHLq;Ga-!^EQUt5Wt-Yj z^xDf(>hIn=-Cl+0XD`EY{n*5qUt%i#EGMJ2-fi;58mBNg^0U<#v|^rHEAp(+dd%At zu?$xkP;pGHI^Oxro;WO=xcDhHp5?0zS&RYY@`YCl(Smdz+RndsH$Qk&wjiDQoLnGz z(4Ob^63x3-W|hvVw;RpuWW$>=W>I>X-A}KacWqa0w+r@U7=Ui*rcCvzx_+fKJh$cK zs^+XK?fEKQua|*YA~i`QOiH{AyOz@CuKODK5I*CenRK@aewC>g`)muyF zbN{Wo%z~HFlx*8xRhw&sXVQu=`}-!#{Er$g+G>+eQq>lAIeOV9lJc8X_`Z|!(^FH5 zTDu8ou*Q$NUP{t+3*)-+c*^QR1r334_@R}i;Ammd+LtAtl*e~mGGk-2h&p|)T71$} zqjb}Xs4JQkiy8?0U$nh*bS2N;J{ogkO`J?7nAoWw&zE9k@1P0yhdLP|@VFET4@d!c;og9?80cfr zEqXMYjHQZ&H|^BX9ELEp`6JE<1IVz>qzHS8jWLi>z$1T{uIg-0gY}K#7L!z(zIE=T29FuJEe{xE%`^h675_Q;b zw9s(9I1nD;jE+hHR^>-CA(PS%f?oD*GV zVyi*AttI+irrI@H?E1L<3saZ+ywAIWly2ub)4?BXAhu;~x}6NZ9gBJg{B#cf_FOgJ zob*RdQiVvJbo}a_HFdvsBGGh@X$Kh*SMv-$cS?(FKAsXEM8LEQ4W}S{-FJ^Je z1Fev&>To6tJwQWo@aAJ2bKP>x5D%`Xc$6OVs+ z$P*61?3CmWZ76Bk$lO+I3NyaE*te`l$=1EhCeObn&MAkST+y_ARk8 z@PM^v%{q2MeMQN2wIMq$x5*w|!IFcBEF=?GG-57kx%$FNNdw$oltoLtF5>FU_P51y z?B3o6;5>Raw6V|cU?mi@21~;MtX%Q>hoP~_PvaupS!ZpW{>CP%M=jdwUC&-1+Gc1I zpneGQ9&*m*?a0UsX?f>z(ih=dLw)v+BiplY@5=r#doBHC9`0dRt3lp7PF8C0_Vn!+ z)gsB1@)vb5k=%gU)g;8@vl<-_6)5$>5=HEa7LpBGnzt6fuQzrJRPu+_0?=3{wKO-g zu~?1PMkhCn-R&6+4KnUV&^Ep5wSnH8I43(6AzJMX!7mcdRyw%YR{*&&Ome2ZX|)m- zl>pRtslygsau#i>qHr#dyobD>tD;Bq5dZ=0(8kJQk;@_x14cH*nBN)$H}ZWNHDNL; z+NG#VSjuyI?Fp{X{Ik7{WyXztLtvN9uyjz>3oK^Kb3H@yhPb~or!gD1%i?uCMKa2r zj->;rxYIip_GqT7495kr4wYMd2pHtKD=)IdBhzvO?$mes`{4)^@!YzrAvoE!B)`gP z@gDjG(&1V60?_JZeJN`Wd=^k7r96pA*JxBm=QS!Ylv}aB$2^M<=YyZ#pV@Gs)^w73 z<_J2cNVCd3#imJzMXA{Pw15Ouz}NFHm^7yo34xJpVTqqWLncJ(m44AlpFGBm)u~w9 z?;ev++46<8Q$oc)foy065GPlht#O94t(JtS272sQs!9w=ML*UQE(HBSnID3vR&njG1C-gbQ-po zmyu`!v&tJu8x`y3tm$M%Yx1+IGZYD`9ajfAB`MR;c4=rCoy2KOxo92ymA#%)MQx@A zxlbC4*Oxoq-`2qU2KuSY)I*!&=w#yqr&84P5L@*mb>o~a%{KYmhG#cp>AXMD$;foE z1B%rKo*`r65sDoPf#-B@iL{{kJVTKvm7)-}n9KV4T<0>i3MsBc^@=(#e=5-7)jV-^ z7CiR&{9GeJndH|z8%`YFh9a!$7k1ro^;a3VjxR=eRuw_;qfj`jnbr4AX#qbIPxUzc zc8XFOWY}69&W*(rjZ*^^x^27!C;{Lt>eLonwmZ=ZzYmcEf7>T6>e7>C^BNm)iQdxC zo}oFEhj}Ljbe$LqH5cJ^I5U^SeZPL3Pn^^x=WjFM+gI55@=f)zEzq9|bXKA$CBDyV zT>~<6!oNmoxeRAhHw!`hB1QrH0KW82dHxKgzYvFoVarAa+zEc8mj;7xmP$mYB zg)j%cJ^d=Z!xfE*Xh^50{jqI_90L5Wq7K>4SdA1|mA3kZ5k#q_k)tLh^HX_VM5ZAj zYUKv^^=^XclY{WPN6pdH6Zc85s>Mkq{&}<^+K=IzedoU zyEAsStA|osUau<+*WK<+B77yVtXxII&bgS4YJt_k89Ph?NGEZ+nr@L3yves{#;3jA z!*lwy;nqzlftT)ls3(s^ZHyWDiqHG9Z~TSh_a--`;nCA)@ra{EdCt{KOQc_m*YSRn zQDpBKIFsnOwT)>$tmp=zO+~fW=oY@>3PS6k;37WN%_@{LK6BLSB+@BI0|C^j_)|5+ z!Zy!QNUr;=<8t6h*!++mr@=#G@-o;->LRp(`*`JujEIii;kxmDPIEQ!jyRK*qM{o( zr=4!ZQmL`0@@AjFCiu?}D^m~>saf^+w;x21JAI7&Vnm({*hF4@02NTw&+mn@n|#52 zztqk>xtAQ1O}#(fuN=~{6lCSM(m46(ypxT$jZhd&;E1x2MZX9Rin6QV)EzQ#P7ldCMR#5JefjA zk<9GmlHctot+%&ejq%5o)o4y`I(gBM@fGYpfKeG*jCfptF`ePUYyU~|FfGpVH)*s4 z+g!%pA*4Co479iG+IO(39V6A_(+5s-0j=IBNv z{$GmEtkAjeEhIagT z_$obm(4!k1O>x9;zL`W5qOXj9AnJ~g#_vG!G$jzCEYVHlnyd5Zq;i8Hc=vW4CPbRm zE?L{@$I6~ihO945o$v$+-;Fy4C&~l(5cK8e%Lv<^1)jUPnrHLGcizt#UvFvg#2U3Q z`DT}mquK5oPKE+L^TID{AMIes@9!)+WjnfMW(j>B^i_;!OEw5+O}mp9YZ1u1)sl|Q=Iqn6OtytSH(Tw75r-~ZaBoj9 zkMHX$Hq)du0hy(gxd=)EmvRVJ#F-Mwv3``|IXLcq5bi7H_7;>8lOZl9DUO|uQye}X{;}t{ zhi=bl566Me5u|yz@I1nMaqxaqgrJz6KCNvi^)qgf-loqBDR_&I%?XD*QR#70w`$-l z@&5oq;3S{_8IzE;H!`;W3n+^J01Bv$rC@Ao26PJn6#EhYYGN7xRoim1wY4<*rZ-`l|6%=WK>7{fnKApQ&Kz~q0U{KYlnf4o2ZH4xFM0&f>)B25+``IM23jfjcq zU)#U?EG(@5S+t25ng0%I{51iGGc3%UjggUvnSn@? zl>x}vWd>&aPfTWZB29K+&VNJMfI0t@0I12O`PTqEAo?ddD?1S@$3LfFqX(9V9_TgW z-zE6((g0PmwEwDm{gdH;A^^8QBd|Pw%l|j!|D*u!|2+xNrcJ~FjKIjkp{@O2ZSr3{ zW`V!mh$B!g40s)M0?wxYQUqfLUJjj*zU{wB%51=X;NLxtBM}V~uv+MVTxL@TA|_zP z{;g8Me|&z>u(C4$E0_^TN&Y8KV1M*CTvXr6%HM?=8>>Z|=Vs{Tv#j2U<;ItfR8OEW_OYg3?f8}LwC-}PS? z@=rnNq|F>0fB^ot+Sy<1C<3vjLIkYoe|rV_o8Nz7iB9d`SI)w~{$KU>UsLJ+-@Jt| zaxelL|KGH31|l|k2FAa+{8#sQ)(PvXB(ebIS#~kAe$0~TbvY%W1_puJ#Q%L9lU3aa z78Vs$T^Li{X)O#s0tLe<_&2@_1U45jKfkHo+_XHjljyXaDf%LIf?ce9T-T?j(6dq32fZ)Zr& zy6=6WzHWl$21S^T&+)aKYv;Az3-<}#Vpg^^yteVVhpKVD9p4^|r(#o&c3|7-Lc?uk zzI!cbhuLl-+_ma$8#{0jUfN?!H%SZE4^3#>|IYJ9D#k>MIuh86o@g@?0jzEy#d?eS zig$+!uj6ICySU&!Z#()7uuV{thh;#gLm$zI=qCVL=SLMO#9~{}AWK2RAe{ z6Zh@%*?AoWHwtS0`2Haf_?>ssMGmr49B~Id2d0v2W`>)z0A;cAdq)R`{0CWPF>Nur zUI9sncdoJ`f~Jt-GiI9t|DW8@7j_zhu|3_VhMc~>MC z)^V6_)F{v5Z5c(Jw}4s|s|V z&j-+g)cHC*d21A8Nq>236M9WS2Nf^cntkn2Ke5Dt=M&-~Hy?K_z5+M=o`g$2*KQVX zpYXE1zW)N%V95Hkj>axZ`bIb>O;?Z@Tb(=niL<4%_nev#vdj#-?*dJu$d|;}fTI>t z*H!oY-4*;uM;}AlCaEJ>I(l5;gk0z%!};Vcw>?Qw5$K67d8xXkf8K&bc6& z2u>V<8-|AcQ;&os648Y8)~SFThB%5-4e|aM*alCCCnE^{FlZY%Avh8UyzfU3AO~%P zETLT7Eocm8IpGF$c`6GUNuKRTy$S9`;=5UN>T6|(Fvs)DZbOe?*RWzF7IA&a&-~2h zuZn^umX!M*ehII1B3waIjS7)G_m|9Ca{|!lMNt zfZ2#qXbeG+Z}b_I6GzSJ&*_`Wv!@>cROfWkB&$7Vca*35%80QhBC8MZ5$Si{_q$5|x{EteX4IH$KMoY$$oqst$`xvJPPC*y-A zqyWo>pW7c)IoL7&SjkNjr7WUjX|i0a4yD*K)*b}&BY?QVNrGQ52No}d8Dize?^-Wt z4GLV*-XVwy_v=Pc0#|7FIyn;{la~cf0I}dYs9lup9_HU@%UHt420F+Nc{fy7>SH2o z(@rB?HCVzcjFJhrBBas+>$1IbVBnzg;4fTn$NzOqYGwyr7Q*mPLTF^Mo zY8>JHy5XB=ud)>JpbgT2PH?{hP!(F-Z*7AuKjfB`8ZL%j=Ue7}BPMyN&It+Pxu!Cg zi!e*+^0gLRlE%6FKGKPzzi9Y|X?V8bd*_z4L6+bJ-Yc>qsXq#XD-ek#7WnJV-3&Um zBA`Z5uIq+ly*e_lF?LsALe~$eyae~Xf^gR^p7CqS;Hadp9ulsX8}>USY0EaI!;$qp zPMch1kwPK)p!GK=#m~sv7yR|YC$qMfZ|j9kQ=HqX@g?!7BCqNCn&DTffDV{LA3q-w zX=SQdZyN0anc{s(5~E8eNx8$k>NuHpYK$(UHaa{g3tNwsaZg6>>nW0o_%tRmmCOdQ=z82gEK&B~u1&VCAJ zvokzzG%HBf>t?f1#$Z~*^e7%Zdu80n(8u!56mBMEv|pTA0EpEOCagD?MfY07XiPB?JZf)ZUkEbUS-N9=J){ zw|YlNXxR@jxfr7nf_ZcG-SF|}>W9F)dl}s<(NuKKy8yX=be-8-iWQgjYVdN~o}=ALWKdek zC#Viv@^5EgQy!twKH!gxfrRw>wk#2>>dwYcz0MkDnJV6B<99=!;&<=zTd+*;*EBtz zEuXM@ynG)7N0$O@-#)O!U3iXW4_?t`x4R)+;Xbc)>-y65Y||X8MI7hP?6ARe?1o%2!WxqoWM^Gw z@AKR21$I^upTV768CIE|qB|HajitI?@1%!(k^L9xm0F5qishnSXUvE4n#`bgIQQ-~ zrYR#YvIwWHiewg>{!uxs+9J( zl+y>nOKr zOyldHyRC2J2S-nCFFvQuhicA(q_~J8PH(yp)@IM>7qqGfP zS9ioNS4Xm}CXEzKs8%A|KQRrgaxd7;URRv}T+y0C>HE+z!2{s#Iq@tZydZDzoFvda zc*bi`pYs!hC3CG&lH0oQdOFOMe#<-f07B>ZrA=U^_|Uw8I(0{C8tOl!?zL8~!M$p& zglwhG1)Pe!mqL66f$$U6i(6kbKnSZtvL95|ulT3PZnE$B4+QG?*k_vU@H zW5k2v&LtQV{_Z*jF$Hn-=pb`(jZJXe1{317ms5A632n>IL~9G~hQOXXVCvmw zj!jE3VRVZ!hZVhAFO6#}bmZP6m~~cYEycr~ytf@_2BL;X)N%H6wrOL{3N0s}Kd8oZo!8 zbcYYM;QlsC!#p{D7sgL|!h&_&6k1P$+i>zdQs~6UJT~^#d=Q*_c?qE{vitkw*Y^c= zz2LTJvOhfI@uvRA=H#t5>k^p|IiG%`TXeBj%_V!v5XW!K3Qh87<4)wgT*Zt%D?-PDxbsV!k%|&kG#-mHQJ6>o8QsnW)YLnn!W$ zL|NCwwi%zO#z;lW9gxPBg4%M?s69^>-~}9;g5>2H+b8IewTcV{G_fjEznb`4a)PY% zgG`$sdm-`HFkuKi)7;;bIv^z-_J7Dd>BkljRvlg)|}bdpXOd528COMFHJI#nKSefyPI-#TxoGBj=HC5ch4B<1#DNBc#HQJ#T{39@>bmOpwTJrHa(h5ey)$u#> zCclr`C_ap*ernky8plh5DSF%D`L0HlR{8pi+Ev-X7~^!SgyTGNeTp84f=Td9SJYa3 zvPe^YAMjAG>BCBQSeL2+r0E0gZ`JYceqE}UffFeLfvud&wF3nw7>-SIt<@Qfsx)yg zS0pRc_nDyUsse>=SkA*d%xX&rf*}?TMsK){%PHwF53rVyW^{PprQgAg0fe)T_up{J z&H}Z$@m?^EhaIr@XzrS7I1+FHUx+3t_fuopxmptzzBB)PCG}q48?`GR6+BI&@OyMH`es@0w(x@4j0h0@B5bOsi|$u>hR zrW$CI8~Xxl+`iCL<&iiTVCr>Vr#X3npAdN^HujG3!>0#npl7*mqJ-{@9>e0)=yk(a z1v+ai=^mSEGJ}8w!@_ZTHlSDN6!4xa2qSVN&o<{rle@9;0!l8L!969twUHwtf=wPE|UBqULX6Li0SreijW8DpHAm6Cpv58nMf9?s? z3JKgfS30GgKOvlsH+>ZJE}IbdIUq>;+P5P!Z#MC?IixF)F#4(7{;9aWtG_;7U)s`MoZYl>L>T6i8tY=#B=-vv-_r|q z39bXM?F<^3C}pQAkqYjXMsi8jRP-E&w-(q~>bu{3v3bNv%_Y{xf!M!Jh^FMh`N4jW za&veDxRKacWw5G_nMSO38gi~Ge1+56J@!7$vdo&INpTrqzs&u}I><7=#YP*yZ@30I zkU+RbYs63*&}Af;qYaT^H+YlRgw+J$S6|e0{oPA8`@ob{b0KhY!+VA4PEDY;dH@&7 ze!y+UZMnSK8?9~f?V%LgyH2O+Lb*$XD_SwQLl-CR^z`~9NNrYE9D8K*n&82o-A2J= zhKRwG!b?vxjEgN<mSzY~Xl;}6RF9o_*5$|pzahR&wT zuh*aOIYXPd+-{H1mwTB6d&C!7uE%{8ad?ky^^ z8PhKGRrhX42s|n1F{~Zuc;{fY;I;(1k6i7>#$Tck$|*g4LX_!SRTH0a!JkTnKH7J7 z#+&q!WktP>xk4M^pmC0y$d1;TPzA&h?$}i%psS%vhVL(2dt=O;vn*a3=nC{FU!Jj7 z#oOVj$}9J3l_^w#)A->t3@`QZ7Q;DFlIF>F^4r|qk1o6jRHW;G_R#F=Jn8OPT|zD$ z?qSY1O$V*0&q;HEzHVs`{}w2lik{ZiAa$AWGNE+DGLVXO|*WLji9DUemM(7My z(DKRIJ`zHGWV0M;2HR~dPhFU;$0hooX z(pmh0pwE8U>0Z`{ITN3xzcr5K#W*gX+NMM7YpH>a%u=Cb+Z%y!(S0XW+$V*_r;4{t zo>O)cmNaIY%8?QW@Ei2HTCu?97-m~gH@`7Z+6B569QC_n+*&eTBqw5$Qkxsr&*Cp+ zSad>~)@->?QCI~sH>sRIiT4)2-C-Z-D(dc2q!xYbRHt)>cE_-@MuX{w*5lM>C0Ur) zvU*5ONN=XQE1U?{BEdGl@rJj0-$XD_bU{0idHkuPX>Q7uUAdET&P_BaPdpg9uB^u$ zBbBh1@y_CmXz#2%rOjh>V|zhs)xq|A?1kbmJ6wG|ugjhiJ6PtmXs1O!5+shR_PvoF9Ef8H@MK4-I-Lsh$9R>=W$HD z54I%8)1UdBW0Mb~xywtOe}mY~k08k{STo{!xbt?9vZaQ9k3k_NU)oBMb@TJ50)F+IgnF= zT(w1{MhZvTs04TKR_@J|A_#rL$dC-BY4xkez*p*f%B2(heGcVD_tZC;F(XoNPxj~c zG6j?(ohVn*8}Ccud$_cUcfSLR>S^k8P4|A5a01Xy&246WTqAEEL2XfGgG{J)0|eO~ zcPoylfw!%I^LoiSkp<}M0WJ>fWCNLYKi0Czt@YxZ2vG8aTGXeQDbWW=E2X6TY-BMv z$&K`lk`Hj;(}k|?hzmv&;vJd4`_r4CXIG|+Kpj-xX32RV(?$~51vuD*=dqr@8gdmT=>Na|)SjB54ft<({1?e}| zy~RoN4I4-|q>fl76qrQ=aq$fmL0(nm)4`nkPl6TX4omponz+0Xlf`~p9^6LlSXpNw zD!$NpvPQaUj5%*m#_-L6=1_=MX z1RcnBWDN&qBeUa-nV}&rbx0!X5ZT!|6LpA_KbLVxM=&lS`R?=g7G1tgtWuC**qO+y zCDGjISS`pFbs}?qaXXH`;ze?pAA&&>XW9JoqIqs!*?#0B@3L3wHs02kv=++X-n0Sh zw*T!Tv4$!rQVJ?7pYk1cSyg~k3O5&tv)@M-UcA1y-=$9!Oxu@nlnwyR5$!|U@A}#L zq;eAIy5>a&<240UXw^5Tw0rH^Jw@1~=1qLmH*?Oe$SWuY`|e1lN8mBHpldaX+$IIW z>RYW`Jz$6?9k$!O*VzJJNl@eg;mBs02Hqg~8me;r?dbm7o~E$2pOzlx6!qgi>$8gWUlTcSFJ z>C$-J;E;gg=uv`h&w7`@a*Er(Y~q&OJ@O@A${TS(KfTmJYY8U8xv2!-JFbAQ&Bn}g zsC`!YW@8^;jp{7%)Kx#?NneN@wgf-Q2OcKtlf2|!i73Z2k~h*J+pcrzAo>IQaw~g# z;vIWvm^P9J)FXpBhZ1yHuF6aoj`A^o(9avXt&f|ICAirx-p!i4WNnlZq)4r$5QrT^FlB)k01i$ zdZuIYg|nsjw_Wvpl!}kSZ|NY9le z6MC!wYg};P?7f$-u`8pHSd=cwuPu5@qr7*Ro@nx*wz}(7OV90$SlVUAxYL@deP}~; zdz@m9yoFR_gWVHCgv6m?mtI|9nPT5&$GyXu(!kk2`;sP>kGGnOi}aB)!b6{jcQly8 z9udQZ#{AxC2Hq{`-OT{=Jnb~bIF-9MrH^!$3kfT!K{4<2ppruc%^BOBp-uk%Ei@9azfc8$1lwg@z~!?1N_#I z+v05{!~5|`JD?RgiX|V7Ax34+GwLPYn)>UWem#m;6I}gC=L|*t@oeGfcIsmEhbk`7 zBYk{BX^O=N(NH_TX@G|J95L4Qz=m&2bE<*Ykg}ZqP?4Hx@_P>Xul+}hfk$lGco!6< z){AqA#FdbmcM-mIiPH?uOu9)LPI+BpaLX&aC1QigV-ijzJM)1KiVKXEsvKsg`0K=c ztb_i=9Fip5O?4N4-nev389`Gpp#N??Em(Y4Ji%oM5V>Q!3i#?5+FJ3RHc2eumc*w7MqGj$N zIZLJnvLZ{j288f0EXnv{-e|Fx^$jXW(;5kUNOd$f8Pp3Lzp!>bPA1oWDl5=$D9Ee? z@zo_yFq1bed-Q9~hStL08-8KF1Rdzd2eQW8WrTWtg4p171|_^~nDtp3@-48{`dZ)24P}2A^kN8(;gv zM)N^tjR*YJ)01*$OqB3T(P}NGcK!wwemvb{SJBA(pP2DmG&@!>E}I-iG}c4fTbb`? zWvct{qPN`UxC!S<_vS0%K>iWE$hX5Pjatv;8PW(kjRxD_Z}5lO^ez+6PArOL`lW|IV@>+Mc77c;GjLwUXawjpnFI@U7IDkh@t8s?Jr3iJ$H zk8V5{5XrN-7G=HIPWYHrX(-{C1h(06=ggCMSyt z1jAud7&e2UsD@!3e~CY3n-c;8d`RAFNU#u%Vz=!&QRhC+=`TKrzDU z=J20mk;1&x?cBaR?Csn%+M(xM_*mx~r8I2?(heynK?|zvX>uBL#(w z805Xg=ZGUimN6 zG9@}TDh)~{<0>0D@C9Kkg)qFWH=yqp=U|e5(TG*ptk)PgBQP~?eNbQo57RtF32h=q z#U#kW6mi^IswfyX*=jO0kWt2Kw$j3oXxhj!f6|77d&6}oW5H#HG#`HP2(~iAI8Sst z4mlJ6P=R47h0T|K?>Cg;Gf$aEn!ZvTjiuzo<+0bFV=)pH%ISu|I?mV7C&Dv-3MK;G z?)zkCF)G5y!-DD}-bS~dp)_~3Y0n=Rn5NYZ3}p|_k(D3vo7rsFT>Pow%HHuE84UCl z!0pOa-{b?kl$}k-`81dWlZhnT@R5NtOPF_CpGKjepoP27)SvG4ke={oN4oR9h~+tw z{(Gysw-5{I3AOqAJ+wl6@c1dAap~vwJ>Kp6QP}qMp;RR-f<=n{wewwpqUXV@cjYCu zDzlk*)UN>=tVxAEO_=?Lh2dVs-LSHtr};v;NozZH;zY*4pt3waY?3ikD?#s%NvSyl zJe1P!9I0bvCJjEzyB8hG7aMr$>SWKEl)-<9OFPsg|VQFxc7KJhK8Vzo( z41#r(FXMj;AC{vP6v?>?3=9!vswoQNGJdOAN6B-4R!Ib%;VTb{`{J;oA8FEP%S5e* zsq`H_9C-+L-V?3XupGuAP5<8HOh(0$d;_9CohJ}GWbfx~F-n#MOI%=A+(#T}oL|SU z0FrMdu*4q7E+F~m;OeBK=E7NMMz-+fHh9Q?R%jg3fTF%)QYb2$IKgQV06Xkl?)vR` z*(SZ4xwLa|*ymAlgD=2}n$1JKHWa5MBR*6Nx8Uy3zY`YEaZR0~qawa=68|1qXY1(x zG~+ql25@?+^MnY_Ck9vun-^>^HzFVqd-iUPRGi@4{?MtdS{^QC)$r-UXQRSpw3|5< zQ23#`S|5aHMsp6=-e622&5m=nlUFaJiDOP^d>CH*mN;*7CZu2QIW}XGi!h5*BuH?Z z57d+|C%Ag4voJ<1`6H^1Mn+z&UITj&UW<+@iD=HqT^1KZlawH_LQlzU$!Y+jH*+2} zF@iK+g;CpUFa`7b^N%<+?XMJZqXPs#(54u5UWX@EVLJACuIhPBQV`t2n)Xt%DNGKd z+x*-5Ja~%;&HOQRE9;)63pyxQpH$bDo-a~defjtGCVAm0Hlh=7Bzovzf-HyWc<5+O z0W}#Wm2%(WlpKt-`w3WI%^xg7Wsza|}t7uS1`Wlv#k~~+M8d_mRa4=9GRGGR$(8x#^ zeLg}I&VQ41U^~?z(3nm2tFwbtJotR#8cM4%0{r3PH#oY44v1a)sR^tYb%b8)igfue zGT&Jta0T}fzFs*^DVtAMoM2B`|dkTS*u#)mlZ#geO(p_LOqQJuKJt8l-E5wyc}CgO6?!C> zyHM>|5F22OnF>EKqX^V34wJNlCq>}|I5!1W z05W;l6lQXu2dzhkzwlU+win#B3gX0%+_$r*9Ax3hHN2TvkHMDER<1+dKH;oLPDf8p zj1=6AX$qqIm#8i%R8CHo83jw!An2^0rtd3=_8=N@gkNHh&Q_==n*2l%Y?^g~ z(d%1K;SAU8olJTB#<`-oH0J?cJR-iC=&6n9>GJ583*Myy{Pr|vH8l-7fPb^&W{wgm zMwFDuK=Rg~r}{n9$QwZXFF|=|+}A$JfpSaMGxPj6A5Q7Sh9{)etAV2_|4eyYCJAen^y zhv1$YhnMl$-D0Htr1bbLNK5dZknB$$u24_yy~FXc+f@+kK3J0=KG5Ut(6W3!xK+*1 zt0gNI(q5xKU4Dw$h3yYhHQ<@4Cy}IRtn_})+-aMNE1|gKpxzhE_(3V8&g7QXkoVJd zmhSX+V17(L$k}Za3Gh6fqC>Kq-*8HLXA1VX>Os{&Ol`Y^SFx24s3BQ`<$)A@nFK-J zp#$>)+sGl{hxm%b{#-6iQ54iYqr}W^BS-0z$|q~K_2m5_Ch^&y9e+pq0WF~mG7jk# z$G4b}E*7xnDl3kL%$1cx>RNrhX+sBdfE|GPtaC++G>Mvn`W0FV+8WfcE7=8*mWd@y zCOZ=$BREF(qBSFS1WGP)a3~TU%nu^8BR}^^-E!4J=ctPkgKpIVu5(S%_RQMSpMUh? zWE&p z>nYTY9q}RNz00ILaaL7Krrlb~jN6&ezB$of#4TxmELG zD4#UBZ>`|%J;^qD?+JIuG~*r6B#lFhs_^D0r!%+@s_62a4^i6`ho7{;Q78LD zFVTdA8i06L;Wx$WorM&AAarn>i}tYd45ufq3lS%XKQ@fr>hHX?Q8;twa;e+)weJx7 zyC>B8)fX?2lA|0`BGE~rc+*%v!bwRz&KjgAIC>ELTCSX(=HX((zcrYGSOL)m=BS=o z4I&d!Ny$r0MMkM@pzMj4b7OjS>?_MV8M6mb2R`73GD5RFmOVPSkJH*gS6F0_i6P}k z)a7&S)bC_sX(g7R#+7BT|9fKuDAP zv5|0&-hgF%TbWZRy*w{|U_*J5)*SLIT$bs!X-qis%H1B+_pJU9?`9LMp|p_T0z$0m za?qLOCA0xgN+T1df!n&_bGd$5zUKesmGn_Q0q>!+u^>H&Apxkt5O+n7nd zLD`rDWAybiM-l<~@8M$2?2)k3T?6^~(btCy%#6+sG=lk_G)c7a<{Bx){wl^{G)e3I zYCC1=br9zbCq*k7lCqrzjGc_^^tB!4M`i>}6{gpJvhNhvI0Eu#T8O$X;pvIq4gNeRgpc5!V=rG= z*`!Rf`>1g9?*kHt%dstoYBhUD0*Ur7Iyo&DM-@?_ftvaTJJfZIFQNiy< zp`uhrE*ElsOVgfc!VDZWM!AtI-?zK+`iCCJWvPpul@fAp_7lkda_fLL1k`H!hJLE- zrSb-yLR}srJ`1E(%T72Vb_VX0a8<32Hv>sR=WV%L7Y=Xah8=_7wzujXZ^hnM)@sa* z4o5c_!uk2yWYN(o2G^@cwnUD>0ELEb`~zns3xD45zSc|;`(-!{opNCZG1;9dnD`3mTps$0ey!RLOa!fo@MU{0r1F)40izd* zhULNV2%6-92n#vF2dx=iw`;IMw|Fm8++2$*1~U(GP_d;vlGx^PEq&&p^{Wu+-7W~>AnWd=X^W=wFHU!t7RL{()W2+tS>2|-FaL`;Lhn5&?0h@JO&#=qen7@ zGRA|DgO4QwyzgL6a%Nx7Ol~d686jG^0m4zHC{*bu0D^T14>cRsj6;jr zNQOagNfGSiZ;Mb2qWiewndZGW|)BikB-K|$}lc{8cibwKnRklt4 z;P)|1tq6=VobO=L9lKOcibErP=r?86hVix$zPJ?n>SB-NBjP5vUPiF!U;vFk=w1+d zk>_#rI2MrJF2aa4JN~(E6Z{y#Hp|$QhDXwLX0b+>*&7k|jSubvfkBLCSKo zW*2Xkb%_e3^(yk-Pd)%ZPYie9+u&O}z7$q`% zVnxIqizleFhfWFC71e^QikEESMjceK!Kf{3{)fwn?sfB#fxC!w&ST<`{HyAdO#;IS ziWOLT2#PI6Wl`ZEi({%v{zs5DKU{f{;5|{pYNBLm8d4johB1!gicI7M&lGq-0t1Xh z$X*6QYswb{J91v!TyiDxsi3dBia7&1MJ8UTHo5T3gaHf03cBIaIi-Unjv;oS+D2=l z>p4gZUsb;ijo&e>3#KoZEnzf3l+QNPH%%^-JyB^SPDim_H9rY=ZO?r`Hp8oPdihP- zY+;x1NFbb~GsjUzISqn}yO0BxxQ;y4x!2(3Y}`acz0zrGwoIhDF+zTj8( zrEG$D)x++Zz>7wIeSMhh{UnagwORzX$tUN6RSz<_=Z7i}&8W@_Z0C!^QaIKWOnAx* z(;GOB^W>1%NDRAk3G4r?M;SI}4?C-t6#>x5hhz#v)`-K!q#ikjmYfpgSr2`9+`Zw; zS6>Kw(O)LXlH&NfXE@Qw7f?-ac?%02W`?7nt)V~_lR9CPQl zcp;(SNEhKZ9Q@+gHrY3fF=I!y^XiN5Z1bY37>mL;N8hkMCrY&nI2;#6V9k47aN0|L z#q4I7x)w=E(}{vQ8Ahw%Rl(qumE`=&r`Q2Z5~#NeC!*oO*~pLJU{NOMC}^o@Xs9U6 zkCA>&ZQHhOS9RHTb(!5|+t_8> zwr$(Ced~WB=FXX!^I>l6l@Y(lTsyzyipbn6*M6Vc!jM(l46seycF6@3nF}9Ryvt(H zbULd#5}?WLvgVrGIN~BzhbiRWU}O$p_;c@EZ!!6&4XNsLB0vkU zlNi%IyFFq3v`oLF-!2_aWIq`GK8#I#lD#XH)@_+mjke_*XY>2GT@eTrHgv?)`F+pf zL=2fs@M1J#4QRc1cR~6%Bp=8OA$N)H8n0lglFIU`X!}cIoyBK>O299I@#n@fg?K&X z6jsQ82*87bn}i$1dmb0V?qz9?N8?G>K)~q+uv0H+9Hmc*B~VWU^9r4j53Cl9HQ|<* z^F*5EoULoq*r|CNB$OA0Dn*kH|UMa8M1s%Z(m(47v*-OVfWh_O&==-v#z1 z$%K-TfQiD~<$H^Nuq^fAuL~8}b>o_X7!C>dfE6?kc+$zKaUPr*4>t-mt5xmI;=@85hCIE&J{MRDkD4g?6j;x->*08 z&Q?H=mJD8o(IEB^g)H>sb@vp-OhU!LxE?kZ(4t-6DEa0r&L5G&;PRQfc$6MaiGyv{ z#?S;8g#_cpzeP2y)C5ehFsm;v-!xt|eqng0kMGJK_s37kVS}V^rBwAvj)S+{t zx0sXB$!f+jk(@Js!F(b=AAYgDi4O<&z?|COb3AZtT)(hrm$OnD;F2MD%Txz{P|z2n8|x1QWD1jhU9|s9a;U2^=U-J6J+@A7QyxIbRnzcC7CS7_CCNvi zRoGE2ioM2Kn0U+8=PCO3-us8pa{U0R8~$}J&-q3l1;*N>an3j z7X_7pk5X3Aq8s5uK2g!g$-xzYw%}jQ)KXH#YN@YLFe##5?aWXxxZBQ?$ZSRuCT1LUl~0Q_26iFq4%*&TCD2HVaE_v(kMiL3 zViI!V5PCpix`nvbjtrRm_Y1Us@Fz`#a*$0syj&rirUh*jvCl##GqFoH2L1NU%aWKO zdql>Vh%V2OuD>%xtwznHEWFSxW`w|9)>b!7eF}M8Y+6y5iACQ`Opzl6f0h;Fz6G?J zCg5;}TG3+1-Ir5o8Lu<9YwYFrNT^!w?JRs5EkVi% zvi9#ccqIj7wDqYLirvIr03yc*idIN_Gq<6~nzdqs(MUbTD;sLwuXBuB(yNk#`B$T^ z_;POqh8$j3nS9&=7sZa@@Sv}xe3S&s!(9}Y5aa-1{F~qV=Xw_b-0bE|)+6FNn*S~Y zY+t-H0#j9tbVt;Ci+>v7>3rUw@`I%2)zJDncLwevY@d23;5 z(e9n4eU85C%|Z>Fl*w;cx?-Rd``w!dB*jY;r* z-u_v(t~bGzr8ZulnF|2gcb?jD;`KbvBW&5U0iG6@6M$GzCWQm*7(rw_Cs>MA5e^HU zc;2NMxV31~7`EU5hYNIX_Cre!CRm1QMA+m@nGrduQF!QD=XW(Wj`efn1Igi>q=aba z(9~051L>y}$;Xf;fIIt*O>Jzto)FcF?<;PWho-#9RB(Yr0^qh|*MnmGR9gDkWmGjD zS=nDois9{Jw5z}*dm9ERj5I8dq)U$f>i(64YNBk2zI#j$<+}}X4@C+UO*#|*H|}q& z7P1`hGrZ!^SQ7a_Tt}8*V~@5>ra7i-@HsAQN9U9hy|*{T8>*#@j|+{^)#}mafJ?(q z1JH|z7VYDpM-RFScA1871Oh(V!Exm;iSs~R(9?L{5*bhfB0R1A3%v@V0ZP4rbX~p% z{42g#+CfeWXjE-2iZ6qj%Jk5>PAUFKMK&^^y9Q%J>2LwGkKWhw zvS(4zmaEtejCbf!=FnD(*wt|mr6?H+mXKR!fjZ3t3p>vN3vU)nos&*7lRb5J3EV(v z2cE%004h<47i@*Van3>uU?(xL)3GyAwQ?q0CtRlxrr;|b^fEigTDjlhj?YWOqGM0` zqm7J^qH7fWH2abm^h2$po}E-_BRa_&++eaX99NS9YnQ6STu}kU0zr;dsr@reB<%yVXur4FfL?8;8zFS7`1FsA(!G_B62`|!w#FJxEhFaDi%KnlXnC_guDuXa=80^^C!_Na_2glb9M`=r^K>M|VteX`zC-Fpf6@4Se1rYy{jT50iEO_)in-iS)3>hES)_`m`5p!-QZqtktaVjLlWuBnc5A3}a zDF}c>9Sl#TQhqKTNe0+t>tc=>k*R~(genOXxl#YDgkW|tnWX?sds$TBUr@J&>y}nI z(7Q0)>s)m5UW!{8oG&a+S#Kjnq<3}9M5oldiV4gC`-uDi5_oQ|(aw;Wzs$|HL-=&|T8-`E z4Nr1`={E5ChgaGYt!ls^0-apEGGt3h7T>3`^z6L_us#4KNx_lOKF(Molc?#CuS53N z#xDlv#)QbI6G>A9mdjNPBis}gBaF%tQKm_~m*1=_Y(Pz(aCN9^SB25k^sGrxg%PR- zFf97x7o(2_`Amd|dp_4qU`S8{K$HH)794QeB35Ise2~EithQfAfJH2Apz=H|Y1bMz z1G+tXJJdKPIt^^UOIyQX$aKnxa~8$PcISJCqG?|tEQ`b#t4U=Ht)RHEw>(* z<+2-(-UuR@&WHJw{VtOyf478oyG^K~mHVZV4Gfm; z`xZAw)T&0hRE&^ylaAN9T9nOish6;FppPk|8a)3z)F!QczWcd5fBW7NSQ;I3!dpOC zaLO5Wnue(?dTk7bLYaCj=P(Qns{&?tvO$@86$DM!*CCEwU#_eJk z|N6*I;w-@%6fSr6WAupVGbxbQ5cbhLcaLna!yN%f1n)J0M@Ag=1#e=uuR7udWFJCV z$RVLSN5TM#yp->PX>9MAUE}Fo`R@xo^t~5Jm7@I;Prlh0xApSr4V2;R0v^BTp5l(^ zreVb|_+_Cs__$!4fU_UfeNGAZ$2U(sZ~*?xPX%{-0Y7K2iyr6QRgpM%lj znq(7k(w4D3A9R(pG_^Jf!b~2JyKyvY4PB<;0AiCO`)q@2y$-?+p+l-sp+;KOnP%DL zMTZc7|LD+74$0R-tDjXQg6WKS5vh`_u`;`Nj*r1Y&)F*NuYC~RdhCZ=ckt`W$F5VS zx}7$QODj#E`U6$m4u3bl;O19f*?7jfqHJG}-)nJf>dvFFm|& ztTznP-5uX|t*S9+YChpSy@jP^!{>i~ZhlKQWh&2{m`LGaFNeXxBfC;VG*y(uv|@o& zM2iWLs#Q92e~!+=xB5~2J$s;xNl>`)%9;sEdF(X=r zy`H%EZz#|CCP+Sjy7$o_^iNCN9ELByIJQ{PWWoP#JHuv8ME30VVPT+$ew zDn=<6idzo$E_aEEXOSLj{+TrX9N^cgS2vq!ooRdn92EFBWJ=7Y;PD`7WhJ znOJA4_&50;no_O!WHcHsVBsJ6C6oi0;}bIb$vQ==Dt21_mW~vv#b`m9u=(Pios04@ zCG{*MZcD7CXojvaNb|H6qMWn|JWO&cA?{>PuLc?n&$=5^<>nK}#t0g=-%VnziQq{J38CRTL|+#oMO3 z5Epb_Z%@Pg=}jjIiwM3W9@Ev)-vHf*l$h0np#TP#b?0@E+G;x=<|mJS6(jKu3~V!M z)<}X+qp8qdMSPsSiK)>b2MTbf&jVDR^4jbbO}=0U!`+{lgqGiWqFUKRhT3h&2l9W~ zV3GEh8(>-Poq*Z3L7YVx2052E!))~U)<_9E>QMa zh3sAy58+djx7yM)G#r7ap~tn|oJ1t>`(RsX=Ojj*I9-a5RI|zeae%Zb7dL;3-i*Ic z&^ zqg?MFD>T#m*b#i}_0HPafPQ|zg9JafQM6)MMw11#6DEvK^7rz9szdIqW&>ik*t~E( zlH&avSBx9;IRf;r6>ybqDjHk-Xwsi!9lOBhLz7;)a zYwMb}HMgU)B1NkGk*0#a#)aLH5jS=++LNs6_wjql+nMZJsbJXgo z*|px!g8xuex`L19`4Xn%?To*cLR-hCDf~jEj5ow2f<8OkyX>xXv>0VcjFeVKXRI*~ zCikc-VM)y2o7-l;pGs90;DBa1fg%n0bT=LXt~=>%=j0y&mA6aGaT=S(J6cX938aU2 zs|6z2jFvo+JRsflVlk>zno3PWJu$Q}_=u$0?nM*!o;AulUaGgJdHG86`xNWvqrqJs zv{luGeW>$@d|lYZrdOO{J>_Iiu+7P@g>@FnIqVMcj?8|?lL!|LH#Iqy56?I9$*+$P zMPZHYW>mQ;@~7|gLH0($04bG4z8FS4Yx(>hOjKYJatXr20bx7x-%Py}443xrX*_%l zf7=($CEWqFEW~hk^|mxGg!D^eyMaSG!rwRW(mg+7!7qH4;&|Of)H?>K8bO%qEwni^ zi$`peZ2K($=dZp@BKVkd>Ny2SG7s1iWC+0x^X?$Yk2rIv*m#dSy2S}cb9Q&w+w5=112V7IM;$}wJon>1y7%LqbPi8+ z&q+^7Q+S(*Yn2;s-L^HQ7F5Yxjg6#lwiAZwIw3EWnOpRsUHjXI~N0ng8*GWmH=SpBXeA- zv|xRxeg0*_#7f0whHiQ)UfGjtp0Cu&__*F|+>sSoUKW>k^)yalrG+R2WvMEG2X*jN znahnUv&?_>%l+J@dSLP?9Iq>13+lAZjD}nema?>#^-qPdU9`yX7`mq&e^)ugxp`!8hhfz#f-wmoPn2FA+5FPKcmM#7V-9_o+6pc1RIA^7l*LBLQa1=%@LS3MUd08;>w(A9JZ&*oXiUroRgDzxJ^dxKeMnL zlGEjpu-O$pH+P*v7_cOfzw&t!b|#pzxEzWgkDH^Yl2KP7qMQ~o{11Au)3^v_sX5ph zS^LK2d?s`1hy>jPs&DwFzYzl#bn>eL2NnpbF}}lapPszd&JXfw*`>6g^I1M=xneUj zlaiAP%YfKcvyP^e31rq!y{3u_3Jc9|73E1Cb>>ogtcw z;i^6qi8!~Yjzv$r;U@1l7rS@U34f{QZ|IYf7C&BW)=edpNyW^!W3AT9uTeK8 z=`B;!8n5Ax^lMF9IYShBT)9&HSVtO(EiA6J{e%@fmRZkmikehpPkW40mgw5!Zyf_= zP3*(2S3YD-=Jy1eQyJGa732KfkB2K6A7V|RoA=HayKVxZwrjT%?2m4>e#3f(oxhh{ zkGlAtYAsXBDHxYJ6Q|n7x5l#)S_so(;3MVvIUMZj&Ylj0<5aZTEN{USPGb#pLO?Hd zM=lq8iH{Rb@c$^xXh8e)PS{hTHSDD@H=|70_*$&np8Rt@ z>(Lm)A365};PD>nE(BFPEulV2whMBY|x$}pyP)VAQ3=BL)D z^X)~@4{dh)F|h#3M>+M~=$t~sM#n<(lh;1f)v~zJ zB^iEF)xbJ-O?XJnw|V`{^+y4zN`+&fa<(g0O*&Q@w>uvaVCqNNH3{nRDb zpA75~Oj;n2T=0t7cEUT+bW3e<;^|n8f&cCIbH|VFkvpIO* zi^ui7FTbfSWPatBU3E^kzIRPHnai2QPsk=ik&>baGo}k^CgQ~@5#~DrnIb`El$0o< zZ4^GWHa-F^9;<5u2a4seRX2929|m-leHI)_>CY-BjUDHEqsiV)aXoL1%B4ILrhS+* zr?s{|yZL@^`|+fyvzVXltY%MWx;}=6Q*{TdU;A0T%}*n+)9fqh zNo+okV5VK`i*Ph=@t>k^EYEYjKpe3=Y2?J=OWZ}0m$-U>=pIE5(=W2mJ~C(0U^+%o zG7piB+^ZHy>7-KPYd@_x#^C+2MU4%@6I84MvL(@1X^HEK(-f;VOLcaE*+lP-?DEgn zVkctaXRGyO=S#V!ZErgg>Q)b83B}~4T9#}VA7U%h%@5xh^R2Tj&?VW&UgSJV53R&z zOUP4pcJXWglw)TDW*8YXOVShcs2S8#EMP!j`kKexO59G|u&kBK=Q2)04j>jo9wegP zRi2Bo6|?8Ep_6$G$3nv+8Ir@o)3j27a@fy|)5T4DfJOPvLf4HEhDv^~DN7`36dR^D zt|$Ws(Gd_Or)aY}s%e785x+Tip-Lr4_glXE(Fzb}&8enUhNdJ9g93~#!UIlK$vh*C z$BjwyJUW8$C3O7OfJr3vA|W|J$aiH|z%+X3Vgud{74)!_01xjBSpnOrgECr!&o{X_ z+Xi)<6$a#A7YAs|{&?!*V8{C-O5{&!((kS1F z)26@lsf^Ftp;5$47NYL6$_7Sht2}wQIG3vvL~-pDm=$>=%h6WrUu1K|q7P9;k92g3 zPw=(&XS_lxURL-q14xXPAd?Hc#Yfb+Zu!wKliOyT8r!MHN{`4X78AW=GY@zvkw{VS|T-}HV?`F{A&_*u&FhM;%4y2TFe>pmIG z!>;RowGIAtuK8kZyqd3}-)8j@m{BggY_6THU-O}Fuk~;xez`l$K9xPY(NS=e$7j8a ztJ(M#!>O?lsyYCqBk-39naP3v@UE)2^%eQcZ!*Qft}F0c|BfuQTeA%J9~|LCZDdQf zRwIvPasRWUlqB2E7GDf{es^>V(JAgsB_vg!RKU- z#TLFPBZ#Ww{4 zz-VvcXLh||E@|L)w5~K6jYpeN%%y{i$P|GV6vNG6(iq-UaLSxnfr`)1&!I!qR!$wux4x#fI z{N*OA0PJ?P^<1Ca*)^f&p8D#XxM+R2YBBFUHg80r4abtWz4oEqxsGHTQna)K9_}DmrpwPpu#>rrrMbgO94BcGhC#j->a61+ zO7jPMR;nN&35TtSG?r96L4vP-kNpPx5A>Wr8*!fIIQ`)uK;4z~#>PZ@gp9s4r{YAMaMT&^rO zfSVq^=9I_46g;1se;Vf4MkRNOyw3d@<2)I5y3XUz%%;y%X)mAe#rB!_GYb~fbaXh5 zw;NXu&;2TQ%L@3dR}(?+4EP{1%L7sAmT)OLM|7XGM%uNM z7ey{~ZuD1$@8jHQl5Pf`I80g5c$`{7?n554%E_+IGMPp9rfjwM= zLIa(IehW5OsnVZUbHTdRY1OoWDiWp^BOa|XTZAmGa$@Ax>hL_TbARkq9fK>tR&9q< z93^mqqh)bvgX24}(-T32=fQWk{8wSU?OG;EezuiYw7%NOh6sl>%k^l~6IQWDp#tcp zUVL|OW~db)b3tq)qoD}&Jy!s8M+c!02dSpjN&iVO=q94Mz-=9|LgNilKO?^$X3sS= z$zg(4XI<7WH`904%yyy}qG$O#P5{_Hq!|8*Cgo5NpykGN0WJ)$N?W=q)^_MDq zqWEUMkB7~9zn;qeF@W>C!}C85WriSh|9PnFAIYA?G4T zL^}h26f=!!(OAo;Os-%OVKcMjw!C z9GNddL4r;{@rXR}=nt3!-Lt1Q{%aC8?djd0Ev*1T#g*|FQ4sQ8YY86W4jy2*#bxc# zFxe;dfY_@E_*;2D*0v37`B09-sWQy${n>Q^&q550erDB z7YkGc`yLx|!({0HTYQL%QnZs<->URZHCW2La2{uWOa|7V&BuHdLx7k4=3C?IwwK_8 zy_Upjx&uPbXSZuGruSXsJ-UaPvJ<>Cil=EfnfCLvn*U{#15rg@bmS9~sW2>cP9fE) zQz6?Uvi29>E^b6Q>g>asX80FADnyB5)2 z*#3Si70iC?{wsa(dUO3zwg2ktz}kB0Ykb_TYQ5_;o1pdPLtRpU)f%@jD_in)%jaEx zoBQc1V}(OOsH+v%(G-zriZ~R8OpsS{GB?6TDU*aDC#7b55UdVy;4CK7%H*JWKwUG_ z+2NhvWEx^hEKRAaHcsi*vCDGS@m8~IY9#6Q+^1Q*I;MJm32a*FxDUK0rz%*OrIOw{ zNKD(&C!%&T2R0yVkPII;M{m%2@zKb~!>JT*fJ@;GDP|Wvl;!*0Vf9LwvYJ>*+6aA7 z-XXyfpaAt-^&`*7MYl>K$cpu!b^oa>yx(SssW~utML-qdmUd0L%$Grlrm(|jL)_kd zXmpPXLCLph?smswhAzF zIl|m<^sCyNR$|#QaKbn7!|UtMfx7$~Li?cSjHYIn@k_qv&;4*;fWdv=`4@JUiwkt0 zw_hZ`nXHnTi*9z_Gz^FyycuK(qw;#v|9xY=j7eT`I>2~4&6_rNgp!yD`0s*0X%K=| zH`ZSOA)UnqOB$0BXd=Bv-|0T0sfCuYSt%4S^oibx$%>-1G7A-=@zM7ZCc(X6rGv~Z z{ep#kyNqb8-kD|*nG~TX3e2R(zzRZ!%_*fIr1H7MXCs%8Hdu8hZU*a-#8*)yttN&B z213SOj-6>iPCzbk^WS60Lbd3T`sXX{j7F7{pxN>na6Fm=o7{op((m4Y5GRm?BkJr8$5squi@Wt17GBxU|z z>0RJ2ie#~|vqRaOt};1%yi{5RSkxEm1MP$Rx$JLth$yRUn_Haxs7R*LSs@Pl36Ys z$Q-2-naw1Q6?dH!a@8TUQE2w!j9bxkH|R?lg^Z$gNC36usl$r}BzCTM2~7jhz(Ric zkBUa2M=9E&SaJ{~JOHzM3V(M}+=S6L-8YXPjRC#-i8LYzf8P<3KgDxhiYi?0k_w&# zg%SIo1`(SpO#B$^EBY--u#gtGl{+nnJza>ld8`zdn$TBQRz`K+OtHLQIYLKME{^gfRCXJuv z2&Ry8p&dTOjq$LIcy+U`R7!XLgJFUT#lq}f(IA_vlR)R%bfZ~WvP*5z?O*chw}{xa z**xkZ1hTa>9dno`f8NcCxOKGbaQq~Doz^pKHGUluY}8&ITIbcz$#G0tUwU9R5%_`k zNdQ)F9{0L&HJ^Rju2OvLJKpD;eZyZ(SbjZF732cnU_8OL1TDESCgwXzhloB|76kzW z2^6vJ6d6%RgFsc7Kv-e^;hVqyrKReBh};uO+Ox{=b`g?_cs-hJ6+(Inn;|wD8cP^z z$9BT$*+Fu|9weo6Cv8E=fAJumGDBeuBfTcsbEbwucbvy>^|NC*4N0?$b4=Jc(TQ;x z%2WTnUV(2tV?;~6<4?H*Ot!N}6Wb*72F~5V;?Bq)hCT_^6U&^VGRKvTfW%%eA`e8M zR$Ak?1rG}(b`n9nd-AYTkY-ptbT!2d=R3m9gR3@Wj!_lOX{8zL-v=!ScrLKiy1s-{Gi88($E?tfM9}EU7$Me=^^HYe5=Q3^D zs|61@B} z`d-LpBJAh2Sj$&*igh@}?cm4Qyv))JYu8~_Z+w+|p8)k+UkwwL$UiQY%R4#&62Zrk zi^^|qBW8T;D$@6j=mWDa+|!87q3Z+qwF)1Syd-ymvY|8saC_>GvWC%AWIH|zwJ|tsC#<_(jZBdDDQ3Y#L%6-T)2}d%;#|g&3uc+dw+;|ObRJg%* zF6s%gX|&oaA0j&^?H_^!m9g?d6Ur|sLd^h~5nA;zNHDwpZ7>4vzg+9l_UH8eXe_6l zJ^~3$9fbxO$oeNq-APcjuFGWEGTuDzI?(PF?@<7^p0R$O&2QNIqR^%ROv^pHmTs2G z?$FJvXFzXD1LQ}Zlgf0W5%<p`s48Q9%O8YB^+_Txtji$?SgilebluEO4dGcB6;odPd9&*Qqr|TJyS}M3Js&O=woAR;0Lj`L}9To(Pu$h(~q!XXs0Jk;e{;y zQe?$td50{I+u#gEQH+xf710aq0K&?H@OW5CMWfm&@(O8sRLTU!$3z>HLNVtcV2F>r zvboi1`i&dS(437(vF6Yp%bAfyx7D*n$Xvsj^58M#I#!frpO6;Y8HI3d$z;>mY)Ht3 zXy3#96$Ih;gk!P!y4p_wm+9-Xd?eTIy4~%8aTu}~Q;GMY`@K8e1vH-fcExl3b!UFv z5#?Jr2@;VC9Y{?;8FGz+u2qRi5*ZOi1wJ2lA*CE7c zn~s}7GoisPl2tp{hin?>Xl)@?!SGt%b9-}pQaz>sE}xt&2~S>0O>S)xKsWK*n3!cX z)!dubPo3Rhq)1%bQRic?qJym^4FKI?l_$}7QiW) zsUp+ms(M_rATY)ojmn&iyfJvU##6mCGl|dZ&YniIAknl5j==RJQlGqfaUttfI-mVgcXZ)sMav3OkRTlRY+qO|I+PxT6T`WuNcD#d248S|h)Q znF`GqSpNHuo}iH8=*w=wZikmiw=KWpOMMc(PJ&-&bb;6?@mWT97;G=Oy*~f-URP4eC|sN?FZ>X^zN33p z9^{?janhWSL6YbE$=EQ3hFa9?V6Av%^45&agKb%vO^SJ4lZLAvR?zTyG~=PpVPs8n zoGLgqakHsa=}UAN_{q0YJZHZ@-?C@QFvEjIqEyZVAZwYd;Ki`y6rtUqvy6%tsNATt z&WsFeTYhWNGN_}MccyJw;c;*mT1gZiN&Pv@VCGn?sM5+>i+xLe&^-)GFFwz<@fPwF z^XPgDO5aS&Hm$(csM2T?PqHr1$se*ybpZrKQ7=ojiep{XJ|{I#qLj^t4~QnD5t78v zM(ic(nic>O-H7qxu;R{%d59&5Gx4QFlO_1W8N){Qk*M!TK=TQOIY&Q^L0(S50sokG zlq7*H1bG2#%{&H&l43nG6S#pSJmbm9N~X7j(<@PwqyrxVa3lhw?@Z`vFOpnHL9?o) z*9gbyH!&P>1$HZ4gEq)SJXd1zFBBwFA1X+54@g9(9v_>Id6Q8KAGw=ht{5+>c%Gen zw@vvjHSpbRzG>Xe_sN(qre_zM$+3I!ZsKE5NXcd6>5@2&cZ?5uVN3RQjkWq=!Ealv0FYAY!(Os$CLhg zuSkD6?{Wl95>@;tT@`rFZ_`E+Ocbg!ubNs+>Ni`UccHN5_nEEGui2O6-n0>A;sN|0 zgI7P1Fgmg6;~FuP)kYwXSo1enz5z$nizcw4Y~HYSBr|dzzcwpp%8YXAq}2kosKBku z#KOjznPM5oYOea8>LCtZW8kG1TJRpqkH}YLIhQZHxUdbFzz7aJc zr!bl*jIAXC22xdpn(JX6sGuj(6&!CZ2*SwF!blljnMD4-)X*q z6$Ey~+3tV7mGFp$P2@}u*jjl0v9Ck31n?jK_J`Fnrt>cvVw}zY{AV>#p z$mw}3T#X=FAfwU)!{&!iWWC**ED=}y}Mqo?oTfz+HYIw)a`gJ zM8ydDp7!L&Jos5_`Jle1dBtUO^_t8WUe~isE9p4E20N+F+3(i=V|fi_h#h}3l)ll1 ze$ZxinkVP}&RNAq*U-X`GV|Dzron^X{lzGqH;x!aBf_toN6B^`6dD7cL_DV0L#597 zdWa~c73d&Zx~IaA>F+~?nT|h*SnI%u#fMU;F4`>Sl^37{{#>wSuUKklU6!2GB#}-M5J9=&N zQx0)b6iY%n6m7SsJ#)9}9%jp`v^}bU`QCIhXh*gOo^U99_a-X19rW_3_aP z)ZYxH(lvq=i6rCd_xD%h^fcpv-l`6}^^!5hqi^%`owj*HMIPW}`}3qks@_cC>(`>V zQ>c=TpCDyy3C`seiD8L~|C}^km%+{a+#$LS4j)J>V2)+VGug8=AdETKjUwnbkR&h! z7gSANk8rqLTwG7^#clu4ZNG)4L8VyJ$L4aMu%cy?)QWYvS%$^y9v9HI;)vR%xPI=v zTAwCwZ3i)g)ePLvjmVT6g4Q|U3U7Q{mxUQ3{zP2EN+>EdZcQ-4nJbkP&EQ`;jSdNY zAWW%PAF(4|3*46YCVd5peFA&`F1KrW-oYuu+KAmMV_d1fFFfA# zBZ6pB@_F^b_=UgK;~Zsutfne-)cLAPk6qkgNpo*_Pmi@&Oe1B?D(7mD` z8LW^^%bkIdB(68nv|C@-0|TYYDV|#Z;}wOaR~PkwfIA|6id1 zf0}$?eRem0P2}jqw%h$(`I0gMqN>xcns-EMpNr!V#5(EFf!ntjz92fB!0>r6e0#Bz$Q|_6=KeP7_WAG(J)H%ISDUhD@H7iN6)ax>foJf+5pO1(d*=2;#RKntVlkpBb_P>|or7AKFUzFI znVY?<;`JjnHBwXY9dpw}fstQ+wMKmewa+WKO`3<3KC>kx zDk_4Iyo7}sTC{9;TC5T2P-5ml>t%>shvmBAen9__mq~o~L_@rAD( zu5Is$0=YVd`~$m{k(S^vyo}V65v&;$@hDmB3i+~YKPx9VVtA7+Ks#vY0VDU46 z;6S?;M+J#zAr3YW8pKyVeljwVt=gz6k$bZ6$n%~^g_#W85v&XMDF};uQ4INk-DH}5 z#h7tO>SH^3>Vza2VTLxs8*4f|o^&Lf7^^4@bs%w*_9je!jV`Aw-Qdhq9U1s!7)aZQSx{(e7_zO@f|`q$VD6WH&wc8eH#fjM3HTTm z&9$`UGf~{amx_VRT+*S{IYw0Ky_Czt@h2lM<2f}k?0OU&rhNtNX$$D4knbk*dqWsm zRkSFJ4!xg}Qjj1OG-6jldgAyB!{GW%=JzaVb4IZTl;aCV;MipPEqOK8aCm9t_r}_|A97OP#s{t}rd30boOY6&)o<2^AM0O~M>)UO`o(_j~QsZ#W2s=c7ewN<@LOaAB-UrbIaoLF# zwmcT6`%V&k(QDFjbCXVo+pyquuZERh)W)Eje7e2L_*=HeF=OLRACuK5pgP7tt(=7K z{yX-Vv81BXe1V9ZU3yCd*E3ce!4phcF@$+okyyf!S__&Rs^>A7Ruj&|xM+oc6XJ19 z5+@{RbV72S_mk>~YFG1e-IHK_`0@7oBoENMme-&UTc(r`7M;Y=H*AvI>&C{Cl1-zZ z&j*(s2Z(!CdQZw8x3|8=9zJ;<)GzC1;!pOzDoaM&VR@_xUtk2pPg<|caS4_R##2UL zNdK)(ZL}V*{Sc1M_YguQ8V;is$!C<3z*Y%rtHP!%5^Pf|LKE3@mQIOm?$IVTE%=A| zOR#|Ikq)iQG6U82hl*uWwLJZzC2|}!K znu7;J$3Xh4n@J=>8+b#*xo}!go|67|aKPv0J<0y#>1H?n3%U2pOKmNPUxC$5k46GE zgKZaM&cinWr^l5blJV6{4=rcP2VTf{X7~QD>#2}9#C3V4t8M#V?!`5i2MQuPu;5cC z=<87e|Dr7q6hwb@KA2;FNcIqT+8LmKM|E$&{d%#lY0ZrNAG}tU|K_y{|8HhhRb4?! zOrA#M$Hp{rvZNEXw=wy@9MAtI2mc_RKLqEG)G79VC&bWgHb^>y<|bPOD`o zw>$7m;%MBZ+;Sn10yp(3pXtqWshZZge?S z7FW93?dKMTIGG4nQK!x2L#0(_HXwuM773*?AxCodH~QI$$}P;JUN@y&GsiY$t+b9u zlcWfgyAA)Rh$!%is*S)1ax;RBGD6jyg#i$^2KYKX-L)~)x z0J$tb5H8n$q+Ir&f|>276Dt?XPsQ=$@3OJ{^kU{@{@)e*PsR9il!fJ|V*Ss_SXlo9 z`LeS8FUHgG2D(?!jT>!2`kF3GVLhJ3w%U;4Z-}1mC#3yKi(Oo0s47 zoOADUZk>AT{xh{^^-Ry2nQwP>b{xG(=3p7&q1aPhyL!Nv1- z+&_3(T`vC5Zx+Wt7WdmVxVion%0JdWlwWSXH_Gonb$LPL%lPNGf8%!l*Z2NU@&Apv%lCg{?s9N(zR_?02Xpsdy7)J9m-mgn z`~RZG|2O6?H}8KicmEae|BrrzljAezTg?jQ_Li&1PR3nJp*`aQ3W*Qc%!|A%##bN+)IpF2B*#K@uS`9we$D!!5~kYxRadkVZI z8D!@|$7Trph~qD!_l#0-0Lm56Mke~9>`Jo=ipk{gxB_2Q)QHG_g75n%Y&y_5Z16;V z5ws#ffiZxfb~b|OqfS2w+buagXPcfd=ZE_ZDidM~+IH&5iho6G?JZ&Zr6&9%_2Z(nMWXseQuQy* z$k}FwLj?}=lNyd$momAr64kYQFBKfRU|+%!%h~rRS={8Y?|6)&j5mr-gL1Km-BEIC zEzu|q`BO4>wfva5VRYVq>6K;2s0{OCj#M`cY+sT4;jnO_dV;N)r?ADWKF(2{`ZaJ_ zR*_cl59@h2A$t-d6c`2@surZ~U}9C_;A=vK6BF@ zr=N(}4hx1;EXcT9sVuDfr0h4zyi-n|?NaLeaF@3*H;N8ALI@)}dS$R5JCgcA-`j=CZWk}q#>dYKO7{MPz$ZR2wF(37s%~4maHaN-wSHh`2E2UNwmx| z@sJ!A_s=_1tKM2 zACg3l{7n8WSfHAxUcqv-EdDCG3m7MkRYL0~_$!hl^aWwQBIkLDz^-?O(1-ZVtj z_v7W~Fo8#(J^DB-zn1g9=URVVuf!28a^^?*C!}K9BGMCOMR{wYM~Lw<;0crTh3W*= zColWHI4!;l&CW)q`<81i(jV27z|fETB7tgnV(Nlk*GfUg(7E$aH2EiY;yt30UGr~p zC$aYGPO0lz%&n9wtY!6q_p>uo+&W(GucSv9+9xgGAoBJ3B7DvRrb6{m>aDRF?-ECE z<|u-jnaHVa8_7qw=ucn{38>0S3l&?^3+BXU^WqCXn6n>yeH=bk*Ricd`ed!CMoABV zI4_74{#q_1goA~A$Vn{+Q%{_{CEC>Rm?XFzNG&H45+#^67ZOb+tP~?tq>PzKb84|B zxYb<$C9Wg7%EdkqLcOFl!LdHQI%IM#g`YDqr0G&V^Ld;KoF1n}YRcxu+3F-B-hNpy zWE0Di$<4K@FHH^V#2#Q4$+_iL3|rGmOh%r#mG~lH1zb^EOog)3%JzGuf{05z2Ik zi=*v&&~HzSqK*s-+&WK2Fe(xfr2oEh3~u7fr@VY+P*myaeJ~gHP%F02LuyG76G*g1 z$`M4gpM0eri%hM`oviLQc1*q%f7ElMTV|Ty;J@8krX$=KD}WxGBzN{V29`}BvYNjT zqecXA#C9`8cw5~^IolH3+Xcx+14H*-o4jh>X7iD(530)g? z7YikU(#ym8n-~v_MC8d631iyq7)BltxybqYKQ4vnYyG>qmy} zgsbIyM~~$2yq5&^uAYxgSTFa5$<@nN@2exIKti>6v%$nzD97SFrSIXyDMuWud*Y3(S=n(XjcyRPjN)b<|4?9=Sg|(D@VY0MDvGU4 z3Xhu(C+)@mY@JE2ptBO#H!>k*Ml{WOnk*K9&$9*n-FL0LFuB$^;BUR|&^?mtjSfp; z3M#d1ux@>Rw}^J#T54)J<6K5$5tq12p3h#fuuaw;fHMFRMfuj@=pekDY0(%rYE6c! z)`{$I(DVEq6EciLk7f$OL7RnFhI#bM6AE&*@N^F!qa;jRC%SNSFzu{cn zkUQ`&LEp!>u}b++5>PI2X%(*r0c8FfHi5X=~2hF5`DfD@IeIFxPi?0WamOIB+k`hvzqrh}`khzH z$R*lf>}UhCf9}LXxKviBQemw>pzp@g8jh=(Z3{`;qtRf$G~h@+T7Xhz(Rq+&MfXD! zW#~TXdxQ)3{g7s6Y1B#f;q_Pwb_EqE-0Fk;7TfMESN-2D&o~`+Gj9HtUMlR)X909y zVU3)*f^;o_xyymAQlFPWCab1r$IK52yC>R;BTR%fCU5XLT_i&S3m4_z`+{RygD)s9 zO&6u_{a$68@5_c+5;7EqOKZ|{)4E~tN}H`NI7Es6teln!UYz^$!# z{@0Uq0gBr3&{CV%KTna(Q{*X!7ey^5cRm%m3PC{ zal`>OHBR_l3C}C@o^!0WXfat@^V3x;=eoFX z-~lwWV`wnT4s&12u*aT@=K8i18rs%=E5J2isbn*G zZ1UpQwf{&vup=#6a|-A_%Ac^&k{W z&-(qQZHe&~XHpFqoudz3B6o6+Kc1sx1J~eN6p4u`dB_WP+_C zAk{Q5k5N2Sq;F`$D?Hw1)ryh<4hm`6PyrX+&EL@gi}IY22Jq>kOGG9hL>BEF7M#9eVQT zGlpuHKiLfH9$2MLrPoX zA(Yu!_xBGvIi`jVI1s`o&sN_tPdx235}D;|*P5vs8Q;i$ad}HG43E@4%n^ZU^P=xT zYs9f!gvunxgo6zycCa&k2o8kDgc}Vfn*Gp^;492~7f@6{M?^?ldq%Te9|xj|9r+KfZWHrbIA7{tnRXVTcy{9i}dqtqR4DG->UILjjA_Qy({ce6xU79sLCuV#=#kGMg7$ zBS9iSZZ8^~SuwfaR;Y(A#-AHeFOc&{O^R6favtP0BoIr^a{Ph*&!qjYu%QDZ5ppzu z(2@`r_U$^ygzvlC*M$9a#R0u*KH~9%OxtQ}5EtZQ(%IRW_y!nfM60}R!t(TLxGI^p z2H?*Mx1h$pa$xG?n|*g5U7GsLaHCeYuu#{1&${jwzj%;z5x92WVlUbHjCrdDRn!J2 zC6D)+J_Qf>8%1RD79Dg?S@gvn2_&yz4w0NGw@znvjKvHYlEirp^_giDo38R;`J#J= zzz4=KSq4J|7$(G*x`Vu_E~31o`>-n zC5h($@ZE4F`y9)yBfVsMq3#V3U9SsxM1{z+a1$SK7(C*=I5>bh$p&saxeZvQNCahy zT7w}%gcW}aHpG^hFey5qgofHfYUfe)0tmNEAqb;}Q&teu%h0+SZ)#8M)z~@*ifz}o z)VUiCQjhYYrWnV_cU%0%CZZbN#HLV6dUCpjdrSWPzhEBOb{ne#Q$_5fxd=+lZL*ab z^QRWu1fHoD3wJNVr@bh*aQg+~bIEQ`Iy;ykTg>!sf)x^riK}0B`l^Gj2<{SjCDffv zjuYHnOtqL{Ik2aw`D;@=WF;<|4}w>R<03HLC;@zA-8j{F-YDHT-Og4XS=K^IspC$Q zY7g0-v7zoVC7yYDipI4(OpS2_VBs>sBPzJAb83f@qsk6OWh2(RA6kOjKKdT+m6%se zoO8vmAQiK=jGsOqBl!ymz?o+Dq#|AvVZH*C`l_d$kqz?)cc@F2wx5pGO^c&Y^rWE z{x|%g*XYYT0mdM9To-c87k$v2M+JEys4L1}IcuPOuiW88cdq%2S{&9Y1R`xkI`q!4PY>pUzy*V&Xj6D5Z{OMh;yCrL-za|O)>bbUoz^PnEB`FSzPEp>7i42V9pTuYJa%rI<6;8|pV%^7A{&Gn$ae`d>Nr8#28SDb1bQLQMs%-) zyKMbzWAi$??1XRhBSz<2X+ZZ{U&>PmIiNGqOwT~isoj3^0z;d>~AU_cl!E`Ys&XN z7@u641_8|DU55uJYgC`evXeBwv&nl#%nc6XbGCC@iv<9ZydAeVx1{X8`5kIAyy2DZ7{Jt=YRK} za+S7aDf%S0RP_nlJIHBVD0ua!<|bw-XU+@5@|-x~OvdN94C$aOWqOI*y@T%OxvNPM zm{lwCL`-?6Jw)*Fq8hu}Mtl>EzrCWv!4u5(sZNQTgL#~P$IQ~^1Vd1E*p4M=@oBL? zgGaZ46Ftw_4*NE^-Jlo^%oiuFg@ZLNc4Yv8QDz4(H8GqKaOjYg=%J# z6Y@YL_SHj`aKQVdQE0Ur&Ha^kz*Ff!a_WG_s*v43E8ODl0AE)Diru4oiPIQJ|y*DP_f9gy-AKG6Zj+c&`?+=ep!fYPY~_)lK2acl#!AP>#fo4vH$Kx1h;~4 zI6KajUTE)lZn_D*uC7w0ap3FXXrWMoT{tCAF5CO04B=r*xIp3`qp%N z{6?aa#;Ig$+T=KS)%iv3eR$mC-yiHhOf?J9Z0r zUzvV5-8bpy0&B>IBcCZPqCHcReoP z>uHCmKkIvV*>2NG8vUu?%LhSBjaA<7_A3~Xuv|1J-6|~|M?6Qx_)7y=!~}PRavX{I zD6%z!RgEe)KRtOeo&A;C#BcI5Tl}MvfI+E|C)}uSiUtTIfm_X&#=i zlb%qfn$_gtjqd=h%3Rpkz=3SFd%X{ue+iKS$HQ#iv{8AlPVK<3f6C@xg5bMBbY8+( z4nn%mSLy`#!MXKive$&M74s*CwOr_@E{HlGA4{2T zHrVf~HlJ3LZgZ0fZr`%nk;K|aH1;3P*#F{$u-r`9X8n#TuI2IdNBEJQ|F)R4YyDT` zZ8gLS{uP8N*bGK{tQBPU?@iOwe%Bo_Wza1KIsQ1mp(disX8QEo{(ySTdq$<%^^lYJ zJ2WxC-m&xuSt#JCEZPZXrGcbqzOcq0$H~$%e0|r)^-ru*<1^gjB*QM#OF=-z*sP&S z#F0a~ddE()`Y~CU$YQJq%io70y;n(H#UE*0QW;;~Jv}2m#d3gWJ|=j0VL*tL@J6Wq zK556+-Kk&?F!b66OxYHycMU$UqN{1Bh{||ke2b?vIJoNS;5&eez2`Nt)d}PMIOM{h zwIZ|EvS0;8IJ$keDlK+EseebYCbE^A{}}8ypw{afaTZZ8T#Qi+0FF2EcTj`)?r?%t6Q-j5e?_p>Qt zC1RxeSTBL#L@3ep0_M?aHC`bbcW%mL3Z^_~&JOs*EX{7R9c?umW0Xr&qT2B=7;%_Zl^`2EeNfL6tB znJ!e*7laZQE;4Q)S8#FNgoc2T*XT7L)=oCB4jtbW|Cd5%y8a4>K*FMv3iaN5(4xql z0r>25<~7x}H)-xui;Mo?KB;$fo076>%2L8rYm}(s!ISm@g#rI=f|K}%n%7E0DBezu z%rLo21+7(~HSCf?e`!EGr+FXGNNgb}V<`))54LnsO9~bu3hvN>=MlG*5WZcQLw>wY z@vU#sj}^*@fy{8n5=G>ZW<(vF7JQ18nCw10bh$y>jNw>ArpXv_id$;1hqofX&9)W7 zLVQ~$P3Jg@Z;){mBmCzmnJ-%xiQ%q=pqrAzr?X!Wy7|ASkk?Lw7r&5 zSD*WPX1V7KbfxYVn2=Xp^4$&b8<$}0$#Zf^FH>@5r4-TH#Hd)|a z5WzX%)P;M@szLe(!M@k8V}K*?zNT)ehP8MaK3G+An?H3DfS+?GblWFXmHP;PJMGJ% zY(Bx^=*t@w7SrY|BlFJ{|2)XCupwbg_{z8K_pAVewDW%1`Obg*;?Prh zM<4REt-mBVdXRr6u_y$sDHQ(m#3=~v8o#jZXa?7cr1Y-0?)WYFY?DIT>pfgM$k*e# z3$JoMcF_44#ya)Qa?Z|(({I$M1|~{Nk&Zl~x?7x?%sz4I^b`ylPNZ~!qWzR)6a$(_h*uGonh2j(q zI#_vxtCY7P*atKp-*JO?^AP+>nS~f zDmNbajGyJvyAy=7f6Coy^Bu{2ZDQCR7U_$)CmUK{sUk<`#4LjDs}mc8i_!kBsGY=l z&i&D+T_$nI;Q4UIWCJ%p3A?A(Cq&>?hx0OEUXX2>o6bF_T3AT#^4E|^0)N+yCI)r7 zMs6vH^PbC#;c2SmHe{op9`*D(>vn+1z)9nGVD5@rRuJAn@)G~5*13l7y)1(0PFqAk z>QHU`1Vjn@;Cmd`@1@gIc0s1mg(1M9?SsSdO*YZNSGm-Qkyz8S?rWm&^Cgrbd#4Tl zXg72pyXa6R{rTuMRpE~1yHWrKX*JA1L4x+)R6Ko)b)kiCwpJeTXLvgmaIkugPJ4-K9>lex5eTKg-?zz+=?%*xPqSFu;=enI=(`_3@GT90e`llPNx%-DJX-gOj&)3N^fH-5yl-?nurNkYLZ*G|8jd^vR>~5&8|p zp$F>rB0f%nYn8?qVxvGX9T-474}F$ng-Gxnyj-V+Soes=dEexUqt1CiskxuIN^>a< zUf+!nmqRKDbFHEB^r%r#d|h~@a_lwYGucQpAS! znOC0GWuOMzq2QXjUx^R#hy(S=RKF5;j^rbe7j<@MI_c2-OyTdISL+_V@)n$Lp30VF z$FVwc{n=Wvj?h4^e^ofDjn{p_75?kZyLRCl|w> zrjAl=Z=fjLW0#m);tOdr<19-aZb&}&r13eip?kuP+_#S!i1A;4>d1dvMlD@QN4iF& znn43KE0?5ETAli+vWb%%xmFoOe1;JjA0X7%F9<-!sIVgE&%L|=ewqCgyG7y*Sb$IVi;C{9MWQbwPsJe+_8iorCGK&8s*!X6;2TPZPGa>$t> z(LOrD)Fz{&Hs5(++{xk0<|%92Xj20T;zBU0SU{g|cCW7^&EjI*6J+4lm#$b)U$Ffo zXZ)wyVgUhWAYqCoh7X}<%Has;?Nidj_S zbt5eF>SJ2;@;Dzs^fL@gk174??6uD=_P>efYT-~94uPqm_NJ|~@v?#8$M_PASU6vC-OFD|w1!L7d`oJCjj=rWX;g2*X~ ze{5M~T9(|Xa;>51Wg_&&df~1w_RWfIynIJ%>Tp6bs*_PQOKC`}QndQ+Q8mPuGR~w& zU->sCQugQ_Tn{t#*rGQ4^R^{z+Dq$z!C&bs=A7c613W9EgqD9VEU4`^*P&5A2;imL z21y{v6v+n=)j9&>T$;%X93a(X&Aa9p-$_g22{SLSQtD@ttEL+FXopBOy*SThL(c8t zQ|Vxq@B*~sBmHfiDL*~!mODPVERyv3up?ik-|tViPS^`De7B2ihEE5&==PBI4I+O% zWv8*hG*{ff*~{FfuJRosu98n0a@zI!qPl!eLQISCDj^YDIXK58dq2qD%q4*sBxOag zL_AG*$p!n!LKt(>KlvqySI+3zlAXjq2VR-P*w9SR0ng&v14%U0nfb#lk6)zw?M7|8 zbg13>d%mMhy;{`$&sY@6Rq&kOHiB0$;g6GoFJDo3CR@cdM^j`OXyv5`0TZMRcb$&RLz3=~fpNjf;pC%FEYHE~gSr!tR-O z<(&%ImL6&jzccq}+nckjm5Z~_?7;7Q>KkibgasC%Ij%NO*a*T_%D*&x%3Y&`Q?3I$ zQ$N^GsKcIhV!IcE+l0dm15A|n_DN15UowT?(%@gLp`WL(g>YU@UKn@j2gts>fB0JH z%=43qyihC0dSY3|CgN0Ww)5H7TFt{JZG?qx5N-rI?h_vWLNQ1jVk*2|_xoH+@Inif zXP#4Vem%B{?YGFE1!|@24Z{;|<*s?JuJYBQT+Vwn0|9f^Js~<1mw4-O(}03IQY(TI zs<;BVo9@o{XI2i%TH>^xWcv$ZWUJ@ceyHcJf$a>x`v=Kn>_xeahKmo=HQ(mJ*Qs&Qbm;pNNX3xv z?t>m#HS9dZ&=`nEKacY@FIX)?t&BH7hQSr`S(Qj(0CR zvNn9_yqvQq*0GN`)9i^U6>Np1ogpci8ICVO&<1yoZ}e=(q7}N4#`prU z9q$pFuT+3=Uz}Ub2h;s&s9-$*(;54zgmrNl-*!qRxp?l^{0;zgRb=8aDIR>ojk_=s zvs-gV#e`Xcd@?ROw1R5}=q0E%9G6>*t3 zo3h{0m!Dm^s#c~#XYGC36jm%n-)ET3EAzbA+P%1AKVL)h;G=$N?mK6WR{t?x?Bdvo z@4gio5D0Brg0rvA6DdA&?4G$)i+}b;JzsPa&hdj=H^v0ZOA~euDGJAW*GdXS;3Txf z25zKo`4c=-*?;Fc{>wytM4q78Z+$CTf0U* zGY`OPw8=h(rHnAR=GS9fbY(F9w4I)X7J<24pLldT$MYuxLfOI)=uLpn#|h^>*mh&cOWKyt-ywbtNH>^WRHwz40#z z`RJH%T#Vm%XvArvc>xCY-C12n)}3leAGUWY>r{K8{#_ylWcVI@4RUID+6A*FHgbNh zE&#uV3?mknvoX;8aBbSDnd-(z^oqoB`;5Yq)`r7zRy#-j&KUVjN9z+u28i^5n*YV@ zp^1&_buX2TYX$f3di(`Nsrk0UeO`azV8aUJ)lGN_1vFnt0>laWX#14o!kA3?l<`Fs zJ;Tt;J8!LUtq6sN8>L^J_?UX$o8|n&ZALZ8+_KvQ&R?BgJ2_ju>IQk4uKJTmGME@` zVq*T7m>jo|qHh`VWQKERdTC8@X=hoR-mK3K^64!f%c~u$36WHyCk-y}G9_(UhkWfY z?&}}(XBZovFWBGxNshSlvxKKaCnh>mtrDry*L4uC$bw~kfw*&v4zOEgXXx=e-F7i; z+b@91eb}ImI^A)@NimYdB=SBc%GhaX@p~ZyJ9kZ0CEmVO#)o;p@0;W{i`JYquT>|y zyzn*cla`sS&UNCx`tp|bhi+GC$LnQ=sZO;YkIw-@&>er*hC~%n^JBE)q!PPYe7q>v zifX&xcw2vXmpm7?JBf}QMO(?(IFe{2%^WJ6xW{BpT|dRXhzK%aT6C6oadL80~`ns1g@!6CjJ z(?$%EMW#=JKVw@V0iM&gDVeL&tAFIBBOll?dBAC9>(C`wz!*Fo8@sZfYI08dI_Qjw zKSlFk&H@@lH#8&QtN+LXN~r$%XJ`venM1F(LTRff?=L2Uc{A?5o2<2#f`04+B%3~r z$Z2{zb1mx+I7~_=>#vIv3C~uB6g_{Nr_K+x_k!@{MA+Pb6OkNFdDNZW%dLU>hFK^1 zD4DUa>{z1~ywU#6LyPjr>L#Uzd2Q8jTfC;zH7%X%XO^1!6wUamy;i&A#A78|CsEC` z3V`?&?BrP>9HmD;=(f9U}Ha5t?!1e!e z0bz}yF&9m-w>aG!V=hO|gWDOKH}}h`J~#>Tz43k3bj^(qPHK~kOHc$!noUKAiZ+R4 zO}Lx;r_h;w#;Y>x^1I@{v7$(7Y=7{s|*&hGsOW3>|%TT+-m!?hM3p_}%h?+9pCF`42ox$(S0&~~8< zeORyy{{*HVqe&j~tt@U)-7FBK()twe4xGnvy=?^WM zv{0qer^F>3j@nL*SgV- zUk4xGnkXiqqP9BH>G3H0 zyLmPoQyT6a1q$z+-Qo8sA=Y0W<+_@>Z1$bTA(@)@WRl*kUT*ZvW&Qe)?~b9I@1^_$ zISIS@7>Qg-fpXub%V3xhA_B{AG`v+=r5MV>i|IRcoC~+fLasDwG3g(7Y8z=&gofDu z6v`tge*-gU5(VLt3jtkt;5f%6+FcuC z$WI_!m@nn73uP`cM16=3AYvco8sYm%K_=99@xv6Ha|;dCd$72?q`UP068DPML@bxA=X_E?EOLj8FmUL>Jr;7B_$?`H6Az+_!PEEXO;`}32Q`JTKTY! zIL*A9lXA&Cv<5i;P%krNPwDYH)Dqy1yu|RlM!D-w*^J!!ZHNV6kH7BlphL5~kEz3udiOh}Ci2^Te%W%U0I~phQCk5+djMYKR)zO#pE?W~%?g3&09NdJ z1J4$%ApuGPVQ%J zd=!3}Ay~?5UBDAyA32@LEFQQ7us}{{FbfAZgeeekD$0fc%K*hl>C8n2L!T&d!W6JL z4Te5bnug6bh2DhBq7YHsP62Oyvf6L5;j22gsj^m+mHC|^Q%k&c)?>B^=6MF5;(W{#>w zDVyAB(_!Wrz;(daup*=*noruYi9kt8WWcs=FoM{2sFrT9R#3bh@-b!AXE}1 z3hM*wCk5G3AQojWAUO0r3Nn`RC4urG1G5j(70x!(Uzx~eEH=s zFS$rsNxTB2A7Qe9$e1G3I#g={XTXpX|+U%pdfF2 zk1xJX0L}rvzF89McF4>@9n`yTLX67Wzy*gRow{K!Qc~6+dwqL<=dg8Q2r$3~*8@WU z7)V}n4?e2zUxI-LQoFf0;7ZSRE|#D$V98sSslOpPxOM)3_jfJ8!B8Q_U2MvKD-!!A zgz8WO`v#8c@ZX~Joa_YXgr4Fh*x@@T0NbS|J&>2E&6^4kS|x_g zSYW6rnw#FohORDuU`KJ5m+!F}8e@Us9a8)=jIm|b?&w_T=p54G(dp=w&92X+XYi)d ztu02%6&+Yc3Qd#?-7s71dTq%glr6CHmU9wt^vzGH_-F4IfEQ(Ha@!EKwWz-vqrR&@ zKxlUx{}mbN#sW15#^^i`inHS0vtqGM5Gai|ticH%t9`t!^01yYp7^1v98A}6j_tu_!nJ8d>o6g)|3vjnQ9C< zlMZTF7PVOr5b~c*<4v@A{i$+qvIRJY-QXlr7u5i5DYXHQjSscX84RB!WHBlI0lr}m zNLTpVbHNJMKZU|Pk?N3~2)1eeu5S0&FPo7dz92LP)%0p^%3s3QU&CFBcw#;ycA&1q zI8f`Z!#V`Z^ippc*OCjpw-?jU!_@iJMDdCeOIVt->lTnBmizH?1fK-%q029gG!Z1nXDBKT}pY&wYfGU)ffZ%=`1Z3n! zeMCD%x*jJ-wC8X%DBd%yKZ0lwc`xSB+(oa)Cf6my!+T#e5m=d?h@rKR&3B&29Y_Z6 zCPEH+8a9b8xjj)DgAsu{_aRR`B93e=@q1mXtka%NK$kF(?Ny(OYzF17?GNUeFa?}x z3bS$`1ArE_jDS;aNRkpKG?su71G7t1KCBso|8>1PxKBHC^{700EUe^ zpZq-m!<8xlqqQo5thMSvYIPOA!~Jpw&##I%npI8pm6ouP8{~VxsT-l$-0@n)hQ6IZ zv#a@7`5KeW>`y3@`DpaCInSsETg88f7+Bo!db>;gnqrdhPaIFipMa`Dmjg*m#~pUZ_JJKb5soyV1uuu8rL%UubhM zY_m_Pjm zH8$8-oQkwtcw0ZD@ZfmZrD(0LC5~>v(qD6RM(!b=ftl zKke^P@5ShqpCl z)rX3KXO#D$RwB=UE4@imJ4~;j4INSbzKQ*Nw(dTEM#$M^k{>U`_P%vchG>s#_&}F@ zO{Q~Drfu+v<3h9Jr|NoA$AJ%%$U3NUkH$l!~An`Y1gJ)3z_s@e6I z6E&0TXnAIa%a42f!)iSj}ZXVhmsj@!`XrewDMsA1eEz`kE z{-jTkJzde~Nh}&I6Zq9JSDC=-;9fzvz+B}JUt`j3_tP{}@g%d%;)Ppr#!@S!pqMtAp4lP3wA@bB{WOxklF7kfwAzl>zpB9|IH@f;Dkgx z^P?%u%rcE0hw~T%($RpFmQBP(_IVUO8i^n`i*kH-r3jNBw!G{7ZV5K+7R!`37}+tSa$kN-gNFH~ zLg9 OyDx*x}2N>FjREymd7NpYVMuUd)paAQ@|n>C8jtwqV{F z{N*p2)4Xlb)x|c4I&Bz7o^WfjD{(#`Uuvk`j>l4V=8^ldluussWR)w)nz*2G7fxAs z#CdpjE%tu9QA3D*@Yz|dd3D;F@WXFjy|>PrBe8JlYt}mGe4vpt&MbN!l)g7fO6ui8F#W)~OUG4rViUL8 zLSlbU1y6dk;8)&hyBjZi5wR8i3%=cDQa0uwHp^&BXnE_N#=qwO&~_IYmJ)30<-+jLFU zbpPIvXYYFQxg=V;^-I^%xyLwlJU_8KP%>IM^?9y>;QqEr>(}z}zQgQh=}qk-q3f~J zoY!C87d68Zt@}-TDi!CZ#m~7E~^nkgq5GE z2l4MA+JNyW098k{-CZu-(fHIY_sC?b;vGKq(bOlo*CK(%o6t7Y@z?Ln!8W9tQ=c=% zhZ})=kZ>Es)uZcxWosLEHL$ZO|38Rl+%3XYtIV46u<>N;MdTl(B-ip!#iFHUh*t|* zt#>8-3jb=NSwJe=E%EPyQ<@V%{VpIh`%c>ZV)M}ba&WliotT@ObLAk!4)Jyki0jb? zX6N%qi1~bJb=>L;iSiF{{?htzf#xNw`T$WdGQnilq-rhU z)ZF78jPp0UxYy$J^)8d5Eq7n{72Uf++N2tT@6(jd%}Nu=wRTn;s=4VElQN1`t8aUZ zI}Qc{4+DE`2d5MfnKvdS&X-b;Hzgj#Sz+2zQYv2Ul#Dz)jhgn0*l9;cR=tCepVQQF zw~x>|jgA$$NulR=I6aMZWclMF=j+rrw!q!PeuBjg*uPAlnx(8`Oknx=u5I17-mZSS!437S1qTE~?|FD^!x5k>lDouXx+Jj2ChuY1oRuonmx z8*4`1M#@dbY~ZKjY-3tnHKi*&6iX4jFOC5VEQz{_tRJr8_)dXiqgQqNw|vtzGF?x@ zj~@NlKMgbwjVwv^1a6B4lJ-W8{LuI4&;g8}zkN=M*RtxISSuYJjf!Z}%nbPEq{Y2= zj3mf2nxfvcGl-DF-XpALZYGad-g*^fQ}g7g&wI1XNNmX2_vU&N-gKJ;tPPJK>ULvO z_gqoD>%x#)^Rc~09?qhU?R-poF5RfJz5JEZ5}nm#<0*R7)>7AANUV;T+~_D*B6St( zy`%8F$G9tv2EyQS2SptuL_4IYopWXgR96r2lg!gT+k&U$3WTA3=ioX0g4*=+a?|eO zUHy%qcC`&DU#xr*Q;wGJJ)z0DlkAy-%2d+JoJuysN;4`=vvhfdO-_n}Sw~ML38Th< z!~LMZ=Xox6wTnY=jex^)CX-gOsY~Fr{~PQ)&V?YvMUJ?nOOD5dZ?~1-?~f4)8b&t! zK(36xq5Y~ssi~J7M$&V>`o$04cFp;LC{cmcYM|HV^idLNUiVHVB2Xug)U?AWu2Xa}o*C;O`ljzfT~87o6;Y6hY<68z z{E5gh(`8kCzY;2kiv|~|_N7g4m5zBAhQ9$S{eSvvT@;@Z2>LKo9B&=a4w|9> z5t{B#WhN@sFf<3rEynB7f-SUBkB@Saxfv9df6*Z~FB5${gea+Fj#kMpe#@L(Jerj( z$wjMLdx_^E|i42@n!e6b_ zL}(5nj7>@YQ>R#0&)7`XETnZ65fhmr_-9dvvp`eW_WDi&LJI0xj+`vEIHiuFsjZ*o z(j@BuE+uF-24QfB!fDKB^BOD6`z+59;wcUZqeFwu24DSI z;Y!WfSvO4;(U2_z@^FAWcxnws#w4}W$%1CHt?T4rSi_z_ZX%=QQ0hDi@*;rYm(h%L zbc&hnUlkHxTa9W-bxCn`c@uo8?U0qF8VHu$&{qA4* zb`g>L+k39vJ8gFYFXxCbE6LQq($X?7@<^uFX)X$K*+8y`#vv*pi0G^5v)LW@$?RST zmpm{XJ+5S`!Io11Yl-TQbk zsEZmEvwN2B@0X2xXP^B~3O!l5bxooPHruu@?3{=gp(yq*4cO@KsfU~Vakz~8Hv2-q z;tHMT+DBHkd)^Xvv^p+zjlm-6wcE@Goz1fQX$&cjesH{G^20M~*HlQcXSj2-tK?J^ zEFVuD@$-x@`|pWYrU|;K%5EhRVia0bhvVy{#Ae8)`$jo6fbfv}Y|RoShGblml|yxZ zH>H}T2x^u{q{x~PcL$(lltr=|%ys36Wo~+O7oYLaBC#?g>=%933n*lxG{SJjvN# zQl6q4Hv?J8wKa;NJiG^?r3S|AVzRC@7gLEHxZ!{mv|IC*zxP=MQBzgqB3%kE;A8=i_7*mt|ZaSUCn*)lia& z`+u>4`38p+6lvZsiTQ*@U>(FvH7A*DtJ}L~67nFpDErTIlAXm{&d5n4o=xQjSJ=QH zRh3W1H9hEXAOn(9EWb|WKIjxhZ@oH)Arr@kd1{hxx1qmkgCVoYRmN!t>~4{I>QFEz z3TRlToLn^M`p8Sz7P(*%uInnpbu4^cv4c{M(U3M!x?Ri~b;O#AvR}r*&oc*h3 z{8-fU5AV+zY(!#1Bdx{7c9$)3>@;M1Tfth#x5LI=)$1@ZZ|b;g;1K*By=EUjUmV6a zCx+PXeUbofC7gZ!a4D4mCmEEG_a)>Yx=?g^ny%x8K`-_cI=QuihZ za*q0k;4hGH=S!X1Y05!WlP0GY|H8eMYtVQLI@}uWL(d z1}_9Y-4Ee`JJ=Z91)`W&7hFpn9*fvR&EYSO_PC!dij`fDGaT67Cq`c)&)2>fzl^1T zSB#B3$26@&8J$4BkBmmSo6^vwjgv=gN?#lI`~Fyd7WSrXH;=V5q#1fJ?kljGg7kvw-BE-FF2t7j7h!#uHhT6ik8PH`nwcaBUVh~aLDeHvTIJ?|0CE0?I&IuI_Jn(JzFR z18j5{kzs?5qy)^=g-4OT_VeA18t6V16y*`d6okeaUoiVKL<*9lOX%)&%L+Gpr5`v! zRP%j?$0vubl2^@9I_BfO++4xyb%E-!yd-rgy5XL%gocZCxCUjsn~NnAH+6x2ZL^40 zFpeqnVXRNR87?;RN2|sdoWC}Nz7$Lw>fujOzu;YrrEA?hEMU*1y?~o0 z8ts`hRe>WvyN}2~zHMl)1e(fxwahK4(NGXpU~0qI;Dui2tkxkt^n~T(mJ~hk8^&N5 zU~mSk9I+7em+6N8X$Zf@a4>N_EjStT=~jNgcnD>D9Om=PMR2X}icfLv0llsgJeo5v zexM%@xa)qO;)u_Jz3TjC@K~ROe~P5i9p?__WqaKmJ5^BgxtQlokH-j`Bd5Qxd_J8Xj98rZeA&&1m8&N75wjI7r(cZB0^il>>&^4mRGco44tBRAYETbR zibQqy;D(zBipQNtt4*CoO}@WX?%L!-WM{yOP1KztZhWzy_Coyhx$T{`c=v#sdfyqL z>78`~Oh}JCvWyHQo%sg26_d%^kK`Smr(RGH@&4FQfIvZ6#+HCeA&Dm^s+LW5`UNHA zk{AI&x>pe~ncn#l-W74w6{_Q0&yQojQj5+B{#?pdh>959EYY%Qmll?J#V{-WfG;Li zU{W5D@nExy(WAPjlCeNao+?O+x^>`o*SWH&0S@NX4TtO#o3CP->X+`d4l6F-S3PJv z5V(Kt*^W5-4@A@iVouniYoVfZE43EOI~2;&5}T%sXa&RJD{L8Be)US_{*E{vgv=1t zGHK6ks@M&Z&abm96==DO6qiQZVxO18aj!lBHj}Q<5F;j~0W zev!pf0@u|$y``PdL$}A?jCzpc`^eJ0)I+OIms8_VrC1;DP+USN8`BpeZ>66)b~*EUO;Kwl2^8E*-wg z%E)7qEE3bciuzJUwG}hY5!#l9yLVK&Xi_YTPYd3?>0&!oG+;4_H$G$*$ES=++vUTB zo-RW({Iy#VgQcEww0k!{sOoDIKZ6?!ZN2$MEnI(UlO}Nj{6w;a8DVlF(*-xhb!6<} z1a}ZWY$laSN9KS9G_0{~!rF94Z1g?^`!5pRgu|lurV%)P*XNy6pvpo^`y&Cqy@y|7DK&Cd^2Y;a-mr+$V*6*7NY&(j@tPX~A3A)IIT0!;KA;PBm175&OT8>if? z>qN;7pvPbn`Y~)roZJ1`ROECW+K*{+?>iSp+)Yc~&krjv&#>DMtzO-6M*S5bBWizCtUJs^AxwRU~-6%hEql?Wcz+#9> za|EXz(03%#vE1dE5Z)6P{#0J4 zt3~cEA#ij=$<|dq?wq;Nuu4?HWh=Om+e`5%XYbz*dh|!BWS$(zrN1ImE_%F)#U%Y9y|F_;W z+y8?%{ZHHfz=`ExVg2tc?3bi5>wcC`lJ}1Yj4P6t@`?Izp&Y0q1*n;KkOba|cz8=R zlVtuzlGKeV;t;Sg=I5+CrgggZ2HX|96ZaEZQcV{ICwp^wzU0=_VUvpW22Ees*J<9k zhrQA%wm^4IczdnipA9F>e|z)r$GjDs@7n>Ayi+=#w0sUwj?bOzkUIrY`&$SGW9X{s z{)`GWde(%cJ<-rbw3K9V5xDP|;nloo`WV2ddhSNkC~k~em3`c_&Oc(B8d|E>;ObEk z(R#PhrquQ^GK^7E+}?>wZpmXoyIQK4JWa5c3R<}gDY997pwoyL^bMTuA-q?3@~q@6 zWocB2yb`uzTIUar#sDHx0uB^t6uhvHjT48%u|oc8%0icJpKi#q#_}a;Hc?&Os(emk zS)Y=Zk(cuv%Uv)`E}Z+TCk7sQlxjHs5quwT+v2j}0r!RBl;CGp9`?9gmV z-U&$4d`gZu(+riGZLu}3gLb{I?|&}VxhyXFM~C7l&W~N?`KbXL(^IH)tL<-oV1}AY z_5bc%`?p^8zdhIfZ@p@6&JQ#AFLwMd4l&#Rl~>LBp;NPQbAJ%iAI>!EUs9U;1CnOt z{Sc{1I61jKnCTBynuPn~oagwEt^aA{_~^y;VM+6R(9nMyxIbp+;`+d(|LW0yEB-0` z^{@Xf;G^eLF|)F; zbRpsX*a!atR&)O)z-_-;IFo$9^8X4}bA9X*M)r?pHkJ=Qnw90RuKnM@>VK{q|Bb8u z(7^w(!~YLg{cjKZ|0k~cpSAh#T=hSv#s8G6{&2Ye4}1U53jYr-Lu_n3ydQh*zqo2n zZWd0i|9)LM?Sl8vker9{Ij&jDahX}-<6o0af=-P81VQ>q78W814XzR%2mX0mEMAiU zT-8)tMM5J!JQ9IUu>c2axYeO>GpL{trLZ-hjW05m?C2Sw>C68keA{Q^Uikg`MH#{& zuU*sCn%DJsuDtyZJS$oK40_^kRqxwfJx|NH;qcHobjcTwy$9%~D@9gr@?l`Wb7Tg_ z@K|sxkRO}4EJBAMcc(-#OF+m;6$1E6Ugg>4VNp9jEtM6?mMZ1gyT$KW?>0dwnD&&e4-5Zz;ys)zS4Si?9cp=z z=Q}v6nPFea4k2IB3F6SFD^o#jW zt>_ENO;QrAtmh9Y(su&^AWWAc9b0CCKgTcRLl`8OnZUXpN-8O^;!RKJ#Xz>9D<`Pe zWb?z?S?IE;fS4W+<6yo_d+B9DJv7D5t1=tp(Mu8^>g^UweoMi=ta!u0YlP89=~+n` zpwt7GYvb2L8(C=r($#1W>SI7k3oZxYEl|rGpZe2zbUiGoFYh7ERD!wpj>LodB>B_m zb8BK4X`W=b5h@a_7NiL&@njyX5O(eY89|VnuBdn*O9&07XJj$r2yABX({siv)wIJ+ zVX?9$z;d>YHL|6abBb!ccBkj0=cksPO;nS`SFV)bYXc8gLMwsmGbeM{PFL4{<$1X8 zTLI=oqJTTd3bu%Ly^+O0x74z@St@}8$U%sP2-+;G5+8JvOCH8Ku9>cI>T>!^jAGdh zm7r9qka#1?Q2+2Cnn{@Ifm-y2UJ7?VVmX+kbXb zxVS<&c;};jW2)jh7*E+GMjU|5SSEKVk5Jg%17-BMrUKK9mke53C!xxxj>baP0priV zT`Mrx^0}s2)?rkcUFc;VJH^`;9O;I`xz;F&v3xfMZW(3T3|ech9!Cy-$kOZGa;{{P zFKu3sxDdAE6p89KP6fMQj}lZ@hvoVyiYKF5hQDy*6&ON#(Lc3de?N?K!r@|w3f0Rj z!x(a+@wl)R=l*^ewuCh28dZ-`&!eFK!vIyjeDrHc1%J#AU7hw^&I}pa8?qhZ{AZb+ z?we`X8^wpnh`1kIG=v~BGuSll`63$O3Wbz zi~5xs^B?&TIgAt<*4>conNPxU9V&}!t~BqIcbwIO9&1Iz@zO#lE8*=$?sY<7ojy~& z)i;L>IX0E@qIh!)&B-T7EgkuEmIC{0LdL?Eff4=?c_PHH5ZIumz!i%+p<n8%5tQ zGX;6IQ|41y!B0z4%C&Zdd0zTmw(^h5ePe->-ktZWyUxee!u zxVgl!a`fisN&*;nu4!9Sop`TYSzBW(jyMJzE!-nI%Z#cD3quG=&hW+oxE$bnZ!xu% zK18EgtQRE8$t@b5;Wa8kKV2=oTRZ7L)kf!kKt*)dpQHqA`IJ!;79wu8Mo~GGkA7T= z=ew)_D47*F)15TwWZD)&F1q4zMOp*z8q?I8c|EqT*fkk^CUxaD+%t*e%`?^&({~9% z@fUNaEuA``y1Akhy})`J@WhW+@AUU_h}1N@i8}!2iE9s8EfL^C(B*)~U1M^=soylS zzJT)&o+BRtq|`Jl9x}doG4e11>CCH=aR1@{VOCd!gKWg zp?B+2^v3dXj7GD*nOUGi7!J&W26?M2K`2rSu{6G zu_VHS(n|OQC)AWMREDu-@g>wrK}N90q!_`Dv#%}vWQ6+oVF_p8r-ArmP%Wl}e(mi@DwI%V@0h(?F%N{ z8G%(7Gb9A(DT0q=`&z~DjXnTDL=|gVFrPQy2s|usq6d7_NX}g^v_4A&|DiiT{E6Nc zn`VX>EEhrurKAa__Q2q(`lpZmsm*KEzB*c1GICa~uUqDbKPn~-A`6%2kPwO|(GpK1 z%W;u@S<(&swsdgqL_?;mI}Lk+JJ0U}n^|IT;V=5Xr&rqJdauA--{5@~BinfgUq-i1 zuHQ?1-!Y7R$O8mO-}#QoTn^=DDAssJP^QdI%f2Jr8SKCbsDIqBD!9o$41Yy0;gfY0 zTywL@=77I(*LK#Ldx5*BZkI}H*@9q@z(;N<1!wh$6u@+BYqCM6CA3M8U0&&)eFpLN>dV>ePBjLw?dyS#R>y}v_^ z=V%9}1z^7$Rl|Bs!nGstzzMCbTypzdYF_jUop9>O&vgbJE?9&s#RU@v|0WraDwr;XK&LNH0gx3&xQ1Ww1w}!GOq2C32 z1kU5KO^BcT<^3(*uPm%Kkpe10fDw1iYvM0fcm%-fsb=q(&4;`=n0s`<&k};o>#osh z>x=6!?`)DmkGF5z6qnWYGnS#s<%q&~-Bp)uZSR(9TMoonZxrmn&(M3_?Ds}(7vrzm zQxo6v+&`UVC}Lmxc3WyYu34Jt7u#kc@hJA3s|xRWBAz{>G*c6toWxx+E_@HCOg*dz zi(dHU7Sg{jG=YL69Mm0qU|MB1znO{ESPiJFJJ6kdtIc~~;RN~rDna37?LrQ^QdekH z1ac;fPP;L_IehPKdiL*3eV@cz^U8VK5Q1HJB&qVH$rHaXSX=Ptu_BR<^m10Drmygp&duu_UrQ?>8W>8*ABSJ%o9Tg6%B%%(X;+=?)M!SopZxeWM*%z*{Eop8zoF~+G0<<`C7bp)X2)BU=`Wj*~) zb|k!t3}WtYsOe+^X=Rr2my_hz@!M<&XIJmjMdkh}0u;r`>Q zr69`5CMt&$- zxKhEbPZvT>Wqj8=frbAILxV{ryW;dgvrwR=5$fU}G86q1uV9~4zxavEo(|IM>{nD@ z{A6{wT`=lEAkcT+s?$E#n~8Pdp`6jiZ^ik^yDVx(b`F~-X)v=ov>;n$+KqIl*$#dl zx{c#Km-+LJ;y63qTdrOCBT5ZeIM0DG>n@(-0DYB?vW4o27w-rEyS11k{5t380XWKbT3)>8~t<4yl2eB~7 zVO2uHkmJ=KP#8VGDt4I1g@u5_w!K;U6wpJR8zUvJ+`v=jP@(8iiN!z{)p6;Mn6!6# z`ou<8#JzVAg03%eTW!J5g18r3d+Hl3P{IY;L9j`%CnF_?ni0J38uXfOq!(~O|=^WNYEVi&|&nZwCGdIg}oT?cImD! zeCb2xu=#~a+5*K2R-SbO1Eya!@K?C^p8-^=<`xJL?mLuUicsaB+@4}YD7bz!Jhy&hl`M!I0fe)bf0zv@wLF~t5tp8Lj=|?8DTLFLm(X{%`aaX3C ze)0w}wU&<^FbPGpbFkR+`TEg}eWQ{6)4@6uh8fs~yon%JH#iq$|75^|*#MMB&@E0H z`HSFTNMJipt-pW1J$QrCyIVuGa?o4TA9e@+<2!%!GUd4#w}*S^7n~iY-KD65b@MJ% znB}uL=p2)I=|CZbZdhPX&keiraF*wWR5rLn2eG&Rj^V6@HHTRnqlyFjU4)cCyh%wd zj|ujn*(pY8AJOuIo?XH(UC6y=t;N-&&uiAznGW3z-N7sT$knQmw7S8lVQjXm4x3yC zr_^8X2mL^TSBAccBGOgl7n_fHG=(T$I4~Wa42#_OjdH7)oa^|8Yg-Wi)8K%&Z%^oc`2Ib@@EBjJbx=!9B59Y^w|1YD=~ z33?~kTi-6@YuVCg^rF~X!?bYNFMiG0xO<+UJ`K7}UiYoahTp686!MfpKC6tkn=5`zmmt zNQ7u|vOYjswgg;YRWUQ| zct=%o7F(h?Gml=}o`L7W3c+-P;{{M<;BJf|-BxjTht;k}emm1)zN0>9H{v!}3G!;m z&s8l$W!LqGKJ$h4c~R;o1{2~x(g|h6kRbNowAmuwMxKLo=yk$4Zi5#nRRPk9`ftLG z3epVc8%(t@4|qVY5L9h2-23y#(l}2LZ`}_MJ_PQ(S8Vvtx!qFkC~lGy4H-O5t)}_l zw04BCP1;{i6s+YH#s&Dvf^9QRpzL^K2#eI@f%_kDjSe*I=M*!y+5esbN0~E$xNZCs zOstR&41DI6YPf6rE&&*M2nRy?-G>D~s~sf92`zbG@I54Squn51j(_r|IQPD~2fmz! zZqyMvEO&oCIne>kN3!E`8=Wu;9dh-)35cst-aSU6m3%N9#*aA#GSz`nqkipB&wICW zG`2GxLk9$9CsG)-={m%huhG~62jl#S0&iRM@f|9#C_lWR=VeXCGOl@cj=^4xptgaH zm3y%i0$)#E;eGMru28Vw#&RrIau$Qx_4;3->!g0nlK3&h3z?<2I-8t74=(isL?LAY z4W#H=BKZr+p<>C20ost^{JeqQa{Z05916U2=L=BhFQAU@cd%~Q3+_u^>6|wG{;|zB zlKZG#Wm4(I&z|^qt(Vz*&mz*$`6K!My+p6p4`syUr;vOkLYOW>zreO!rb2pjHqqGM z^hUJ{RZ}BbVDDx|bHP$3e47^aiIGIy3Q-2+YsofZG)R2oS_1=+aZG~_c)^I{N^dbA zLB%^|JKySmN0_$~&j^7r1ip6gXg{ngAnqS|Q^olaBLA{00G|oYN3;ykvpzK$E{F7w zi(zeo#E})=K)rfJF^>&gvPObF-@5Seb7m%a$XzWu9@8jVmwU`iO0Brki0u+7$BK1r zO=SD(|L}UETJ6Ae^*r#xROiFvcy5;)7xl|6yj^E2k346be>g~vAKY)nDp`kr@QYXI z8rB(7GVQstNe%R?L09Pf@qJ%fXWCF^vt_5}JZA5L>yM~`3>E5QoAsX%xBYqS4?Z~H zD^pH)qqKn8A=j}R=(f1W@Y7xQnyFO9_OI=?j0X@PQU9Hqi%I8Z}*P^@8tbUmOIOVr%{QIwLrhGHwe5D1?L~Mix)r<*!kp6XWZ~(Vz)U4D85L)glG_Y zP^-`bBRebt{#YC6CSwG0=X}$L{N&wG?PG`Dtd5XOKS_$l1&Hfg5b|^I6#%8=0*%;S z$MWMIeO3;xA45j2Ztk$esYSKTw*3!Ch}0mx2KhS=)VNv zXxxnuCNn_1C!t~brJyYif2E#ySzagM)!il{+&_ z*vD?w=p%TmRa5%SxY3FG=EbX`heuJxs~@oWsPz@#N32=)@;36^IK7;~6;#u!H>JNO z;hyPBKubBRR-BqDcRkpVnxGc)*lpU(gP7HGea-O`Ha-=^d>UvZwhRz;fZ!AD#-1v+ zrm%y!pnCk|s-{FHl*MJ0A%h6bB=*LcPcGsww%oJ`93tOXXhi8wR>X(#Zb0sya;wi5 zNW0^Hu=P&h&hn~&oPKZGeB^f3=-+a`=E_FwROHUEVx<*XT!c966p z=?9NBa4z5dhDvj_3GaphUupq+-QOYEB__Dn2?&GSIY;*;kVpdwMRYT8_#wx(%|tO_ zo$YVb^)AvA{zBb76B9f}c3~xUaHRqnMEYfzW%4yD-J~3JB&XT=Ff0$vq6X)+Y-tu1 z0y_RrRO9kCCkR_J%yS&i-q0C*u&!Rf6Ad1HCu&xfTgp4HU zGMqad;4d#!3qDvH<7>i*Lc{M2>)3Ajob%bJt1#&_Y*q_e-yuegP0UU#zOwHZzVk7r z%z7?9?D_0DcFb*azknB+?ubm8H&sLO{RG204eZmm)wStF^d38i;?2{K3BiH&!^V56 z4-xOk;xqAYR(MTLm3?#}{)L7E(HdATq8;&E|G1b3GleY!F%!Tf!tm)^o&sba=n>EO z6fuwFu&9S0XXpEy-@cEKqrMUIA!PH!Fba-;a4iq=jq_A7zV$W)z1L%_w9enM-6l*$bz&e-j01)fot((668X|{2aYOWDYCpB$%CA^cxCAm~1MtMcEz3 za>Q!MR^kqf=etrX78W^Al=@fPJ;+gsMBX|0%d0oAQOtNjY3As!m6x9PQFe~q{0|2m z&Kq|qzAF}O;oHzb*Sk)mdjTk}EcbJSiid%lsi04OWa1)qHCU90G1gO@~*a=>b|y)4aO#YEJRn*Q2M>{ zemwx!hSFSsT(N{!Ew@fwwxHV!e1Fa&T{uZqiSw?)2z+A}XHRw@B*5Xa2Au@Peure!!{bVA26fsZ*B?&Q4$&R?9Bi(P~F{gFe{0t)6xkjoW$@ z=8!TBb9!XoF9*@bOrQ4~)=6Z0c9XdmX+()>JLdai&IdP^aEf6JxZ4&oT6BwZx1I?Y z7g|YPDiocq^=@P<3dl*G^2{4JuWh;`e7@?ym@4fbN{we6qCNRC#H@!fBndhGnk|Ic z+(!KprE%lV!Ghyf!9UpB@_Y6?fA4_Dgm-K`>UxXb68!l?7xlr)M@|ZQ<~y^iYGUpI z8UzU<4U3$ffc-%O+t9vrU2aEgo>C63qK~*a;uryOS#skQT?_UV1Bz+S9> z$nOroh8U#rMacJ%UGRt8(E3gu`NgYo-b#XaHv%J7{nB}Ysg@c179_|=dCj-gkIB2! z95L>Cpr>Tn0OkrwT|9W__wzV++>WAN}67qMH=;f7HS5*gK={Q=Kc7X%kxHJK2w*a90)4ez{MNO81B!E`t}A;#u54O{g%Huv~Qz zKM;1ferAl3+L#wfL+STVmv8y`ru!scFrMH8G?`2|74}Z08#eh8DZGQ-{H5V-;C^P3 z&wD`6`O^cfqv6a8W}kNE!EdwxA`xfK=_C7>T=>4h5lBp%?v)p%5sgQV*Rl5GC#Rl| zM^?FRzI;z}Mi+(^A#Ru&PTpLD^kg#~yS;_|*^~l&Ys?LA-;9-CA<0@_ws(* z>ey$|ti~vA%KG$7tCBQ+!|U+W^6=1>F5zAB(J8H`1MSASwKIb1sw3e=iQ=WAf7@>d zr2>*@@1BY!mA|(oMj(0bjNiJbr3eT;*yW9R%W!Hq#R#x5v`@=Et(weXW1pGj^HNh^ ztwH%M8v%dyy>2r7uxtcQ+9O?%W5B%WFtcI=z3}uc7o5}H$SX!!_8y5Ky+2QI2aUB` zQz8Z!QwDBvaMflb!F9jH+cm;ltf=HbQrbdE?c5qw&O^Pjwy|^9Ww`&HyPmb54$V-1 zzuf6rDg4qH&5*j!?T5Nr&*nKXclG$03FrA+H~4i)^|6t9=(bzf;*;l-V)LHqti3*5 z5GmZ_H^HV3U0Y%*2sPVx!w$;&#c3L&pwcP;^Sb(w{$|qbQ(WF|C63k-fPs~=n2vg7 z_(}0b;WDALmRUgF^rv3|Ufw*gG|GB)*3-eV$=ls+wt_PTB~v8{lkYdX)k|@Tkf#r3 zEjbzDZR+DUY@#Us>+nAEXH6!DoJ^Y9V`A>L31aPPz4JRx{Fz$FfD+R6lUQMXN^0*Gax#*|wXa*|By;P0 zENzsEKP23U=!n86Xj5!=92ss&Sfj9?j*QgG*}%UslG~-JXgJ1 zYw>zrc}!lY&k_*bR}jPFZSr1CEV1rP;4n^HkzbK4Bw=Zad$F93je=ay$2BD`!dNBo zpTiH%d6%y7iivXd!tkNC3lT=#d^Bqf!i6bAP%n?Am=$}19e)2B?P2SxtiF z9xSiW+<3ELG&K>_ArRAEjHzCDMR!Wodrv2NpHjybMj-bIh z<*cd^oJFKk3;D7YwyHvxvwK>Ht#`-GL+dPsD4EDWa|J-flOHqG{U@Ru+@@kG!m0{8 zS+k(KL(q2c*P3DTw}JH0E)=r+$b^(z^rWXhH`U8)XjUoSYZ8WN^jA7Wzlm300!MLg zIt}Z?Un0D_B;+M3$jAn+2c)FPCefo!IOj3dQWOsXPeI&HudnF3WCEOE&P9!3_RXh!XjIYAZg9V3-pMHX!N`pPrXO|MKJh%B33Oc^PFo*#8ZXyhq zLh3-ALZCpu6u=zsahvp{2UCR*pS?cPCzVnuy%x7T3z}? zlybr7I?~dg)lJw1`W;*jAFp!i^{bj1erfE)xg7y5m3y%dL^uM#i!qD|t&&P{eK6f# zLcDyb#4pJ1e84~MCx_Z-y7hz(6bUA00zjzgh$!ST7(r|IQZhrFf$^awquxS!qAyAE zcOh@ZzEGCcLM_Sf;vE0jRa=sM%r|p_pp3M2KIwr^4&KlblwCvUW0p_DR3uPQR3u_V(@%@yqP2e#pk^hsD(8V7x zHaHHt2EL}rBUlTc@KTLH$pZLZLilE0d%VbX-yhlU$8sdK>+!eIdByDn=Wc0vxmY-i zT|lIsa!NrYt;UIaD7UOkM&*b=gM=>wMcT#U1~M}%Ghc;PXG8^@pE6~QxR3C`tvO`F zAd?CCp@8p51L^wk6c%Jk{_r+Zr5MEHgB$4|dH^?>ZJWze5 zs0;TnJ^%wi?J8lNlvB zk$LHpS&UE5D&k(!+7Euo!$q(~ytlt=M%1!gm@7@G6Ut*_9pw^cnxDiBN7|nt?H3HK zavCS`wGS1q_dQz1Jgq!=Jy*=!Gx>+V9Il@;xyo?&2iT^t_!s|qV4!G$Is@@o(vGBG_~c=m$p$`;P?6LlD$YI%L7r!y6m4 zL&NhC$~JirVhjHX|5d}`-{Mnt1O1BtVvO_`0Xjoij}zSAAoHI!Y#l<t#5_Kmmx2A%|B+x(^8S|orZPxrLZ0IuRqDS1HkQwE z4nCIeXR9;#sdN-O28X?*Z-!kLJlh+;j3o~k>*lIuX zuW7%iBvT&}IO*ziRkC!>!DFy|#(^D&YKB;q^}?HyJS4e9?TK&qR!?#CE$i0YC>E}+ z?6@gx|6GIor`furv6Ry_%}pa|wKyX2%c5#JR=cDR)6hW+7#5mOYPd>-Mt~Qhu|>y@ zQJ}_V4A0hEGdurchTvMp+3~pj(YRdoOo#$n>ZD?b6#i;chz`KWRhY<0K9~T7kDwY{l{N&MCy;( zXFSg*%V?0xb95*PAr;x%_+YF-a~)p6Me`kz9`=Z4mw^^|d*S=#V5LrwcsFN;TIDPb z;U_;%xE8pL-|>P%ygD!JHAGNKIP0ekvra@N1xE~yE0~+EUUZ1vvgU@5Flx@M=)brZ zGNd*SyOvf)o$O~zAr>qYtkFwi-qsW^+MnM@wWYR#44j=}+sr$doMQeLZEqD7R}-!6 zhG4;iyF+kq+=9EiySqCC2=49>q;YpAxVw9BclXozzWx7O#=bb`;#_o(>Z)0@=9+7E zb&u7npVtk+O{IvqbHkDFY|ul(I-<&dZ|1Jq4omW4{vl?SD_6^sO;$iRbemqGY4rJOjL$krHupG zLWprq>;tTmJ9qb&_2r(gt+DdIcRE*->cLVBnbj$^4yD-EMR>#RJh>7&JTR=Dxkm6< z2#X14lUmGCBLSe=P1Md)KPRIWj_yMuvnLI&&D5=%ZvUd#CCl1GGzn)Kv2X)M7~ z=WI7TqccZd$Ks*w&oiCY4SIlTvFkN$jXi?ZIjilE(^pny=ZGJ>_^KkCoo=GZIAFEI zYg+r}6HSL{PoG6*bk1qUNt*V))-ILP#rg9ZXME1iunw^|;?IT_g`b`hDhYmULK%9PWn7qAGQCE$ss;p0o%>Q7 z&lc{k;@HjN2b(xC+o8RTp`?mlQGO$m+F?hB(l!S9xl$;vFtLV8r@WkA4*nkrP9P_c z2j(V{BIv4DoQ29(;Uclm=aiUb*#Gd0oE~g=vU{PU-h;tjXCkr@bxY}E`_3eftP>7O{EZo35V|+h51&jx z7oVDS4)6(~#KQZ7xrn&Q>xW_6h=q@!B%h@@B?L{81=w-akbu6&~_eD}xpL>xS>y+F_%i9Z68 ziZeBfBs=O~-;V~EvIk0T(P=#$Kkdu$@(NzmNbeUyxrQ4anPE(}&JdX&`TglR%QJ1o z2mNqbA17jXv0tD72&EcI5V2ZXAK=;H(D~jp!?q*QIJe|~t92;yj7|55MPo{gAn>jL zNQ)lLQAl#Y)G+4^(zj#JLh7ofFfCQpCEVCV{+I&RZ_={>=!o1{pr8Fx(;zF8k15{7Uc}M+j+;-3YLhNIsNu$@?)e>t^%;wB zN_|C&A;0TYFM(OrLmvNxfvFK|(h&2VtgZ(96q{AAqvgqSM|Xz_R>Z4SkVHs+5~9^V zJ6G*+^R}aYNnIM;0>aYQpPYqVDx_~SX&WdqL-J&E9I&C9-{53H^TbH%e!X+e4XZ>D+|HW_g*~1NZI1L7rCSszE%M}19x$%Y zvW#yH$4&iIU{~-#iLnQ@rv}uJc_6&|u!Lvw?c3n?r!Neu$Exj!!8vsB3`CrLxCMXf z!z-uA7&tfKb4~Oi)c`766f4u%^wB>nc!aj=`idS^-m1{6>8kO`+bOD@?6`a!oxQKV z#yoEVvH=@E&wu8=I^%o_(?zOq|B+qTr11O#B6aoLLGL}78ZDU=o3LqhvsH^N!=1|9 zqkBqh>y^%FQ43YD0LzGrfHO8TP;3C4{^<}6u80^#Pz9Y!O!Ro!PPl&$LI}GYKN_$Np$c%%JZ3e*bRfTS}p^*pNgLmG~19m97^M9)3Ykhb)O^0K-SNs>Z$zeXh^H(f~FP~R_)0@>-%X&bx#f3-N#P^h2e|?Fb`rN9UM&_HdLHJrt@*Erea-ncKqNksOV?io< zi~J1jl`6|L{|L1p6U>T(L{kU#+!@(CUpBy_75RjP1m_s!8cQ&^;eRVw5mOu6nXh-) z+=_%VkC}W6_u;%pu&0ziHPj8?OPe3Ucu_bVl**JNAeG(2;@67CvJRycAETioU}TP> z16|g%afzJ~1(FqvOuNN#m#eXM4WBm<1q9@$>JD^i9r`rl++6nXpC4SjJyIy3`t)zB zcxx;qz$@dGveb9YPrHc?E~JbarKa4L=eabzhNXQA#%nD zou6TKZMEzpOZ@yUVbMQm9uDlMO(lEzj9IU zKsox%23PS#j6aI_gxV0Lp7!rtn7i^>{lCj_3Pbh_1(`lbuqMOu(-FUO_I}XRrk;# z2b_#oCE@9%C6O-lA9c_QYXcwHDCZQC!fz6XTGyMO4?i_4sKLg1DtyZJ_)Q^f@kc^W zFj2t^DvdO(_MBv7LoBiGtZ8W6DllhtI@+~9AOFl;jCMPN>(npipqwpMsb`hnwc<&#;grp~RynYi-Uus)=f^7~Bp5~TR$*-=N17eHq ziJ^(10B=Uc!+I@St}~S*HAfnmSGD+wy9*N}#&@l9$?R%PK|sdF5SKe@!+5z_=(sDZ z)FO9qLd04k^!ejd$<21HyvW@jqj8F2eGy=vuvL2YbiP=w8A8Mb zkDK&XvHuJ##>YrcL&G_z1ghxOvuWMl%(^1}bMl4Eu#xV!8o}E+;;i zsMP(;WX5?Ds`&7Ff(3$mff=HTE|(u~0w-28G%Gg?2WJ;jev2D5oklVCeJwi$9PeeQ zvm{xN4y$yoYVNkpXy^S(kFJUdG4Lv>@v%5QWMq7MXJ#TVP&ruJj}{C1Uv7mLXrn7V z%F|2BGdZ)S`x@)K?yY%rxvnMoeY3BUquW0lresqEK{N?G9>w}6iF#F} zNG(d1k!vX8XcPrIP%GgAN3-kIRYY@DS0<^6S-z=wol#TK_g6fkiG($s86nkj!G39V zXIvDZ)RVXxK1P*?EtQoBo4P&c<-%}Hn0?b*yW3Zh9^o!@U$|rE>U2aU?6nn^q|}TZ zlWgC~4qZ*CX1`L|12zjeglr>`t3Q+9OC6{1aJ}2^-8bWp+>=El|0$HNU^MtO!%(T` z-31{v*c^R@k7{hz%B-n@+{EeNG_${pFTov87ngV{?n>b%lbzyibltk^mOwY`t(`f| z1UVc}3gAgAOYd{(hlAYix1!xWE-PcA(ko2h9)Cx zA4KRdma@$a0exA3)xEvljRZ>td7fwnNp)TB1Zux$~NVRNU8bi4ay5NG@ zhr3UyNE=Nuj{=6Hfc9vUsM5yzE+)}VywLY3OvMy_wTT%LaM{%wZYBCuJyJwD%^@lA zz1E@LY%*KLT9x&doCGLlOzfQRCC~~z62Fjd)Z|TJ3aq3`ul$)kVL#_{vskX1P)1#( z@v1k#G8%F5;l1_8_C1H*nR))>1j_X7~isgd;pdc zIdcA7*v7*?LyQNxXe*nAOMJbKueuMTXH2`?I_jIin%EVF89?hq8wKjTVD%W+tVbd_>)OFw5IG%kCJqedw#NkTRMot-9`28oiC*)h8{WWrh^Pni)JV9xAvCHK>YuPz3NFg&sak@bp1E}*kv;{sPp@)6k7T`LDH?Y4_p9}IPvf7| zkS-L?TRjE#e)%g2zK(~f@wtt6pA>d>93p-k*mdmk_a_6T+l~iTu>HcGq_cg8MUoOM zYg26Sy>`%PveUBM^_N-RFZg=BTOl0J;9CabL$a^$vyqt>Yu6mbUIUKWtfNT(4*wwO;orIFhrHMJ=^Dixs7 zFD0IltL`@t)Z(ZvuM7pVof^Ui$X*q;CTfeX&=lb13xY)b@UU@41W{+UqlE|Dtc@~c zq0nB8@8n|je@i-W##8Z&$CMliYV)@4iNP{;n17 zn1trP_v_*MIO*loJ>+r`sj#=P8>Xy+trBIfjo*DnB1WG>Q1!{EPj}Ka5kwl(!GsBIMHNp3(x|GsVFFM+-N83Agf>q}tahc1%8TihVt4)@qb7@4MIogfCU37YVBvxd# z5j5Yke%yB9rG22_vR&6YkcLE;S#;`8%$)4Ybex-_bRA~S70vrx>R6XMGaL;dS2a`@ ze;@4&p%+eA?)ZMQ4K63vj!uOw-YZ6N9GMntF^X^|5o9TG2%ka?VY#}ya zO4I_uyMca#9$m+>bthnj!XIr4miqwMJuA885Vui)R*p#$a(V^@_%dz%} zOsPoBjFC~kp%J%4)*e7*Qu#vpqPml$>uX+eb*_DXFn1_E@Pg5!d5Cly7NS8w4`&(6 z&RRR#5auRW1mkB?44m1TzPr&j?4Mj?PbE?(YsbeXgZv{c6cO^>?l1kub4Rq=Zbu%i zkrln^!F?k8&12j5cx-EcLyD~eywUAM=+c(1fo9TN%kaVRGq-T=1#Dc#(@P!$KqAWi z@rmCX?nlTwx-~J4{(Z=|y_b*d%irxUx?U}|8;Dd6r*4DGbk^`~;p?4u%$q;T>|RIw zMn2}*aa(Nubmcnn0Or6bd}^Asz7@U%)g&Yh=UN^tFB!)p=X zDV1jgCw^CoevEQgT-rK^)1dk$tCC#2#-1`vGJIh~ahRV^#_q8GC;FI}hsrr=#-)ri zQ!OK-Bi^v{%VaAKYN(y#LbbHZW(k=2Acp%QQgMs{w}(G_uHbjQbU&^Zy@_>^ zO(nfhx^bd`kb1<0UF)pX=VN&-wm4`+C)gj<;`M(xqEYm5r<<`( zQp<)q=`#ua+*zUpY!It**59Abk82O-iT+O1ip*~lTJv5m#o!l2s-v{RP{SQ~1cT_k z)ttO%!JSXgZlBO;tDA$w5@(}|Hf>u^mr4lB=-_*)k^;9jEUby zlq=P)eOm#4-tAS0#P*+|zr*TX-Xnf}J^lJ}1;xyTb4${$XRDQJLT2(5meRMk^ zr|~DmTDk2y9GM;amMQ+-iqj1o8T-dnejDjNVihY;${&D2Nb>Ll(Uxbcm*mJZlWg#K zSuuD+>$ngpuKgJ}W4?|3WRJG0b2d(%g!XMXmlS zn|#%X{6(!CHw9rUq~7;!Kbcx1@uOpZUH%8&)0q^fSZdMbe_%;FC7Hir6v*zpZ1M&DXNd3`y22bHzP?#LlJ6OEx--+JQLQZYeP z6hji!Jk)JNl-pvwHda2dlq~Ev>qu+FjMZr3V*?Og7M_8={vWW=XI+nOdtUUN8v(bZb2_nxn$ z##YVTIMy}vk?2?DhkWw9iOYw{F`-U-Q(e;SX%kg$o zrH$CsYxxnW@q3SPGo!G?EB|3&7_-#6^tqB+M6_VJw})~%4$6u^7URH9RkVnPbMiDN z{q&2S&0fNUE}qtcXeTo)KU*`O;qU6l4Ep3j)EF82sovJCx2zxpy?Ub_d?C~J>#;_i zn`a%iYOk!;$+YX~%Dt#rQp5C3rR=*!=QMdurg2-L{xuffAMbtguy3b2nrM8KuP8pE zLy_{n3#tdpsIGmMv$W}S3)}T~UvR&&5otGZlp{|YOm9s`6BzLJFu>>Fx<>8TXbpWn z33&7vrYWb{wv${apD?#FcV7yvZZTjFw)xV=AdTR(DwKbAKXo~U7E$a%4LgP7xdL9Yg#UbnH79< z?!L7QazKkO%Qo?>T>GpXqI2M$Et0BB+g_?Mul?&u)=3WoH;Ke8jwd@bltnS9j_c;6 zS1Q}5aK9BB;oWPa!*ka}Dg49NUG!?oAD{3;aGm{j9*ESQGIvv$wZxKgS}tj^L5p;x zzWk6^lS{1^#n4mv=rxvQ?K$ycf$K2{Z=G4TI629^+tRv9-!XYm!Ts4yzW-g%PO~PEJLooBcj8 zKJyF04UC_>QlHftzs!hlp^x@dFPuGhD3_7EsE+kqi!{04Gv5%-aP%(n_9uO1Bv%Mh zwm#Jmz_eA=c${lB&!?K8S}tj`RuHygjd6mEZo`W zlrDHg6B0K)J#h5mrmsAUDX&ts@tK+9t#Oz&Yr0YZ>i!Hgh4^h5=Rc(MxkNyP^qZe~ zAuBe^Yt$q%@?>z~c*{duccLNAhv~LQ#^d#BErLzKl9!S29AX=cW&-9tQ=e7k13g@v z2#m_LiV_`aP6=zQ%}<+`(rO&7y_=4J0)%*)fD>WXO*Iq9>}ZD^JX;lvF={-BT&*5K zV@RlWKK8WnQZ8iYuUtLk;?ne3%MOZSC0u3U7q13vyNqHE4i0~ep(SId19Of!jCRe< ztYH^F%iI*e%21vvm=o;TOX2rUy7mz>W>_0{xLkfWYROF9|Df*69Rij5~cH4aJ z=|^W76{{Wf^q#M&u07p;U&kY!q0l*Bk#D$`@Y_i@!K6SR(1L<5)?+fY@lZ_Xwow1r zcyA)P*5sQ)>+wHyDV-3%RxZ(95H>1(;RzYE+6(`Mcjt+mdJil?_>0k6(PH>9PZ|-&*z+v=c|#GI;M=8wMIpx>Byd?l4%gl;zK@P~ zg_lWJNFscPYq%|g76_;~>FU3aP~)Z{4c1S2zI6)u|Jp)^y!VkN#x=&kMi$gHCTF-- zXmXjF^+_#*jbE$b+Nq%pas=HAFNYnzE+m+jje?&eui?3G-Q;;0R-Qmn`)Kg}uBQCA z#wYXN*JH5R$FLR03dNS1qb-#)^B*oteYvw$THYT0iC7p}F4uQE?^S6xeRVk!o4YYs zExv>h8<|7Y6(g$X*q}eX$w%c>EUX|(afx^A z22ANPL0(}Fo8)5lC-!ezG>F2vz-(y-Mx_v7MCVrbyTaBLu~brRZ6(^nEoPxfc{`do zNFkZMp-o|J?Lf4%*ANJ)oz6BKH6F!**-V#~DJr&R;Qu7VgwtziD5cza>q4B<((raNwq5SIqOr~7vUu9BQK1DtQN)VaB;u4^Ja2w1g+BMY-l#Cw$K!hAR5hVs z^}O+-EU(*kZ6+;EBzGtk@!*mTcMuhyj++RrF1C04DRR|?iEY#HGo;#q7>ey%dlg%h z$WQLHEo0gDCI1hN;fqJTw8-#AjkcuUPgTD+C}!hundk+>&5cJsW*6r_H7R5ty>-5Q z#MRSO)W=(kCDUGLCZi6=Sr7L0;cjDv;%>j90MYOF(g_nR#Al#p6hm8#Kf`FlYu^Yl z_BpShaM)gQ`a4N-KUQ|+!@JGm(Pg#VHXEP!q;C8PJHighSh?=lti;pDlHHjvN?Nq? zxp?WAd}*J2m>9Zu2miL?yU*ubRtKji^b~OtZM85w&Po|e zTIdTr-r40`>k@Pf^F4&4Y^R3x<%Hyy{Q%alimY4R3ugC(kBu#c%M~&gomx1A#$)HC zA&V4#C5@G5o__lmhurvnDGSUUvI|4M+D z(ps_`VV z8$)1vqKOA=kr^OViBMn15{fswH<(ON(wwWSU07PNHk>b|x`}GRt8(aX_Qs1~+-MkI zO2UP8?-3D3+uulUC}kGcz(X^T){6nJL-fNiyhY&8sJ%A zcZeR7`#ftN4(>3(Iv%PpbdESBp7(}M)oAy28Zfezx-LrB}#|S z)9*8PLqM_~pRf30mqDMy$s|Yl46!t4uUI;zx=~3YVE~5Mqd39+bucdFu!`{IDF>ml zggQ#Cs-wZltrDW$>prl~?bO3s|DI~?aXYy%I$z9`KR}{)#kCa)FDj;ppjkXjcz(9P zRqGVPp^JkyIxMB{gajAWt3Po2YkT($o?Hz)!jK8KCV>n(F_I(gAPdSq7)4eCmfU_? zsC@RK*^RkdPlBlmGieIesZ>Jpm)%Cz!~un$9{5baH2w<1F@7B=Bz#DuyWbRvB_G7F zy)Os6>G?TJNFo^f9-2V#Omf=;-K32~U-C{;o#cW$XND+VZ}rpNbByzYrNw@lF$k7k z@17dBD>s6w%@r1<~`(W|CY$_!*pBl#xV8~tVBH?;6>=xE9_q+|>9G&kX_4cy>R5}Y~j znmtQ}&vR;mt7a&pRib_F9$rCTy{2Boq^iaq;yE_7FDM&b!yn_%Oda^S$D(UemQE_Ay<+hL*ws@}5G+#JkXbKS zse8PKtxWinwB$xgPkYh&v!Imgr)DCQVc%Q7e89z*q3jAuW>3I9*>@I#SD~o}b6X}_ zawTXo+!sD8nJMva>+bsHwGVU@!WYp4D+}9|sS}Qa_1e=~zOwZ58fsiH25Yi zr>W!FM9KKhjgf-YSjS6?%K>yS$=PzOZ|NPt5;dWRZb6*>tVRY+167qCuLqU94M}B~ z3!P$CnF!-$@GGLNzTn=- zs94mIg>m_J+EPN%+a04-Ia6-G$EY{{^1!9a+6DUcmSRBXuMUr=i6EfEfcG&F0hitO z@JV#=X!-NGhp)maeoPLn!P?Vla_~g&BCA-q6oS@=5*Hk1df4Ux7e{7Sl?owx8 zxxD@4H75Moq8>asM3Vip^^Jomp;ssYVq9XKpI6A1mD~F|31S>kx6lAE8s`yT4%CmO zhz_6zc&7z~!rBJ__AUW#AdyO;+R2dr5&?cb|HBO*XHHaWHKmY$4K`E<jhsJsvOa|`ccIRVT!MV`}x|7qU~o?l~B%{m(S`X*@n`bF*p-qJ?0rTM}tW8q%HqLBo*Id?k* z9|9j`?^3=4Rf^y8VC-U<&c%e}ABF4hBZ}kG8O&^3om;Uq&J>w0$=#b>YBEai6?J+C zJgnRMi}0u zJ$NTq{7Xie1M^>!bFo>A-iq#&7Q#H^7P(zc{d%3IUsPWM)8%+)Vd(dk5102jiF2;I zQk#n}N3BkcLt03$WNs8b@}J}SatoFWD|fl}RI*t+CmwBJ_~PovFo0CDAO=6#q(u3* zfnEYB2{IH`Z)O8_Z!OMWe(dgkmVR$W-Mx2a0Tjm!Wb||H&(lAygdfwMQ;tJ$IY*3niv+;cLXvLLp1T(>r?+tKQ6|qDd$ztYe z;Vw~Zix?NSiYY*fL`j(Zw9SF;#TlN7Zy6whs;m)hvHf*h{!3cezPp(>I5pO$u+IP> zKGr|YoX7vBP_c`z3)qA%gFi_t$%mij zZ)ys>2*S7yTp`<+_5{YmCi*NUkx;s%U)j3*LCORMdCF;vikv<6leloJ2B6PP$i+t<7JFykJv_Gfas5HsQ=De@liD9R2qr)iG_*%Z!S$Z-wdx0o~*1yl!Cs#8G zM*kj>Ra*GVJ5I4vtG%opl8_Ka(SQrB0N(GrSTNxUrF2AlAB};bEujfKb}!UATyLrX zu6$wC_i5?QfDG99cimzObd51_Y*=a_!FL$Nq4^+-*-Jb4#uKwUHJ4Vki^ZHdhNA>7 zsiRWe3Nsg|ktcAW8<+;GW=MO(l39(s$tXIiW|a-)8ksD|(sr041}ypxQO`}sJ?g5^ zUj?)H8906B!iIB}>5eiDIPV*&)+(B1Jz8BK4Hpd~+oUnSD2;UKY#t+=P5Sqq*H)6E zD5k2a-uK0T`T99s5Q!R-sj;NcHaoU9A+GU25&E8nEw&0cH;bKAx23LuA!13`WBK2L z=vGjHXkg-YL&J%-B`+Vwk_ydfB#;0qqOG!sAM>a-$0^Ll({wj7sm5zru1+i-5}Pig zlP|6vudHZc6;@qFdc5J8>&I zL+N$6Ds&9Q?%Q!hTeycxFik^EQcW}&)23@7&zAyS_CYNL+Gds1k%Q(_=0Zpc z;(p2%_7}q5gB;}HQvnu$?bAY-HMCGpM&{i@DvXqLGB-bEz8ePE^3AKAjXqm%3J@Md ztoQ<;IH6xWh{f(`nR1k#mSV95HcZOz5*Ob5x8J%O_+P z(hV{N4{^L(%W{?7HxSs<8y*(wUpfOuLZeBc+ev5}CA{NAet z3^wy9LNb8dPvi59ohcDJ)xx5Us3kFvtlWXE5uCnDTqp&cNV3?XJ9Na)IiM^?a7e8J z3bj6K3@2C5p@@&>Ki1<flM zPq4wG(rZ}7KV-%|A%`0U)c5_BsU0H4dPmh z*c#axTiBWrF-RDj*g9J{d(ep!F(|nhI(yig5HTo&o%aZ~ zLb3moDgAfo{{>PSz`^q03DP==N3y%KmUP3J8jS{cbo-n6wK0B`h~i z5+$hm&zaS}dXpk4`E;Dwe#Ybk8BI)^(V{H%3)B4_mGtq9>p0f=n^AcnSBTZ>xN~KC zV>ZfgU8hPfZNzZVfe&nxk=xO{Wzt)u)q{n1X_L%sPA_JX4`Bvlt@oOg$+OmiQzUfGtG3mkPq`GXN^%IeV*fzrE(H&4hfM*|rem(8Cq^797etyZZO z`&XJ}^TfI*8i(m03l$V+-X(r&`9Cq4c=+y~MKpyt6NR8OzX!>m6G10U2@aj+Di({w zat{f55uXH|;;noy)+$w>!&jj_j@B*riOZfXnwB*#fJGGVXn){UrV#!681r4v3bP28`KTJv z`xpUlLTDBv&UU0UVoi={dj|NsG}zXpdZ;eECp5T6sNFCv(KBGXgR%HP3p)ouQ6&&Q zTgg{c?;B}^C;vn~WZY?5d)9NHXLJaSUZ?w@m%Rlu^S@N>KlS$?#Ug0nWb&7cPQ>s( z%l7{(CZCn@FVp?MWAd5)LyY17mNdxeUz5KT4C223XCV_Ys1a#_*!QgL9RCvXSph5{ z)IA874}ztGK=>dEJPQb34`Aig`G=9u#ta%_V+Qpwg8=n^G58#;03tR3$d2PLt)2-) z%IEyc!v`>f8Xy<{%wz%~<+T7Df7$ztf87F@K>k_(`eg_CWoBmrO<-mv0x*LnF>`>t zgI@h@v4Jc&L9>`SK`j=>zrlcz{h(Q(wOIh5)<1SE08S9RpBdzdg$?A1ndP6>KWhX2 z_JQL1ca;4v!k?3a=-*i!|Evn~&hig%|L=+{|EvQ5r2_CbVirzNoB+^S0}=f}o&YR= zkMOS@0Ps&vm_T&>zx|*LXaPXdegNA)GeK4ye6r^e=Ruv z9w7_k-%S10Bmi)N*5d?ec4)D2{7o7N@vp_f3G&Ot_*Wj_@378)?l=FO+5ag3zznK@ z|0@8%3Uc*d1OV7rnEuaJ=nNwKGyTQ>|0@6h__u5X1?}94wCGqFng1PTVg~#b0AL2i z_um8n{$pSLZxR3?Z~sFA;D1*0->Oq`b~JG|GACk?wR5yFu>RMr+Q0e)e-q6h;SAcd zjRb7XtW7}v7-S6G|J5>JVqpe}8OT^TIe|9of4lyv_J8UBAjyUQQpx{CB!WTxKg16J zY=Hlgx&NY6A!=dmY~uJ&CY()#P5#;B|AY5W#KOqQ!SbKG)u6_Ti;Gj1v?L0*IKcsr_I}1mI4LF7m;v2@4iQ@7edD_hzoH&dWInG+C@qU4Yns2cSd3v1m zZjL&@&-OHsW%FFRzV646`%m=^>mw#;Hg4G%q|+xj)@zdco69D(_Mu(OquJSs>=NC5 zpP4c^hM*CnuP-*Fm{elku9>_}rXdd!qh0$HmaI2nniXzE!9#7BhENJ9Izn^5-0Jv; zWWx#U`RcD><2n=YQo`v*yyJ2YX8CxdU{ChQDzgg4TO}0W&mhjgkCMl#DL?OYt0aH$ zo$0QaJx(9C9v;LJFe*~1&RgV^W`GlGeRl;v6TrZN#pvb70W2;OuW8nnS&e($VuT{q z*JPH}!zA-1;GFE3=bX_Mtd|m;>VHLlBNu{fyeJX33-7_cRs=lw?8^IbUV zMGDq=&|K1s9=#(oeI@^>w)Jql1b-&H^T%LGhzMB~bR&9JHUmV)Rqj=-jy)mQM@o7n zM}mo!4Z8=NL*Bw37X5;oX~B~OhuCNMvxwtHz`AfPof2yvV|B!4A3@F@=#lITrpemB z?5VKWYR;gDX#<(9q4P~CJqR;p&_WtN@8oJ{DIUU;VkP`N!Hx+cGT!zDex%9g6B<|# z#-Y`3w5c%IhC0B#qP&?x`(|A>HgG=?RRnWr#?{h1# zWBZl$E%Eo4Tz4UL^^Mg0M6W(*MFe2de1b5~DQHEL zZ2VGOERt^I}4eCp|D97`>XaTR6C5>QNl|MoJTwa z+mu~`jrn{dX1n?hb1G>0K5`ZFG)#j!GEA0g$NAB}-Pw?=_3K<&BZHhM=Hf7)iTw(q zpw}+eZ1ffJyUz4$4SRf8n(Pk%AhlwRv+{yJ5|m`m>ow0Ffru#MtmU5hFNO%gtt?i zHpf$M6JCk9qWPe>bWZEjZ$I&hJP0YU`Yfmk+)7YYidN%RI0q zIvo4B;Z@`LSN2lfc^*!EOR%Z=!#5eT%LC5T^Sw!@!hUa_{QZKK<>;VB#kC!e5kRVs ziNSK9#@IqxO%osKxGPjU`Kf4|E9i~+@pUq7xn$;EkP}h`3zIF>%myHus`uME-RcF| zLRjb{`LhjjY>EEosChVxfOWWM+9kJd+aF(65fCz(qAm_yZ7G5@0fRTXqF}c7@>WK~ z`+rOTl3f^!l|UK&e3PAB#urGF_2J)jD(+qy=F4OcKd4l-3|v#{NgMOWZ9~ShemXve z-skDXa3mm~!^_lh>R%M}@@C`U(EM@x>@BO*Fk7w1^_`umE2apmyUnt>*f(!chTO6 zXGVDW6~S=l{<}tzKQHRYHX?}vv$hc}Jtv{m7fLuAwf_KT-&bQ4U z#9k55gdA|-6JDkNrSwaXrcfjmZXh4O$8p6K9`+JbT(QmJ+y^Qq1?= zsoQ|+PPF<7CzoGc(Mml08F~NbOOoSRrX%56r+t&cfj%PG3g=S7?~MqyR`4$VdZ$}q znVbyKvfm^w^do?j>-i)A%9xT8Q)OX~9}#DFK}3*{W>Wy9K5=Rlw?(Nh_Nl)U08+aU zFZZN=!a2*IbNKg~@dtwbM)d>Qj4Q+XCIQc<_OoIO#>x}Fr*=r1dy=?jv`t$q@wD} z7!fDB-J4@j>J@i)z8>p;BG0ukwv3r#+@*jkheYj$n8KId_UJ@7J7B9<``JR|M@P@; zcXm8V_$=nP=eG1!c0~CCxN+=-R<#ktc8wf0(7q<{2JueVE&CK)OI$avW|4UP1^vg` z2U%rnR(z6PaR*l<2mv`o53N|7?$5D2Co5A}cuZNqie;f^*$m5~1eXgi;`yy@38**L zV#MPS6XHlH&T;s%hNzpjKY$_`k{#WWwe0lP5iAe71Yg4+a^Qk^^UR3@0sEZ<%k0SG zlh2n)N$p86QVlP*&ccOOfh-%lDPx`&!8^3mE~nl8Qv_4!YR*|UWTUGuI29qY-)~zo zy1!lGQT#Y>f~H&t-eL=~ug2H7(&S=Da-RCTJ+;3O=Cx~@#S|ic0hgh5Gh%Pn8}}WB zDMyz}rTD#=%+q~u%2*WakMGxdP_soc)DdQOT(qDoJpMf6jivm98f+nv)iY`ntLX`t z<+|WKxs8AM`DXAn{`Y?BjTO!f#N&SZ&&_B!tlvOw!gk$W94S*qi*a`9gjBDP{PTp# zi>TC?fZk*t%P0H_gx3O}<}n_Gb13fLXMa2&>pI}JjyaUPu=tKP0-x>>z*r2tVTC0ZF7uVIr0IFSi zC#<;p=hCgZ>j(?Kv!EW#TXkFD+P?=sGrevt6m6~WL}uJD9<-0&d5?AE&zYDf~syZj2T)i+XQxkZ_E7V`@5f9gk?sS+)Q z1GkD#vh@uB4zc_>0cMz!KO3;V3JHACvz!0nRqKMG#eemLwMGld-?s(pN`dAB4SyOD z`8TrORy)cWJuqyj1(y1ZBmt66%BCT9Ei0xYF5^AY#Px`IaGJn&Gact3K^KvuK}Ds9 z>gwW%6v(`ZRQ|3Dh2VQ|{G`P_PlR{wde~$&?d~2^FQ6?oFN|jR^3ys zNRS=>K$eB2s6~V=Ij{Dr_Wa)Bq4Vnk^14BaTI7bc+qHa9I-I$3_dSp?I~n^*J%cxf z&9CaI5cx+-9^M%n+(|OT(y@BNN(U2LV-IU&StD8B2cE;8FVjN4XLtj{*h04TWK&E- zOhm(1DNHB7l11H>19Z_BYwLN$I-5$lhoc*0krz1P zumX)s02-De5CSi;UQ1~JmWbqH(Kt*6k=V|Nwru9hvcMl z3~2`AGD0y4vo`SsV~&&b@WE{YdWrMLi^eCd-i1ss9$5p{m-lk|96*yn7Fz%LU`{{n z+Jh2L1YpeK|Do+GqT-68EeY=KE=h0*?ykWp+%32ScXyZITDWVVaQEOA+&wrHE=BYE zcmF|8x(B~!XT81Fd3SKux%a+z_TCTu~As=m{)pugD5eI+U8mUnK1&1#(e^iK^YPZ^W^?Ojl8|kjD_uW6mzR@TYJ5v|wu;1F2cwYpN-O zUgKZ)fj)F=mNq|-(vw=xv#ER{3ArrFDz8#Dk(oHO&0S%tzQI}aU}p2TlO`GPPObw@ zUv?QzE_U6WGcT=hO#ga0{QZibEQ;7@t8#A@zPG7cY);*T?ax zAMB@&v-Bi%M{_HE6&>)>6I5b$vQIV)z3D=j!#w(a66}3e;4dQtlC~-na@^9{AG)^^ zEx(7pJ35tjx446Upg{MrYwnJbYjS4z``cKArHs8=Kw<&CUPmd5r8&X!RFvl*&kpe! z`-hK)%!f$Rly^8-s1whzks}w`1Za{=H)ZS)>erE1YNJOt0%1SD9TO9oD9hCzIBV<@ z7dS6DPN*kv0{X8X>d9xb@V+<+Bqv*%kIsLy7T6{KJa4gN$5+4cbq2lr=&|vssb0p! zg|(<}?E6wx>ypBtZU0^#yGH@(P%Fl@4^_`As)Nv$3vo$}7!i|C^Mw~-3&#qGpqywp z@K87Jsb&$)*1-L12mXakEYi3!?XCFg(zVO)!^ph|pZ$8rV~m%p*oSL~ifGwBdDW0> z3y1WuM%sF0XA?A1J`d%$`a=cPiy@ZcY%!*J)lE%1pkf|IFk=meI5e{;NAuBFCjlDV z1?CpF`y=;@C6skn$a;dr(ex`XR({f*0&B~@pjY#efA`4r?S9+l5B6#oK|}oFoq+*u zx9L+q(nSJg32N477({T_a{8gY5X#<&=A(Q^7clIlP1nH3zb)(~GfPmWBNUt?&o>~p zwegWY_VVd&ra715{ZSt(mah8mP^MYwCedy0@{(R`Lyn#PniAV;RXr8|jax2Z**9V1 z*q5lwAmx7T+f=WXX9V!TT@~9Q-Yh&i#mfY(SLcqY$XqY!=mV%j1$~$=g2eQ-gWTE> zL(c-GX1BiK?c)}7119iMMmVJGkx`8NPO{`4?)pUD_jvs+ zZXY}fPdxHv%x>9Qa4keC6KsNV&?uyq#yxy7mGcLogDglC~DHz*+ zN;0D1=1=x7CSZp*RY4aDu)`YjA;I&f<)DOuOAMGKV}ZjK(b2TSWKW0?CwF+ibbXEV zi%ftDZ4q-?@Ix=w_~CeX4YVG#yG;-}i6Wn(n!S8mPtIkTRSa7hP|Qc{Wr%PdaEi2c ziM-76vtxx;lfv9D4MZf2;2{b0&E~cO)8m+Dj!i3;g~-(hKG!#@8Q1ZN7({R#lKaQ= z$DN+VRiinw4*PDQx?ISr9_iw)nwiO_B>ZhzgmaskQZLK=$p{2{(+V~&wsPk-j`3@4 zKwUsLnp8C$-Ga(p$T99Pb~VuSBbrt+&;H^TkrrU-(h{rM22j|#bsKKU;fQ6ft1WQQ z#}!!2C%ks1$&9T-d8MIZg@X7|o)$R>v*6cG1NV!B-(g2l9+kn@wEy@iS+|vM(vfs1 z(z6m`{Hq)b~Lx~ z{7H)%CC11iC+Pd zz0xMw$aeb_m`h;-0d0<)8qw5Ay|gWIg^V*n;#aMzrHaskh4GugK8Pcm25Z*BHJ7fb zAxJaX!It?(M~8;+&bC0lS1-~vN$2ISS;}i)+sFD~kFPj@LH@a}wzT?XcQOX!eblug zJMF7;9zk)>d`s4QTuaXNqoXe86(e0Jc1@dakMs4-1KO5k?zzoBU6~PL&J;6@>{}{3 zl&UUU(?XC3>mN60JG>otRsm+VEZ8WR?KgJ6X1<&Rx*={}c_%K&%EN zvEidKk*9KR+)L!GFGz!4kx4^)%*{_7_{4e!J~r!pwTz)8*5+;ZQ64G~!D^wD;S~wR z?6*%#rZ2X&VfPIa)6Ntg27T*XmkF<2PXRP`HJ&#HxZf6j4KTI#-1(33JHjk)9~vGV zTI{#|OUEUDQ&Sbl&z z$-(UsJT!>1VUg%OcgOXk;cjY?*tX8N6(n<0b_ug|22&5>C9!?yvW65IpqxA|b)wv} znq)sL>5pXu(C=N9#G0kEdn}Mm7hu$$b{h+#y5TJnW9+2eM>O$05@mJ>?bLRx;BeiC z0P9ieg{w)tZ_2|w5cdF3;C(RSyC}*MWY(ePY^GQ-ryK~5L~n9r1jM|~6rxSK z)Ce?ByZ9emqLDbu58rr)?Xre8+kRa3UEfq=AEDBjS*~fH*w~7v|4VYs6iVcD*ZdJW zYej=@?wNOk_H*A>aPg8N%I)i#&#c3ME~MU53-#{L7Seq8(4BvIqYmN7*6e|9whHDPfUx|%oaYJqq-@Utx-#~;eF~7dwyC`I|$SJPOMvZ5o8SB zhfZJ8Hcp$@-x4hfL=$hpbf>vH?h8atOugpxxOnDqAW}s8)L-!^89xB+5C0M*&3u@b=uMEJA|+_Rq0ay^*ug(Y?`r8`sdUpo7s!MG-EV~Am8ud z=+bwXxaX>|n{E-K%UunjtK;8Xx>}Cm_oBNv+?dt|CbWA9k@4MKNkeY;k4u6TJa1U% zU||I>c?#)-f1w~O`UK=+2guk|fa?8hwFpg(&U4kmMuw;h=!g!{Yc-#C)>8=Dj}sVv z+I?)>WgVUtcr>(`0P0;ms~=LGB6mTPc+a>w6G={ZQ$q&*6az9z7_z|=buUb~^X#jR zHI(Ix2r4_By;*cc6Z^#N`1K&5j2jH+=$Y``Yzs1>{K(VI4>r|WC)T3QWyKScE-dhqI79t0byd zjz`8kq`rqeA?j-3$7X_(h?;8eB@#qvZ++#cGzzn$<+U{&<$G!i^$P$K>$~&LyGc<`rh2a}-EvsiUq9?0f8^ z{+<%_H+A`?zP2L-U&W7aKO*= zbg?^I5Fbxi-#uZylBbwx(wXmj@B>1%OP4$m%{%RE`qe`qsWEIMw0)dvy$cN8s&F*+ zg3dy0u0;Jb*)h<`hXa%Q3U*oOY(q({WAZgLU>L@|CWvpMHFvmjTFtUsq&e0CJZ;bb zrn*O;+*^PF?}~?Yb^QG9Kw+lDQ5$kD6u0{*z`#R!fs@f8mzV&ssYDnk{eunMx+R8s z;foyh3uVEsmjYp5B1n`ceQ;90SxX*3q$oVobca|jgchH)u#^_drTV>_H_ zSP=D^fBj4N!#~SU_WG4$*fY;v zWMZk~QD;)ThU3D62W_d+q$&kPfXH2e)qi+&3imSHU=5d>dM+8;Yqe~Mnu2H{8H_b1 zm@IArj5jIADKBHoL~f#6wUL1ofH{<5?nw^cdCxHyu|tff>!&?U-}-9*KKp)VrRe9u zxnmwUZYik6DDXXdW0-)gS6exrcW8#1nwOHW_|5betwp4 z4@+?nX+(Yii@$jnC>TmJF5Bd)4C^lO22< zlN@JY%~dlfY;KW7vO`g!Inr`w$K1u=*Jp25Uqr^A(eLMY!8$ca0Uo7+)8l-_eGp_G z7MUJ;i7Y~H_ zIUjx^L*hk-wb7Zk3aT?9w55UTGrivU0YPKaDYn_7Ny=r{qnV4^!1%T)JB;uU2`HBo zK0@OOSD~=$bL;U%3a0$MtAJ0&=o|upsElaU*b`3Fu`wlTrbGXX4JcUq>nRApm)-?K z8e16C^93=FB16I<12+k5a4vz}*aXsjN*k~}8~AaKJ^xNx21SA@Ea!0j7!+sy3nlMp zZ9>^-#e0GljSYIFy$JkldDqueTjs4Ry8}zvMXGzKn{v0!tMv#96&t}XZ`(?-xes%Q zSL+gKILMILtS;ec-}a#8k$_ z$jUl4HdcLKVC9aH_g+KjqH1_JGJa}kQMFD8Q~FIi({^lpEQ*PW35PV!dz0OGCKeE zZWzw?>-;+xH3fv|4?tIA?;_O67R~rnJJ#o3HWn|aN#ij62zXww9?$oPl0?9bU^72+ zC`nvk_x>@E-7hk|((j$1)yXK3)ziYb6@+(5-w5&&AlIxuNPZHieYknB0^0~5321g| z*>+h9WONBkY^4j0Y&~oQK0dStSi)aq(msq=Pyb12xZZjrv*9kI5-~flJZ*}DCUhcg z8Zx!#Se-Cm*rL1vpNNswqdU|wm)#4SEcDU-TF$tw+JpzQ_4OA{iQQrzBjiCN^htjkHBDfPh_6H^ z&c83w(PfAmBzDc{?eacPlX&C%q~sn#-!xcrl&37WXdKzXC-CsTCA8r;riL1sq4h$%$T z9iz-X$VmRAVoDNXF$ZG|6$uX`_F;%AspASml~3gusGW#T99T<9{#pB4FHl;uQ>8Y2 zCSsfZ8_{40y9%K3FMlxV%VPn@ ztxkm}AmvSGu@@k>C4y}Os!1fx98JxY=7j>Z{x0;D>BdwjPm*(F$ zbMwd}Hw4gUAEqN#>B$Avg`V~5ZR@^homJKB)8*IeZ%m$IPcy!fPl2w>#Abbf0~oN` z75XiD+RHay(`;Y)h_+t=cNC{Oc+1ZL8= za^d!+geA$rDg-^Vlbv{fQv0b~psm?ykfXyf!fZDL_MB!}GGO>F0R8M)EFk>+xTK&v zqTvX8<~J*v4|d-4m;84ps&sFofpBi^^rVF%;j@O;EfG;4+=pjcL3b?jXO9NAVQ>|K zPkKQ3l0bQt!1ZfcKt5-_;H-zrJVfiD~Hx~58?hqFEMOQD7tT^9> zjuwd!t}U5|G)->LHsBBd! zC&q*(o&BCWwQsv@(nfIjw045jGc~u=*08DQfuY6fHXLMN40HS+sPWGKL|NyxkA}T@ zHiY!M=q!__d!~m22rmOrL3>*kFCvlPhtVgWozs+xk2hM*vWEJ^N~wLrudbyP>}c-$ zb+)?4pFfLXhv4bHBLw$o1SbY1(hv?HP_o&WAPiXBuJ^FuB^(>k-U zp3sgt@&5*aF|ls%8Ni9d_pbybF7IsbH{LtJ4ex+|K3I^0=SKV9^+$}yvQsiWYx^cG zTNs~1o%%nkb!U!PJ}zElUBVCW74IQJ1G@S@stpWf>ZZHIPTv0!J_9c<4eZ_(F7WWAfnzXXE}wFG}bt>kUGMkGFW&{_@tcxN=$N zxOUkRw7BRWkhA9hKJ0z}lA!y*3~HTPy`)gF?CC+WvfH?%8hjaDT?-glUBdv?g4#zn zh5NH4#A4Srh3B*N9ugXV(6qSjZwgmMAZjX|+MNne2q^yDy;AU2;}qD_)SF>)!&Ee> z@BHl|I(k~eS=TT&KU|rfw8#f7kZ=jZ9fDgw#eg#JqcdH|yezZ(h9D@vG_6T?-*Qsi zm};mc@2$6;W!oLt!`Qb;jfR_1eQ^ncB1$w0Gym!DpT<<9B^-yR^RqN9Mquqjjqh() znIJMv1B`~IGeORbPV`Z#5F%V29~~CNUm^!y`l7I{esL@p7=*wIUC?$^ZGIZ;CHFSHA@c z5kIqx1{s4uTl^|#Z7c35e-@+eOA`lnT6FWb=*yi*pz${&1$%y4zET%^2w+;DgL^`G zGp`={x^@d#p(nTBk@|V?{}DeWvI2XQCyDxagJ$t3Bs*b0bzo%kbSlwosI_W+YJf~n zp%5I4jTv}jb|EekJs_VdJWJObSpx0DYwt^BzQG&Tu36QWK*#${7bk{P!8W|3rQ zhkvS-8FnwR&|igAdk`pP%(MtWqr40cXm#Wuo6dOIS!u2p+CEHpyswhdzEs*atS9e8 zvj{;m#=W~0M)KnG+;Hab9rK&t6E(~i8w{_8{ zx%1Uhe)G{1F)L;K+q%i6Kyh(WGVNYc&S+qtic=e;esQA-aWrR;uLKsQR~o4}l>2M7 zRXqExUYz_<32$qslQ7swtxCKw(F(XT(+W_8*<TszYG2 zFe3G_1tYv={MqztC7SLgoNnODo7Xl&8B@O)n_+x>DS0^&7+6TlX+dcE2bxAb@Jd`a zOMJO@{%LTLJKm+zmTukJ!9$bFC&}cS>*h20yy8d3Xpd(9FU(ftyb@&*;9R5Dc<9*j z7F9VLpl|mY57)Qoi&)9V4Ln8k4r$r3xD+>wciO-h*0~;T8;T*g@?=s4d^| z0TbIg*p>9uNj`p7B?+I6yg#-K`abmh6RLeS)BQO4I1mDJ-axbn%5@bD0WwFR6AraP zNbTpqbPHBNka$mNXb?M##JaI=(Yu9zWq_2tXZz22QZs}&nXK$(w~Gg&IUi_J+#L`| z7W^g4A=J#5HI!89iEC@)y7(zI%eFm*=NorQGR9cC4P)uu>&B#pdVbyErDN@qfLhRf zz9(?rQFkey@#nne8t!$MfMAa2kxTcN#th(1^Ha*^pY@8#LPAJe3s*|-7OUGVsb7Ao zaD7}=l!&2_d0Pyf=w-;wlUi1i(&=AyFc1DxRmx(=-aOgT@&jA_B`l9sqd)SST*)cn zGgVeek9aa#p?x@oK@mm1{V16GE&nMbNj4dzaV#@`Y^aC&+N_3NyYKjzcB4=KK&ma7{XuT@rED{<^b|$4+masPy2bkK zPt@t!hkqaRv^RM0V@{qeX(02W-!{*L z?;3=6&JNlGN7wW$c+0`2!Y`cLncyA$=F2cm>x1^7b?_?{8a}*BcH~~j{T#+qNIb93 zs+lAc*&EHxtVKT4nZOSGJZVk#6Xp@3`ARdD9h^C3+!t^5Il{>H%F?hC;Xxy1vc&g4 zOk2+?DF>Re#vMe?G30|=)Pyb7$2Gu};8Diq)$P=KS1PmMCMEIoyfwqRHx4+| z9{PvvYT@MG+mDb;2YBI4fWau|eT|-wCVKfL z%cv;`IAi1yyj78K4p-b0h8)*`Th?$HY`Jx$CMDlj^9-ss%1X5%-6#>3 z*i+BFP~VgUMwc2Kw+wv4S5z_j+Ho%scI||f#XAxd3lze3&L$~6us+y5Lu(JhKm%A!jT`ZRkIgZoG1=no`*iY=NW z{^}B&n11UmG))AdG5N{Xs)R5#(0(XL;!gG8*6QTyLGvxA^I@95>Q~+vnyN&J7egA?J zLmNxM<34fx+PR*CH4tHLiAKimsdCu+>Fve5xa{tHUVy7)$y~_C^)hW8B!5)gY_HoQ z8~O9liWmorm=yQ;@^tUqyoIQ}lwpB?BS{tWRDsU%1SuZ!w)U;12$MX_fgEm1`{T5Y zz8A~9-DheWp&&K-i=RqOYIGqhQBK89`DCTk&90qh@d=Pc(=7LAdMd1&doqdORB-67 zPk#xgb$}wim3J^wF@a7o#*G24;ons3Q^~X4w)>I zi}oZMZW$KEekAjISfbZRMKZ__nVCY*cZPLPU2`zYrr)gs=O&!A(AUX{iFHY%WDb@$ zXZ*KIm_XWBNezGvz%);d*;osGoY92uY>eHjm1_IZ=?o$-J<)a zchA?6JMFSGm2U;*DS!H-4&s|QRe#br=T=y&08navmufZ1i$C^5flrP&x}nqLw6rp!#lzKU$oc-yn#ri)-vOL8bqEu)jQd5%!t85np_<(S zBz__4Mq4;%$M0GNdv4q%Mm~oPPIbr%_@$vu)oE%$P~9kx#>14{M=qYyay-GQgV$e% z9L2l}M;G4WOUsDQ&|#&jF1e5HRpewZs|+x&6*F{XDEBPt{vT0xm1GiXc!xGsh9)B! zZ_{J<+scfbOov%xFVgvOrE;-R9Weq|~4^%$X{NNrm4p+o+!{5Pal5*0da)ppgj zPvA+?i_wXx=>z38n=dprZG(3|cANpEEb@;_1AJ7oSR*$dH5x|nG!#d79Mhc@v@?~YdK`%sJxRw} z&7Q7ES0}5;49qlCStWZbTxZK~U1t+)vBaHztzZA58nfK>!K?knSBUWoP@xeSip)$owqyLC1^iI>N2e?}&sX;kuvfd%5qq&nyd`GEl zoq^{}B+lMr&gDPKhjN&Pc|nVu=h6-P@t@%34e=j%3vo8$Egw%hr4Y?T_WH^V$e(t=2gY7ebfG=E zh7j);L*g%#^nzvQWsP~{#u$HYANL|q+`0iDZ8NT_M`#gMkD zt79^*jym3&v*|oaA_1ca!FQoiq(Hh;>IPHm>u!j!(q*$O=6mMFT3Q^Rbf*xj@{hcZ z+6L(DO)({-eY(CHh8o0jGJWFSo8b2)$||N~9Hz`O2I52Q$bw|^tg;^?=4An|f#MSm z)ZMJUq<`3d6Oh3A)o{im8VNAAQJj!Th<}XS?A`FTP{fki-J6{!6p~BIlyu&-lTXb? z+3WiJy}LWwJUB3f+{s|x9UK_Zw3QJX4O+m-E^d4J#3)*-m6#ca@qbQ|4;#M;LZ6_t z5rhek55K@6(90PSryAGsW$Lh^9Ad`IF7?_y5ECkvZ_wX0NfV&`>z=mA%R%@Jes2w# z1X{|(jCpk|h0c;lw-mKMPu9-MF0rU1#qi~o~JL$^EaMZrO@y+T;NMD;^T4befCd0Davu4t%Aq`U^6I4F-AHFzs(c(XBlw>S zzXp$!q>Q*Tj$jJnH%8>CaQ=o;!^=)GeJWy!4Ms`*7T9)^n22~xHVqxk((BB@++bQQ z1nIN`QabYszA^_LP~YF zJl}~x;!m+|`#(HX2@>QXzA!g#qf3+&5x%H5s-rS=5w3SaC$Q2`HPVdm9ldPEGwQ{~ ziLASfxRt`+t@8;d;79_4>JxTWSyJB`uC?6`K3yW3Q<5JeS1_fIX#jM-rj`KO01WcQ z&SC2K^5#kEEa_w76-fv(ck?QdB=85X;CG08;FvW953~$B1s8U@kiociCsXxn>w5S70eo?0y0@@T9 zgi7Wl7&c1g6dC>i{xPJo0RAzhDgpk{rJ@6@SySBs-+#&JRWv2Z*;ag(D@j$?l`9ET z&yxQl#&8X={)!i&o+bB1iJ<`yl_b}so+Vq-pk7#vO`j?ah)R@`s0fw+qQFo9KuVH> zseqOLBFhj2KuV16QGYGoWyGVX@RT2tXK=4rE;f~wN{{}Er@;`dJ_^89V_>OJmp{l+ zpOQO>Rfi;wT>_pI8G7Un2r6EgQh~)cMe6>EW7ZYEtf`m9&TfMQBM}Q{<2B6#lPK7U1YC`c%fx2+w*bBf*nc-6IfUKgEIklzurc^y%{vbnr zGjZ$`;HAh=CwG8X(aDsWUVKxiZkRX*26!nk$duevtLG(+%>($TQ_G5Piq-QH$4n{& zSyD%eZ_3rllg0)BUa|}rawT#M5ydxw>gaL@f$I12B>)CIfRo&Tf5kd&s!z#p0|sA>z`9eN}NN~YtzScE2@*m+yM0HV<3PIbE<8zGe}+YyHu7?G^Y=) z^*!C(nQHM$k!+((l0^dbB>DdZNLc|S-6v3=Q%J3fL^lQCTEElHK~#(1iez78{yTyH zT1%5VuJt+H+^T9Zs7TgUCTTIAx`s?jS0K8{J*E346HroH9eaTXlikM7k80ZHXrMu~ zL1voi$c(o;HfALf`K8}23^OK7`}5#Is-m|9Q?=b3foTvXI4py5}R10I2CdzA?qM7 z*3W9kI4sj9%qQ`Eq$I{cIx1=8B$`1)s&EuGg-AQ9-=TyIgP2tCC~UHk3RLi#(rAH% zl#=gbFhxk}V0rJP)&?#g@k|tchHbj$9P~j65qBnI_(ZS=c7aFBa*UWWhm2 zD$a@beFO=Mad!w2i&+wfiWmj!i{uaUeauK{aY=P)^e`(r$<`}W9BOsXaKu^BNMk2v z*+|hHBFfMnO#j`iI!s}4&lp=n@#V034eqhvZww^n6360J{c3nDQi!|aY+;VqlyV@) zT%6r%Ov^!#Na(2tl|Rm|7L|WREa9hX7xO{KNMPux43$6TZd2=hm!lu;AU%~*wCxu1 zb==jfZX}Ml@0Y=J>QRFJyEaF^ulhjb>nKc$7+VUY>w>FS(a47|PvuAtsYH*^Q+uk- zN;_WU-N~_V8mf2{Ck4-Ls=-t7&aZ=2)T4~zolJs8*t=3xhM2ovSo?fb@yOGbVV=^F zWnsM3gKE_K$^Cbsm=R%~`uaW!kuqUNG~$9xgA(F`bdsrvUb3y^n7jFy2%*bHM0wDv zIz+<6h2n^1m=7pUK+Ff^2Ia^u@v{ol5zm@+8o&zk;KuH%f%rQ8APdz6=B_)HJ92|W zuOSF13ic?H$vtnd+*fPT)K9)(Nqdm515hlqX=#DzoO?>@x?FQW-nz%mepf1&7 zWa1K%RvYFLa)WN9ZD?yddo`x1hWRpVWU6>|IVxk2Hp`$!stF(FIK#jeqlT8V1zL8wbKmi3T0HiL&5!YHvOii$199!985 zgxn!YM5+H4c1$bC!5~rhQP`+m@YFTzuJn>yV>9NMehef(L~rq_H6n4TyfwIcUu*Th z>I*T3fGNEZXS>)lxZ*wvT?_spY(8xMe3($fBVuWmCg)E2CXM9FL6c)Aa zpe?ne8C79uByORq`HXgCd)>p}LOe%3sOsrt3P|6)5I>|sxi1=ev zVmEbh!qqK)zdT|GCO6g`CY9Sx1yTWW0isxi#dauRIAc9sDStihA?a=7HtHjcf6u@r z&lTe%+$-ukus5Og9%j9)?_pcO5g9_;*V1~Awr&)Hv(0#A-dmi(3N2?Qi~tN$?xVeW zA-tivqI!h7c%a&XxeWH`U4y8ZZQlH(0Ds+gdjFka20>!`8MsvNF=IjqX7GgTj6G%T zyOesjW@8l%Ab)n5NqAO{@>&dVp5TC#uqnSNNAm@@DpPgQ_TfhF z>teUSXhk@K_Xz3e&F!`~br;+GtoFE2vm}y#HvoV79Gw|e`CvI}g`Lxar z(i%A}zfYz5r0+knsQRW$GXK&4?fGZ(%O&%7dt-1LwWaFRZdZ&m%d}2nqvK_8PQ*f0 zg``31Du*Rx(~Ix9bH>Z%$XaAt?S4va?vVccke*=@C5u2n8JwNXAz(SRxx&XOV0-_2 zWopG6$n+2SHMiKFX>?iB71N9UX3oVl)K zXSrW7E?+O0r;wPG7&K#k(eC4ZCD@NuCeP+@xLnR*`}4$C^l*3tdq{gwUjjssP z?Z-`IPEHq%b2zQ#5$alYE(fQV>=foBhSJmoQ4HH;b5o35+%xZqYl@QURQZ6aZb_qiVp-HAvUG=Pz zIf%ob_a!$g_p+(R9iRj`UPqQ{6He&K+eS6NOm}>!1ld-62P#-5@3f_^#*-;N@0;_d zvk7sfo_?K261%}3nat#&W#hSHM~3h|y4K_0d(JS5*%;?z6I#JnRs@au8jC6fj`?SP z(zOwNsU-@6ut6AJ%%5#{Dj-)T2eudKT+}o(Ji}U(->=C|s!E?rZzpB%?B`kbf}Jlc z4{$w{as<$Oh9@(#N8blh%O=dGBoD_S)0rqdFFXky^bLy`F_Zp>tv-`D*73j)VB4IF z!*0M`!c9PK&^v_U+EDqYn!)#>6XbeQeYmusl5M$qSp84<&(1Pj6g`;0M1VPX29W+-l9h$zX5gSzuEj?n;O$j5LjFhXJ&Gi0tX zfASfRq4`6U@@bBtRzut=k(%J_MQsxib%WCK;jGZHMFp+kN%QF=VHzmmB}2aEvqeHD z_u4)LL(HtwBK!kSI>tkG==kzMo|xO z*=FK}fk5?yZ1vV{6I^jTBE2H|L;YvRie3gjF=%$fZ3Wi#Azk4;V*7sjU)^fk>k8Ks zTksQl$Vi{rw(1q4C!ruLIjqJurY96BEJClp3KByg&N{{g%tNrBG3zqS#ix$Gjcpc3 z+GV&4sFsjiV}w?;b>!v{yRs>*-M z;pOM)A5x&=r?7ZIqJKs-HU(?@ba`+s=iC&@zMdAZ|>fbb}m!5Tv zqJUCrR_M$FJyq7sHDx3Jgt9~#^X*H>TnRQLl)QuUidtCCvmaQ`N8H-j;$E91e$d?8 zw_8rA)pm%cVr?HblGkDi-FGGs{qWZsxfEFP<`~s5w-pr@tnGRJ5VHhSPI6?p?r?W} zYwvAkOIGDjtB5U~b-l=nw@tq4fUUho z4Eq#*dL%KKpJ~iJS>nY>@opgwG;3Q1>8uMS;BRkB| zwdMdH_Hv^}F$Rs@@j^#P0C+Ly+FPh-!mLp2u7P6YEO&xQ(Hl54Xt9=kkM8l@ZP239Rj8yoM7S@i;~ zFX*dM9=kg0lU(#+(*`q_r5nd_#6X09RNjQl`)vHNNr&HGlZ6xdFP+985Fcd@_Yhvy9;-U)Vz zvd%Hya_X~!w`6v_Qw_^_j+uujR&8&&{I%w*hL3PXyP{$vRHj>Ic!?i=#yhwL#L6NU zksV$hLW4bOL{jN!jKwbo)c8eh>+OL4!o}DU!p~*6atISfAhty2$}KKAgO=GSpC`?Pc!C`TdvRT#t1A)Z zU@{e z2=ZWceeIFWsO@jf?Uov-<2f0hL*o^5X@n@NRC{x6wg2LW9vcQ3r-8cuBZNatjs)A>WkaS94LLUL87TLOb%$s;KI0idUOLS_{)7KCo?u0FYWrnxV&dlg+zwa zYMw*b>hbt7&pvyZt3#2a^NhLu-a1PsZS&T^$1%D7>ML4jCov}yhAp;To&Pie+ z^j`h9B+WZx^|ArMA|vZifSO$XgHD%-?BoOv!fSAfSUiLL_i}b+imR~y_ac(L4_`-^w+nWP~qO0{BEc8(Qt#Qwm! zF&~wP^!Iaer25s>?!bWkYZTYgZWGkxEGJcgyq1(;X}Eg?e%Uk_5WH()Mx1`A`ZM!K`%xJYVn(%ex&h4SSf!3fL$5iceyx&p9P+8l{0 zKXg~Gu8)BNwx5Jn3`32F3v~MMh zJ#!))aW}$T-AOJ`}bFM4m3y> z)RQMJD;`(FJV`eHgt!p>LNv7|r9&BOZd7L&PekQcLQa^8yUUz`+Q3@kEO2owVxyur$G4eRX}$)hVdw}Hkl zcsGYL;?rZcrst50HX$?pKXD!CG=TCM!I~GMS;C)>+KoMIcd|`3Y_pY8qsi6yR6S;( z46DDUyJj{r$oYt0qIT)TtPP0R^#io6rE)8B=bHO{KEnge$_V9tmDlF;B;*e>>{3^z z6u+4}Q6Xu_ox+$?4G5fS$W^_W=XR}W(AzVPW8&a>d`{}ivb74FwBN4})1g5kG3ysE z($Lha{&(VExr3L*?|&W0Xw+(Qb){IxteE!;h;?9Y)t+9bB^puC7#^>$w+?cdjVnT! z{&RtA_0V7)5ll@C8`^9~&SkoUvF4H25ul)LS5+REI0|17C()Tr%cb1&9L0z)(%$4D z4hUxE&H5%+-|P#s>I@TIz})$T=X;czxb_RG$vMYoTrRvhsK2<_LHx*G86f3oTrOhk zzgES6S!in9i9VwJ0h@1LMbd8!Fu#i`Q$mp?nxu3>Mt*dVkZ529+T04L;3wMGC#IT* z|J{^SQ?upb>d+f#H`&iEyL9#&$<}ziz*%d=aL;NuI(cENUFPV>_6A=xdZ6Q=SuK#! zHY*9YI&Zga8;<9R%CA`F%}VF*Pg=tmNMj})Jqc5H>UA^AqmiWrhRh_DMC%W-vU|p?S^+*P>e{mE^&WQw z?g1Sp+v)yBV8RL1!gX)_!?4fKzfxaB<$Q*AEb%s`8QOswt|C>({+hFIDz^*6XxUG{ z?{~&mBUnj#eEl$o(?J+U+}K>j3*S(UK1c*wD)sD<0H<7H&CH00J?LbNZQTLQfp3FN zN@#*-Wgpw)2O@~0wa&LnG6pjElJDiu%bumU32{ZAnh)o+UVj% z(HAQ%lu|)Uks1^zPM~;c3lw*k;9A@zq!eq>;!bc25S-$rxNC3-F2N;8NZ{rB-nr+T zd*6L;-L>9YnU%4<*T{eNB(wMIUtEpN)YU#LaxGpKiB6iSl-<8xdhq2(?EH_s8FHGDjd(AIBr3W=xMl6YW<89+B64|lD? z+j8M3*CUyk)@0|1y0kgg9^3~PRHF6XpO6k%nKrQKzrB;2+(CF$ z;QC&hxk2gG-+T863Ld`o%V>Xm@Qvip%X`0&@l!}oq3={2EgHsNY16i+y52rEgeEOc zLIhNb;agK5I9DgL*WUTWdtRHBizqOJ`|BENTuXS#b=c5Qo=+q%h_(1(6tm|J&v~ zOJKSGgL1-fDJ^=!F;QX)fWE3EzqOwo0&zTEeJ*>u3Z(WtOde3e?oeP6+-d5?Za!q6 zMfOgCU8#$o-xOQ@oQ^J{)PRTaLMbh@*!xShR5S_9AC8g!@{x>d`M&gxx%tmr^Qqg- z^Ec94k3Egbrb2mu!j5TEf+5opN-9U-~1Z0~^vq2tFe z#Hnt^n{9lkgU2iV)Aaxm=2+?`f#F)w>tMij=&M01PjS}@U)JhU2O6fx+$z*kq`&-7q7w$7t zGV%w1d*uNZZ{M!)vX`ZKr1xt3zY$&fj+wd>q^sOJrL)^GF# zO^*qeCu{5IT`#Q3Om}u*^#=k>g-u!piVXFh8|;=)h@Y|qHeF+925WWtDgtV$1hxK# zOXzje^%y4dxP5)kKUxninXpxGhuIjS+a7bB_IBchO1JPo-qQ=;2d&THSErGwX~zFr z`^=~`rtp3TslL3YZhW9#+M*m#>zL^fqvqXbD)rP`wlhUnJa*bQoqLL4c~8dzgXqcbK8J8UDLz}H4lCj|84)>XR&)~t$Xnm-_l<$`{O}WZ*8myP1HMWUe2VxRJr)_7G|!N2;P#6$}0+YQL20uiN7p{zpRL#m58@|2XD0Zj+1m{44)}S z!5#^P2N6jVez0M{-|`P8Z68S~Soq{0PO66%E}QNKxo1*ly#A~vE2PGb6x?dKC;0Ji zWsZ3QCERxXr<~=~qoxCTAE%p{eZ+6DiscHG{lH))^0IP=LXyLJEE}?b-6B7~Sn}O@ z|FrxSYDGk!VKLod_UuTyyYlZ-8(a3eTar^jjeyu9#G^s{0)H^L4zl7NmBS$6^jL)* z-&hJSg3fBAEx`%>L{RmMGG4hx;VPXlrR8X`F`>+=g7B72nK>mrSc)?EqhDGk&_uQ$Bw~) zKO!n)$J&5ouFuRh(?yS}phxMnhx4_A$*o&GfaK{EO_KW`#!Qft&z%=ly4%mP6kB4M zsOQ3}h}g9?2z?{JPMm*iogCH(Vve47+(QqZ^^Wbh9U6jNmh)QN6&tLqYBgb9mB6(f zLBV$UrmvrqavS(`uJx0cQVT<<5jL^k$;}Ih=v=AXc5=2)>!CZhB}(esa1U)s zOq{)*Zd?7L9oxZ&4b+iVHlqbW#6AMdv^?&cyFF&7qJGEvOjnJ+CNJyZ;eBMj_gUt8 zWj<555>eL49W{jju{=VxUs*!3GPA$c^i{exHy``53T)C+G524dy%Uk;ry>2TYGi52 z-aF#WIk0BRtuhW@&wdxtB`n6e%P&2z>Y%dsdtaI?iQV!Ukz=HF{nOZE?B4^HO*Qz+ z%I~SYN)u%Mln%ZU^`^Ma^_3j z-6G;jiv7|s!=$Fxf}wZ>$(;Q+PLGLeAh=4K;xF?Kwj2UqzyFTAVXus=L&USj2XBD zDW~+BbzD7-H6XZm3QaXq(9Fl2H*(agVirfN7Dt^H#`i5oyLsPQUA;LIm%>#)o|fXf zYXt~HFH>+MR20e8grQe13%R@kfk>gAia@mtL8Ypvj}m{NwY1-3hNtM1R{okA7R`N}R;t3t=#5TXge)ZY9-;@&i*bL~ zki_&;8MK!(#zc1Srj}ccqxqkE!YR)$*F*Z$tvnY|<2y0gc&RWen($9L+MXHlcNv$$ z-957?b45bOK+moZC^Ykyn70M28v zhg0g4_sL7Iz#KVM_k^6Wbus0rDmrbvrFP>1D0xYy$`}`P)Q&Ar4PXI&PUqU%(&07p zh0fhk@UeTQy69z$$ZomFZ8WQHt?Wk9J*GTc?^+K*T-!S=&pDIy);ys9Esf1nv#;YV zhIX;;sTvx_3+aPxlPku7cjwEeUFWE{9_v~s7p|3exwfu!OpIsRYQa|E4~DES$3tF? zXKx+u?TMe{FV=$`WY7;>505j;T3)0RbO)|oeC?fC5QrSJ5YSQZS=y*MTM`5#48b>} zqswDlU#mnh8kVMxB3=>OwTQ9kstc9H$wPwktv&qTB&#n)!(`4U#VTc-;S5qZiV=Kk zP%b14-UswONGN$*uky^fhsq^4;J!(``5W)I+66|e80a1uiOOk0=aYJs4$nM@UPzfE#fW!v;fvqkm(wz2<`*xd8&Th*Q!4ha$kR z#y8}&-+pkBXsch|YG8?8KV>;Z_T01<)X!Qjm9(!f4vyGygJf=_ZRyPd^!+tD7_<5L z*m&_Cw^l!YQJJ^rAtc_tYP*-W|L~1tshy_?Gi%oq?}SBiB@R`dIt96`)5qaGkr5|R z-h-w-Zx`YrzD|nQ4$-q?+UTx7EAA<)`&Lm4$7khKFJ_)u4{he&d~x3W^tA7>#FNj? zHa3R_4zG7-eC2nor+BJC=&gV}bx-ucaZ3xsW_g7~6;IP6!m=oFg9NOiYj9l((DM*DGtsXacnv-eu}e921wAWSk#m0@M;EHhi5F+eT}<$FtGnayeFJ*e z&SM2*2oe&bqV-VxmGwc*KgeQMzM=LrhwiVIR~~BZ9Vd{uO0;i-ZKe1qo7+tL_l3K6SnzX%LBdGy)qwojcQNLNab-#su<1~9C-2$zw ztZ{QMShk|2->i}D{utQ-i0w=R7ewSDi`qWuejc-0Vf+Ipm1cFSOjvUU6%YJ-Qs8AADSP* zAI11$obOO@F7y0+fQL_RY(i++S+xNs4l!1k*$umQzN_B6yPR?^>nn|KQ>YY76RDK@ zP~^KVr1Bse54x$LtzB(1@)O0%VfAR}Znges#nhQ~!qo(wiTd9D>$>`v?wOaSp!}fN zvLa31T-iZ3;4AJLHuEe>r}4N~F9^!G#+=zc?@-o=H<|@1j@m01vffb^kn;Uu^%P!U zQt1$~$t&5T}vVPlPILnOt=jcwx-|>X} zB5UKVUSyRlTMT;o`bb z|6&!)uleJ2qhis(h_p7ow#C_EE@WYQ8tTG=uY!4V#^7;_KWx_B^Kv6GmyD}**ZrFa;|Ro2+b_6PWJYr;>mQi+dvaWZYa9AZE=W>;Dr<`fkZ%T^on3x0Ut83? zm3w_JNn7eW9gMq>N7amm9wsI(vN3%AMvpj+%h?u6r z+icPD(A!*secn+p_Z1`I-0q)Frh{+qNm1V*#uOYH>1fXO%Hr71_xa?)-dcX(5eu_X zRR~O_jn9iwmel}}6p43vqvI9&3%?-)3Hy^a9$5vmMNl%;ek`{PeiljTRBMziR1^mk zP>l<%d~bMqFM}^K*m)BcZ=NNc^+%73>RXS-jrVY>ac^*{O+>KdKy7k2VRj}PJe(6% zlW--wH3ma?Z?`ev+C$#Vs``Bew@>)aYoPuZkE%D=+n&|6-$54!f^W9HZn4w{ojp8$ zqPie2?S|jjmA=YQ&&2R~hP!8(Mm}Lz;?m@7T2{N1P~)HKZjrbT^jcD>J@i%HFf%pu z%WT-$)AdHUB2-h;1o;Z8dFx+E5{-!t(-c%~issZ3YvACSVUc=vHe!344CwpWw{un= z{i(9#LzrgAar^aMAHn*jv5~`@&Em%|G#+rFrdsNdTRLR4ciGolhFWCjJ9ns~$;4_3 z=VPB+8=^Z>6c>G!`l*y8lx^#xpS1e@ChJll$zvvxRj1dB``&Or3m{0*h-cOx`8Zmx zaZ+c{oK(Z!xS?|>wjy26q}xh;UAnx^rBMAi3wkn~Hp_;ms3@Tfb=NEFpsQ?fvCmk6 zCqCQXedkNo{zDsP`lx!~;HkTC##CyGH4xJsS?5#2Pb0{q7d1gEMiaMVM|yU_&8+#l zH=S9;h!*k;Y>er0uFFn9(d7qAmDZ5U`6X&{aE{M?lt{$5NQApp{n=sNfA?jn-BwI{ z)Ug*I|KWC|(aU(^w#bz$HZ(P=M*K8-e}SvBcJ<*guKPB7DEQmbcrunlS2u}HORmZG zVJacne#u=U4yk#*Tb-v3z{$6&j|g6xna3x>C4TwCY3#tz^6r5lwxU$b?HP3Ykg`s! znYrHit<{#sXtbQBfEz#grkJzM{$34*a=Az)C+}QJjSbCU(ED0WjS|bW{5%d^GoXx^ z)!z3S9eS%yy08363vx2Q^*ra4GV2PGh(|7tF4k4g%k5;hC?2_m*%bcEs1=_VG&Y3jeZ<4$WBYoSRqk<3IzMuW&9??q8lg}|sB)_0| z6!)`!-(RHvEcy06^7Fhk_cyWo{uhaP9sTq{dYsJ!-b5z;Vhl728iCDC{R0kZ{B-IS zCEig-0r40Kd@UwNG%bFwIs(;6V=hx_b&0qwhb>*u^^Z* zvl~;?A;G3AOoL6EXS2$@s!Fi%1A}!6>~YMOrPdPJBhn*Pwib-gldG&+jvp@=O}iPN z*s<1*@@r`(V0d&)5k0G^^7f(1E5w78~Tq{SGIGnsmlX^Vqb1_hnc>;#*~PJKjs z%+Xbvq0gp1KlY`W6AS3(y?_0gIP|Yw4AjF% za{L+8Mr!zMO?Yv2jIubb^cj70a8%r$RJ~GYu)`l`LM?9L-9u}RPyo|U4%g>)9}<0( zroL%Ke7|SNc=VO_2v_^H-dX2#-)BN;U8Omx#lJ7g&6suQmvcw51BrW(>Q5QJJF(Ax z@r~4P#=^O|e4wi?t7_#xEME(cHL<+TmNm&>b3=H;Ofn zBKAGr(OQ16`*{sAp@X4U$TgZdCf6gwzJ#XBx4~b^i!PJt3&G*j8tK~?Ub&Wf^=JO! zV>wo|WH3qJq}Ffb51{olV-{!4W2P!Rwo27*REotW35<>a4ts*O5ZX)G2%{k3m$_T* zUupuBPqOleg=8Q9`Dxl68xytri|(F6Azg#;9WCk;ZNv2Z{zzy+k@K6Ya^u3-*v0$5 zDXkR*mh$o@?@0ZMiLtKlG}YM+BOxp@eo@QWr1^>ZK(&5z5idpyGI@V+yuS8h=N751 z`@4^WzP3CR)?q)8`QhJtk!8{vS}8)7&>yHhB|r zJbIPcmRV{$8Y^jZ#S*(NDBJ^u^{6SG#od+wwqbGRBoZ|Ix+lrrhFuI#NiPg0iRukX zSA1uFr;E17N&3D){2oo9SW{J5!81SR*F^*`$KM3#*-dh`nw);?&h1HJc=WE~Nut(q zjuF9hVpKMtUZ9fL*W(|l1;)MB^-YB6I^)R*1T@lv$JkAH;qU4e0N-hTGar(bJDCDKqJ)LEUQ+qm*I?%uvYKh@`HnXyEdt4KFF&p$4s|Q)?HE1D(@EQ+Sf&X zIn8pda{L5*68HP%vdr634aXa4uTxh`F1DRB*jLD3R}6_f#RLD%*T-hwC)5)aJ+!$W zH14Fp#r*vw*qA#qH&`Sx=86ErL2hd9#l{Mj0hGQDB$5}tOUHNfy}0d8vfC3r$=3Ad z1+)C$KHT&3837Ox>8g|$7=mYjAkIEg4z%Z$-9y+Da$d``6#Ce}627>lOnN>?mnoo_N1` zFb}zI#C+X(2QUa6-&rYZSa4#cCBwazkzG3Sh(yPbSwP@-%PSEz+bF_ULy9U!-FqDz zMKS%{za8IxC9OAq;$JN|O($^57HPCbE6n|*GFZ(Co{?aRPtKFBwi2|RR0^Tbol>t? zV=0bS1^iWLK#t`cGE7rN?ktO%a+aqkFe|=4)dD_GUpVC|SV42Xh;8cVI2pKr1>hyw znRgoN9t=KENIFm*?Z6a3=6pHwEDp-6AJ$PygbFJPdJde%$QO~h+me)l6w2LgE zVp~yoT*PyKkdTe?r#GQ+?Ia)&%^>iJzCcN}aHDw@6Qe%7E!z0Wc4#|e=OHr4bxKH{ z?67sW@Fu7Ybps63_iymn|1Aw>bAA0c%pZfO%LGm-DM#Ph(g~#W?~=Yw>Uz>2zOjct z8$jH50Bpujy8U>Ga9lP(6~5H9WzWZWVrxRIC=YKf?DwfK)wZk8GHI1t>@nK4_Qu~5 zwACW3I2&2*I`1mSg^vO-s5V;@rR`g~8mYJf1vHWU} zXSHb3R9?0^=&51K=+~Rot}N!`C*S^rRp#l&52m}Wi@8I^pFA077aT~|zo$h=C)|w- zSnW<(KU%oa^Iv16XJmC~-JLWee;&n{3U*Vd`SC376Mw3r&#*1P!RG)Xp^0fJgkZVa z>g!#RKW|Z0{K z%^FBVrlC^#{UxPFN+I!UXlt=77)aMxMiyD0JuDD!`^o;2I_aVM+i#0Zj~wC_9yCN0 zX1n<0LE6qmes(yXWlXyW2?#_Nxh4(;p7weqF19v@Kk_|onC5w!cFk%sY^iha%dj!< zA@l1-gRRJ#WAO79leNh5Okq?!ijaoR-Wv2UsF*|YkzB%88 z_}npr?b|_V)z z@)jqijI^b24p;ib4oZP9?W^05^SD=^Qz^+r?NE01VDaCO%yg(Wgg7=3KqJ)T9?ae358WLT zzLzyYmg;vWTsbP9IIfR+VM3RpQtIYjD0`b-Ea|ygTi+U6_(tExOps@Oe7dV_-^UMY zvZ}H|gdG0@Tl?7A99de2>AUS>=(xg=@o`af_c@{hIc3b%wfFF?c$vRj#p0d*}II?>x zX`8=51h2t>T4jZgbb8@hxd3HB;`Zlc3KJn5ymX2b;8dy3;LoDn^bhgi^S+}-&}@$xZa zn3rna{a~@TtJ06DzrP+1i2W>V*=y%&E=FvDie^kZP)P|x0y^)#I+H%X)*C!6auILlWF34J*&NCZ)NPhy zTR1voduIhbr2Iu@o6o?zCFB_Mm%F3uS>{JF*GWOTRsOF+WA|ZSpZ^hx(<`^HkxB3< z{X(KKQX&*+=?s+~fx?9Ysc6B(;nOq#*ry@3mRTE*yMxI3T4{Qbd%?Dm%XP_%IZ;24nx=>b+UF*r>0UnlR28Hq9)I?cNG=sdEOURh z{n=h;&n!V6r(_`)WzMBUN$Hn7zhM7ws}}dXiv*8H%_v3s13u8&nQW@Hmk$r#OTJ=8 zzV9~-EZwWCfHsoYDpI5{$+F334xCWXCKISzdQ$-us`2v|Sb7ECl@z@qL1k$UAm9U; z@}JIaL_3fQja>q{LwP3e<8A^YiTgJTaDBN{T^e?*{pq#MFidkioIAfX=oUZO&W5^4 z+O5v=%w**}_Va*_tZ*|q?8aT}$>lSPe9Hd(#qNAo!K2+eJSf9n|BwzTcDzG<==aI$ z{M(zo9)=y+2sAVQ%br#anr-GgKBTsA)3^HV`!!E$^zrtmyc-o)rv^KxN}csa^9U0r zXBtPx zfI;JHHK*;5oj6zS*DH;rnKyItr$2gTM->Lzi15Es3UD0{q$O36T9|m>sRslRF(#8f%1I(~B7oy-Ju>s1t(PchQ%2yq*3+9=NJ{V;66Y3Dal zwQ55%cG5qCJwB$qk6h(=`$Q&&CQKkZnK=08b%e0$WPqs$MRj&EWfx&k!t1{|KS=UL ze_X0n@5xViu!vU@6Iv){G$$Sm4OC2(v&KE%gn{0AAJgL}x7-na^MOzL8`IklwQAqm zb2wM@>m>|yi_zx1EYVPT^m|#@AyMPJGKPxk#5O^) zLP_v|o*##J`ZbAiSY1BXgnWJ0*4T>i*PUsU<%1`a-$!hY8=l|oE)BNm)C)Z5IK=h6 z!R7JY{jh5a>pk@Ygbb}xj;zo1`uVQX_=j@K>!wMMF2}k!2|5D(PbQ!A@JU$%V9bB+ zKJ6~XWMc@tnZc(V)!N(m%&Cs7pHDZ!&D~Qi7^n>Xu&IYv6Z&4GI5H0J8f!n9=iP4} zR@kEYqfpKIx;a~Ci`^AA5W*IYx4zu)jm7o_-_Kf=t)>dbpH{tJOI;H*V+A-ekA>r! z%hgFmdHfa`MO8xs`{mR(Pdmsn%iO1@k`!zcEo+)X>==Z&g`K>FpF+eNvaQrh`*tqI z#q^%`=ncs)IRQMk2eWz6<7GghN!G@6>6UGQa0b=glSYET>mHwaZH$j+yZ{k_@E-Kl z&-{@}xB1~{_33iBtEAo#hKxvUK9XZ!>K#A=6}1;9wPz;8^Mm=bq>8|@Q5(+%M=*P{ z4F3)1IK$J;-CRORhml{Z-+99@si6-Sc<=_*%lHxB-OKLfgb=QTzUHZ5EzL6l?CSS3 zig}&BWH2-9@{Sij%-l?>=X|2~@pZCVqXnuUW$XEF$UN6%FE;X;W`mQo_)Ku>dkQtJ zR-sXU1+z>ieb~>MXDuz4y5Yea5yEKt+(>Px5s$AJ=Nd6$BF!yg&X}jD`^jU{hmp3f zPnpWheQ9=XW!rt8d4ccBv^|F_VplOyVYWNJ9<2VdE|U3l z2r4UD(6bjC?a$LwW&b)4SCuyVCaf^#Qu3zIfcnpqMyB(XY{NfWgWMP$YBqN=&;4D~ zmxe`lnM$(VUn!*WJ@N4rcNRBkONZyGQ_09=g=I(j?iL8W`7|Opceiw(pD54M>DM@a z(oz{<#M(H@6)+S6w`sIRRRy1SFADZ&o>`y`O^0<{CskxXo7nPIcB!1ba> zeGDK)aqR*!iyU#^zg`~<;aU(&Pj6mZ12Xs@b?I@6)E1W6O&jx*X>lvSljYe&67os% zgb~k=hhAZYTILiiNVTb9e;K*oBcAhI_d-&}?hIFA_zKI2?ya|;JI8#ix`FHBtjNtyqHm*bFV4M$A}n}6YE90~p} zLj7N=`G29$|1SHFP5S>tp9KZ}XXDv0*3d4HnE-V*)*mEA9`4`rRvVp+S@#HsC(g&ZD;j8nQswr znt=gNOq)FtcCJ<6L*?5LCt9q8ilkXKRSZdzQ~Q{%q`}QaTrJXIIW7i^-N&ImynNv& z={B|*L-Jy+Q(~2)(7Jq&p2g;`8S97LTf9%!GR-t>?kY~`2%6iu;@bQy#8vO@Wr{N8 z-e$1iSIN)&O?$L3ka~)RU9w)p`^cG&KJ1kARlyhjMz~G;T9W8XKvWim8~(ni^ZNbu ze}~uiUORb_c)8$)6F%!h*7nc%Pv1DjILT(kjo!~=&m$cy_$q zNx}SNJ7-kNMFmgpgUllzwzK#rZg*LgZ3zGR${riN_9@tA9pjTy{(0thC~<>jhuJNA zB#3#GHt6n74RF;UpzgWCpQ1AuLt}*C=xd@c>wSa&yP*0fEdEb}3dh{5d%L<>*vmRt zIx^uL^M3;aH&??^M)tF!iPL|@6fOd_nFNFc|8I@_zvs?UbA4eXC!~<{^ zyC6RwZsH%4UI;e=z%72ygJa(TI8h!Th@0~dVb8aF8Mzb0z3dFUI84`{*Ne+8(|W{T|@#r0=P8+xB=(NzsF_Ehm-F41$deG1aWx@ z;YfJ^uh4%d<^SE`|2V>uu4cGP4#&UaE}Z`&<@s?r{5Miw@E>{opCk6qsvNvH-2Q)% z^8euSxI^_Hq&yF9r~X~c!z&>4Z=U}PDgU2k0@J^R!v93e<96@g)9_DzN+$LeOkDpj z1<5}v{QnT&GRtv0=NYQ{}*Du zvxUsfVpbF3jhdYgdqlp$aeRU~k$(H}-ix3|VJbldqZ(|0gw#}}F^yCs#R>k=a*Z%K zsbY$aoZ_1BoC$u#i35vfVX}cWxJffjwEfqf3EVgFm%pJ`a$iiJuzaGS;U!2R>^-V| z{$;yCUs&SscF`SJn^vk|Tc*CXu2&9ZJVaa^k;6w0izbGFzfU5m9sQ2%ZZ2$B zLmjj<>%qrIT$p@R(#tQj)R*YjOr1ryJe`+wLXpqJJXF((864E_!SAZ%=yK z&=VJ6tK&$mt2T1X@C~u(Z9d{Ukq&$mb9*Vm2lY6&rZAJ?V7o;uVHm-+-QL&a;wL}r z2TK!Aly91D>YLZQXJ)oEAo?J0fMKL|29mTy2I&FbjmBV8sn^sUVK+&yMj2s3$JQAR z+7kR%^(BmD6KPoQRV`Fyv7puf>e}~!P7BC`ZGx8_D?@L3jxRJ3nuR0jUfL)N^)^*( zXeAIj#q6MQSad3=?1zQk%8=bAxTBNTiYN4U&uHC!z!?scJ6zK{cDrZ4JACJh5j6T9 zqM6E=0VHf*5>;P#V~I*pSBJ|KGL$nw4m24vnso{T(b#(A#Sk)gja-{Cv2RH z1u=|X11cDJp|p`0dE00HR;yj9S5kO-dsSH(=H>C%9Geu8;olSW67z6{>5#0oP;{ID^;+t!A8m|ftzJ3$ zpzBU@O`uUdc)b-^+PY|2;&{=#iPDe0T!=krQXhJM7=6iEym_6an3$v zr28pyXw1trPivgsSUZTpdVKh&W4NAgh60!druB{QZ#+vR_U&dbRxf>_36+r2Ruha1YQqenjjdm6Q!k6Sg}}jURc07d)ae>{ zAI^xnIz@@2Qeggm=p-ZTWoNCngg@dl79)f7yMaeXgW=Fa=>mnDW1juG ziMwZ`kw3vYpsq|g1#Y)ubVkF3^iv2rQ($qQ+Fe`QrN;*pM;^PO1tWrObc zUbR*t`+OoKJSVjmyIr}U*O)((O7IL!Wa?6aw#32J_fmbM;M{bK8zP| zzuV7?2iZO#jGh=60?f$3G$NIiKqzRN#MKrMi@x^HLC5HIgAkKo?R|x%@^iaIRmB@+ z*v+nw!7X;(&Ap2AP%*RY`o@VPxA_)PV##bIeqe^2fZontL<|hPx)Rl&9+_Gzy7GR_ zzANUAu!3XGuV7o|=tuw<6xEs&QZ}7C5`H?h(E_sL=s@Uo_~~*?7@ps1)k(YaB(t)9*3TLu5DC2E9P5=cG;0W8{#-mD)KarLdiHE*Tgn$`q*^4BX* zZAfT=MsM6us=louz+!PnbP}>^M;LpBECDqSOBBvY#L{XlrusD`UXf3&UG6mA`m`xa zXe%n=LS}i=YH|(p0D=&1F&L2&(}HZhTJkk=Q{*^{^4PXyHc4a^Q{L;UP}>dXkXUsT~*TR<5%EQ zt*H*_zV3t+4?oW@EWysM%dVh%*cdPL>D%^?I z0PgCsLre=A97CQYxE4Nn&rnCvM}?Et4oz~v0Po(Y)z#y!~Nj+!jk z{iFr%oy3Q7wL*(TO-)lX&dMKR1EUqrpc#5V@O&q=7Bvzx!2Hl|)?G)8=js5bCnyou zVqp6$_3Q;k<>J?561uPr$FgYz+}7blqyz>*@Awj%!bF3-Gr&c| zZLLZZ?&w5eF}=csMvOs5Yu4bYv~1IxTijc&MHAG@E%ip866ymr7g6Ae^^pkB3?zEO zt8gDn6D16ma8UMXK?zx0rr)?uw`rZ6s~^%|^Dy=}AM_1;fz@MbCwSW27@8yaeZE4_ z*Xz`ZHwLJ>;zeY}Q;5+#!oBej5n(@d*#>D=Laf->*44%Nmru=0sJFC*+?tF4;2sw% zXZ2cJ1;EmYE@at+CTiXtJ@E99CN0e?2i@WWYRyjsoVwrG*G80FsG-(St}W#(;yMFr z;9Dm{qmGDZ#)0%>u+bL6V2d-*zhPJze&smry$^_jpIBkq%GEU`Zu_0DW?+mRjI~&d znP{f=VfjS3yLSsqcU#3ULbWhy*Q#gVrF4nUj4M%~R)OwzLAV9xa7rLm2M0w!-d#~A zZZVdrb0qcHJ}V*K#h7Na)+!;4qVp3A*T5y5w^pcYa1q4LhZ))0;}2^F%VtdbI`4Vz zZZV4bGr+ERZ>G$Wk9(pZ&<5n;+eQRAdBtq3kn7dw$ZQZ0Ac%E z8+oGqJc%)~uwZd3Ysv;5G!O-GmMG_h%|}n4m|^DS+9aGJd@(Mpr$X0j?l=9F51zrc zY%!4MyUE9%)97L~0;=|(oaCJDs>AK7PIA-xAp^M7P3>PPZX6|T` z3p2Z>3#`l)ROZUm(0?7+08(AMp_ZxBJhzIPh~e7sPrFv?BA@Bb^t?XpWmzm^DBi&| zxu4XcB74pl`zEl$_R}`HnPLq~1|<_(86oa-tQ+h^4y}`_OYDc(s^Pk*t=vY#!mjTf zs6)$)O(cKO#K+=Yie`Bt2gwu30O#iE-Lo$-YnfWRHClx}Q6<$x4!NWCde$P^nSvxY z@K^y-1K9Esm#7ZA-z=Lw6)9OD?`BHu=@Lhchn%>+lem#F8oxM8e- zD_)R~s1DeVW*w3f2dV*&Q2B`LGn=1E%Qg~R``1L4M%EVlXF&($lX$S-TZGj7D3V*> z;8xT)@vcSox>c~p(LubBrBWqc$Q$~Z<3{&ONVz%(Y4lVuj&Yw#^LfsWZ!y&Y?sOE%BaZ4Iy?{x>%<^2s<{jx}swlrLvSH zFX29$ye6XRv=84I`*_>+ea$@Evvqm2w#B;AF-FXl=)xz!kaZ)RYPW$MWB8<1DEdb8 z@9xGS`v@16A9X(s<|=sH9~RLzr77cLE4?{B-RUdWChmx^>#P^R=}oZ9KbCtd2`E!dA` zOymcm(E%S_D@CHLy?FAi-q`DuPDJureIgaY1C@?QX6FJ=h*)>y{aThyARIcbh*EjT z9IkWCePzN2>--TtYp&4M7cjt+#pYM+OtM{izVevy9cmkxXxbIG>39c9_uBC8Z zm8_FmV5+GaCssTMM8%DJuFsnz=$n{H*Py?i}_KNOpIgf zN*6}$Ywi;IN0=P?>vTrggv49Xc`p0Rq6r|Ey(2}lwp^pe(ZV|~zcwH{7RV`@$>nws z@BC8cA{aPGZsD{)bJ6=G99&hx#wVwhpO1in2zQfObRI+pfs zQ%AQLY#%RJtg8nbAtWvvjc|SL)a#c*tEte|`OEHCHJO{Aw(x`khKhDSVySD{-C8WY z1;6aOJF*W}1(S6weLHj=r)nwi3f-ZXcsK3sE5AQ^G3g!&D`_OiD8`PE8qqr{$JUu- zyd+*&GDx`Dwvx{@99iBq<}%j}UED_ZPUrNDfDDbTmU9E*Dq*s1c|xQq+`y%#@xtzV zG!sSce;dbzF8sO=j2LyhB}w0i^=E$^^kUc+ls9&QFV7(B=0`+|Ky#8@Y8 z2b_Lyr)fsf8Ksq{JoRX|Oh41m@;By>rAO<*y$Gc2UV8pGYy@kT|26-0&xT#EJxda$ zgT6j%AaIX7pUg+Itsx^w!k2dl_k6P5R1qo`0n7!(h=}do|C(;-ee+nP&Q8Lzhu5v` zZ0(AYRD>EBQ=8jLV)vt=^83WK8!e`}i=j*Ug$yxFmKFubFr&-oLQMdaR=vh35$gTr z@mH<3j|n8FhI{>>nFooDJFx_UhQ`bsUwO@+T$@-c8a;aTs+Ip0$U@}naOyenZYnBV zRCO-YVxe@pJoq*!1Lft7h~vE^hG;(gCU|Hv6_e<$uD==Nv!0LS%B&2n-v9DW1%-F* z*%mLMfh%Juub=8h9oENf;u@*RA!kHJbDas@6cPb5pJq368R%p!UY!TdJ+1*OvwA*L zqL>?_ZK4vGSKFC~91q11R|iWpjk7dHy9bs^GPD5aa;H7y=$$`!rJ^XVgWMl7RxREV zc(^UO@QW92P-Z)K{}q((*#aGh1uvN!KCSkACQ#Pkfop`LJoiF>SoczYbjT0Z=T#w@ zM9TTZ_YuQ^ya)_Y^vw9{_c=M}>j|gf5UN^@9 zve$EEJmm1FKn)uHj)9N$^3c02%F^txKh*8*F~WRiyx%5A`M_roBHfywjiI7Ol@0t+$u8_?Z~cmb5%d)W8S|@${*iO7hs7 zuTOB9-VLR)1Gm2nQED!lVS=R7tqQ;X%BgtPBf7~`tuz*WbO%AZR1C}a%|OYDDuC4Y z5j|UWs1A=k;5F^v>NjoLjfSz}aSjC-b;bJiS+k~TIn!u1u2K2cau@}JgqrafwLF!} z)CMv&xO9o@)I)Yt-d*&Z*PqUVyHfg6%*xrQAM;2?6LA;uolj@@*Dv^XGe^5rlWxk^ zu7%&s4clpjtAqYbGeLU`^HDlvFaBg>d?Ys6H`^+XP8_M#^=urW zCWOp&m&E;?u!huV3q2s41BawlN^+!fs?+3N zsU*fh?#3yVN+^=cT#{JQ48t&+C?p|~yGd@z+}T_=l1pxr%P^O@#9TM*W(?nb|A6-o z@Au>Vcs-u4=j|o7u`M-lud)7ZqucDnH&}#aChsBh!#s#R|31z2;ZGMnSnV9MDhnMPIJFax+Y<-!V#V9|_=E7*Z<-E=2!OEDA^Y zorf>)vZJ&Dv>Wb`c3#sa+cz;dU9cs5kq^R#2x~Nvz9>V~|sMezZU(l$m>h5ID_T78(50-_MXmY1__Gt->w{oBZ14(&L zt3m9gDYve-SSl#2F)|0|xB{|xYviEp)_8%5BDB=6p}Oa?_)l7Cyrj!hO21IJ)dk)i zNoEoNQf`@2r3?sM9QhO|)@+%|!C#U+HhD9bmeP))DwBGpA@O)K7qw(xCwxUwXj56| zz-V*>$cfGYwNisZo=85M#gRV@p+WBGGhMPG)6QdDtGMj0fqa4%{TtBdz z&oa$vI}9KB;e1HW2xPypiLUHDxZQgD>so%K{Eew+E4vmikyU@jPD^rK&Fn4AfE8KF z2`}N7TZ1P0ZgF!jQC{7XRIf`lip)orQnw~8MX7NHN4F7Krg_K^fS(0}ecqt4IP^yM zQL8e4pXu!Nv(L+>6~;d{-1gdud})d`L-I=qktd>FEy|g3^!&!3g>;rIJchM92 zFSSi=?SE@`gTAh2Z>qPg$-8GVGGxHGMXMPjx98IhV>sizPpHR&sKWIR~6Dz zyF;DJl(XA*b4C=j_)Wjd=>#n%33s?!3hMsGYV9DbaJAm-Q`?2wjg;~HdRCcI&xG-V zXXw<0^jpWJ4Vd>Ob#Oi2v+caWX&(1}@qw_{%C%RYG$W%WdSqUmom_Hxc4A48920kj zDm8k$8ax%krs{Wc{Uk|Z5pIOub(>{aZj)w0DsZjUdSQIF!c-Ukbq{A)(m#c>v&Kvw zMPwq&S)xreORzQG_|Zq02R0l$uHkg0-L0WU!xlZ0}{c<9*&I!!{j~yqdqE zYJfCg6E>1g^gQL#iK~13wEWkYB-pk)6v}f5!M8gE0~=$K*Huw2!LmVq`o>>F^Zu+Y z%U3RDFOFv3S>JqA3{SXaxK=xO(@YYXy*s_Mhj18cg;?pU@q(3%Kk|A5_CucxI(OgO zEqGO4qi__vv*wq}yf+(HUa|}1uOSNzVN8W?ee$1?=EW~bPq#EV=jShwo1Xf1dOCG; z{^%)o#+(>XS~svNSI?7NRwx(lPR&1_UC7bY_UXKc{x9qA32AVec9!UJ=u^lw@43v? zViyc3`)jMb$h0ML4m|K*mNIqdf=4&65EK5}nC8;W zbPiE0tx5J=qdk@y&A2@oSyg%%|M{te=?nvx40`U$JblJFkz*uM))?w!H!DH=8G`#N zDm8P4V9ROK9cn}OBAi*+SJpF?mB>%x4ujwP;?%Fn1lFcNsA@UcC$aY+nPGL=Ge;wd z6WSRB8F(0|_#kI&zn1c&khTX(DhoChua_-uPfhOyg?Dze2rgN_YjjpcWdl*O#@|lF z$;O>%AIqtE7dc(^u2$ch>$Xw)g62M%2fnr*C>F0t{=f!#brRmR`K2K3mPYGl{K8w& z4fdGu#tSG{l7Z~1JGwkoBlI8tj=FZr`IE2XVousLGKIxl>J-<Ct+$90E-%xt6#0LUt}?PTh} zcLqqwI%M&P^L+7}VZ`F+D`zN;5#?&AO{e&>H^E+81NBtxX z6!glj{x2tXteCD>E53Pe3~75`Z|jut(X?Ps6J)6S6apnCS>fe6PnS3c((!PqUH2-e z@6!osE}n=e0s2x$Ty=nRQ{t3L@kX!QghXM37-#zF74*m-pY2-%wXjnY!=U@Gq$iHr zepT_{_uL@O3eiNo(v>3Y1OIT3^T-F4OeF1FPjL zuGQ6|EoSbF7v=f5XE4W&wI53FL2! zq=UNx_W*{>i(IotLQC2GoGz;Zn9=NOi4ep+Qrxide|M_o?M%f0tN%#Xxgl1$dP>$P zEGy|_WJCP0MVdLoK5WRD?VghGp;>ud3v&e6rH@in$DCENPV*L9<6U>5L{;}=W^U1x zj9-XM6}f*HmmAdkFIpG)lZqRXK^&8T{JT%MT-UIW&AW7`K>IMnKPzw3=&r5+EfNKd z)H|o7Jb-lZY+w-e0<$Dgp8GX%_Cq$@j4* z0%wT)A#p3t#^{XnF-I`PQwiK8(p2VTE|@;GMxFgMFlCjH{#m2ctBvYm{jZBM_jP?L z=xfk0;pM7=@v58x{Z5m0z*S^Yb6OHwNcXM}51b-nJ2V!%Bej%(-AxB``U1_eyIJ9p zeThAl<9J~Rd3W!v0k>d({omG8NLP&9sjO=~X<}4c=>;bS>3{g=xyJqWOPA=!ik-(* z;XMCvwtj+;;o~Kr#;*0p30kf+%M{Ku{q1d)Q7*M?WAl;NgzxChKn|AYq_~^RzAJE* z-lN@}I{3L`dAT^=c6VQVRit@(7?8S0%HA(-Pp=^n8KvT2rVOSz57G;5f`no7L;9zO z7oRm(C6KYf^ac-eWReC3X%$#B6FeR7hMF8pL? z^m;W?2Ed_vAWw=r$S!VpuQ9g^3TNbVwiW(p0_$YOwJ!vU7)>>`{MigBRkCbc4!-kr zQCJ?q^H8B%a8wA=IjJFhbnPkHC6UgrEe{txHCp@rl0)^!)TL9{O$gwe+So3rIH$I7 zy$?zHap$P_lafL37~fsWaWdLprd@v$`l$3`*+`i$ zQ~50my3+Y-dQU1Y;*qtHO(kgNse=_}9~PSA%#p zCRpYqGR%|c>MKXI+4dit0|zfU(TKp>KDCBg;B*fk;_|f*5Yo)Cc7|hrFAQ^EhL2Fy zTSRhd8&OxuQrw4?!My3|&fq6Awnxg*E;WMP$}SZD3o$H}xh{$(zfWDimx&ubB_m}Z zdCcff%nz;#xh+L&uUkf~P;JSjauH_oCG|SM?6}Dp+I$ntzDtL)JZ`MJ;oCGlS~Yzz zE0??@_=+%a0@Ul?XjqwbJu74{{<2qhmGcTD`2fSUmUdzSxWm6?c@`&EC6PDT_^l%@ zSydv~dL2E6yNWGVS&*&CZQI$^*6MuWi5)V>*i^|hR$={+jb)(eS1xB7@n*smjMsT^NcUn-_mIZ%?%Z_spQYp-0 z@Xmc_qIE}s`is3ipe2<1sg}>qAN_Qy9#fqyD`xypNaY*el~zVZ{l1^{3FPXBcCPir zf^0AzvI*SBwIiaXx9Fr@auXF)Q8zBnp#g9F6#y4kjq%we>_&7QztvRv#;;Lh)} z69Du`c;tHI$s1AY_Fco~ty2;*OTRw<$Z-l6B9#pbta?qea_#Z$j0b0Wn7FI}=-I4> zPTTwAqOk^2OaP?az>46x34T5SASyIN``|x54<6l#`OSoCav$PV2*1G91MUXyS=)$^ z@_t$ZM?z&%WJz*m+cJYuY z8`)P^7jTiicRCGK+-`{YSdvucoOgdP7Lv0H;l;fZIiC^y2_|qIX;uC&>KEc|bUmtL zd4~V4 z&X94*%Yv|%{T?{y#F%Z%G1;j8IT?WQ;VeRDKR8QhN_7EU*n-lbd#y>Fo0F|3H}%Zw z{x(2r6q@I{jAA;N6?;hXhXs}j>k3lh%RYB=|6_yBag3F)iCTadPq=^tx@@q<7mhB5nj2_xcw}natlcUA5}hFNmk< zc@n{kjto0GuIWtXRBeS#ngp3#7Afxa;0U#BFQnF5agm>+w^1e`U>F04#?Ls&KR`545~6 zhn|iuR)@DAY14$L@jes{S@lbryQ~}>Sd^bNd5WqTd1SPrV$ROs6!{*;XgPliIWGOh zyb~CAbs|Y44yqcrq}ciXpF67qmqP^ZY~bEog(ATu3jWOHW$O*tUE497kf_N_-4PD& zf#4f*)cl>G(J|2{iYsxodD}Qac>;iVrIK8Ic>c{)4D&kevH2w^J z{}bXJaqw@lex!>;#>9$$cHLxJ%|=Wboc@}1iJ02wU%q`4_iN0H8zK3b@~X=kKs;g5 z+rvoP&W-{DR#8uOrtt5?6yDS`S2&!=Pj&D+DzRx=e%tC|(y?f{%8K;fo6Z%^9x9=Q z>w}AL+v~4F@}PPoOyGij(!5c6_q+D2SN9qfK8?!S@j1QUYSc(Y3--icra1~azXPsW zS0ZYgGAS!NzjgC4LNDxb*=OTrG6DLHgW8?O23uJ56brNIq>yfXQA_D~?a;kb0Xw~v z49mTez26)QnV`px{PBZ`<%LhgdF$6~(1HJb=fI)(y=+?d?t03R-dtH~$ya{IUqP0L zJITgMq*1FWYXG<2+bjohr)HC;_!a;QtM8Rpf0$#ysv*r5wr7jGoXPUcJJamwc2>&x zkv(noon2y&Vge6yjXm9|7fbX)KBW9zVo8^;sU1PogO{@TLNgNjzWJhKRCNjHGd!+_J*rPn{ zb}vBpmG+-KTqH7@0G}W2#91 z;>!!5?cyusUyj#orDb&4@)DOw>ZjsZa1I;w@*d%l}g+vcBCY+3z5Cl`-}#Aw@k)?Yff^skeOR|K|(oHzIVm zQ);4iLnzB~8^(RVyOjR5gEEXJZL*Jd%6Y|(FN{q!wePQdSi+ae&n-*J&)bGQuN8*G z-(EylmDgaN>KCJpX4@g&%%ZIz{bfm13RhM%h<$*vsJvYyc7QSl0vvzBwQz4_1htOk zGjEW_W5>Hh=#Kka`-M}XKYrIP!gOb;D!<^CPb*3)lIl(W!ya}*mxHK) zFmfd=dERa*KfIl5kDU*Wg{MaY{a5(!vV7-smeT9n*6e=nbv2i3Px(_axSSY!1)&j( ziHgNw30xyaGN-DM%`Ds?=3qv`9%cR)aENn}V}whauDrBZ`(m@NML4$cqLB-j%s)E2 zzl9EZF#od=D}``kez0+qR}LV)>_l#YIvH+S`;~8&;A^z?puVsl7w;emm%_s8S)IWr z(M@e27cQ6CxhLD)I2{ur03xYtT#4O0=uNr_ zlT8UO@4W8YJP_`3tZ!${(8!hov;SEYBkP^)`}dpaiVEb%ynZC-I@cQ4lZD3j)|Zvs z_QJU6((j4Y$J1$`iFB+y$cwD`(LH<>U(-iB4*x`ZyZ1p{3`-$PF>h%vWsCmld5B>* zyP0Qd4{82wNTE538Tz1FLCR3AE9vf;@iyz*H&&|Ewg=2xzFCl$fYCQCO z2ufZ474pp-N7LSZ-~3p+oBMFzVj1HA>*KPjPtY0_nTMlj_m0lY~1F4-U|6RGmu(+IF;A4&60W4nd7!7Ma;o3 zj?o-eK3`ch>nzy*oazvz>ijVfGOOsWnVE# zF;oNE=E@3h7|V*0H~H$6Vly+KIVh8PGjN5FCgCXiD*)Z$zBcR`4~h;OOoce<1m_fo z{sw*Lo8p)GKZM9y{>uH%*K8dc0l2%)%+RE$bu6d3OmiBpa=O9z#U_3zH>P?qz8!RZ z&Ueh**t3%u%|H>#TN?Xn9lBkvEqD|6Ulk*ftpO#hd5C#qWV}f%GO!4U?u-o9udys! zP#;lf1R%OB942MKcwO%JC-n^{dR3%sjQE4Bm0P*tjqaD`+;#!nUo3BRqianM4G!g~ z^{9P@qhet-M}-+w<>lM4#GK_oA84wjzD2^g^WTO~ItVb=HzgR1isyOM+{Dhg7@J+e-&uI?+42jJcc%nuK|Njm zL29KhIAKEd;P?80tZGH-j6#r>jgxj{KtPqh zb*_ERwQcn191@$5PfPf4HH@xB5vVye1tMnqH(GB@X4SV#Jh8tsDI7*-I?z9a&FLCn zW1edvnfZmP;=SsPHt&P>sWtNf>b60w*SE92+0Mk28b2ntHncNf>f9wgeJl}smt7UXISPa$MtWTFaqw@$U-!Sbw6N5aT zggTB~7!UZ?!&f}k#AP(he8q<2Kl2d!rVCaJ1p0L3K2}L0{y0bYYhvDsWlOhg|07fc;HTX+|P;$BX=_a>y zM>sVVWV0o4jK3=;!}U8U-06DHQnc45mYNjpF~jEV57MJ*HupBL1A(9OErWiRssqQOVazCrKO=%;oca0&#osJ*%k6$g47bOJ+$Qd4Ffw z0p9FbyA1+9ExY766V{&*Hu^Z2#>2K#PcR8cK$!e&%bd65E~DX+)93&~SzwXsjT?1R zAw>hib~(6qhUiTN;_|`<;@DbLZ|odfi)9sFV7VqTT|7Uz)X=+kLTp#yu35_5{Pzh- zN0>Hr(-@_`4>^{gcE6svT{!br#L|JkNNMQJOhDZZ+Q`xhOQ1)!8y%u1{jj7DIw|i> zeyRbINN4SqCQeUJS8X>A>j2TjxXmh4@qFTha8wZYM(%7>J7XGT{i2{;+3KKfgJ0O5 zQE%-R6lAv3c!7VbV{5W{Ol>W_NCh3cG4M!_#*Ee7+@kFr663QV6{d?5 zTYr!U(&^ECUGKIz5y}dFkvkeRs_}>0H^{jql{r+ExpTz{XXi2<*gD7k2j;NU*AvOL z1)>!<3L_sh*{onH3XOav^8^0}k6EK6>r<-kv=r%z7r=skhP+X92(;dLK8>l}-qkpX zaPCMbt@3t_U6P8j)lqp4CT<);bv8>sJ1+qwQ`v`ORR)fTlY#U@In^H-f-eM)sLWQX zONpGGOejK(`#REO17%h(Xm6ej?ne~X?z@NoTCd6C*R%LHukG3gD>nE2&_lwkf4ALB2V=pS1mkmwUh-0@(cs<^c96Y0OM)c3Q=-+4>& zE-3>}#V;B;;_KRu97h|}V8ud<{?JYXKbX1E_xJCvfJd_jORdl7+4ts!ViK$o{ zdt9bpDbwg9yB_7TW3vL>} zsc2-p-R4s(-ic%IcJLkO)k>d@62tYBKtFo(!B06_9*W}7}#XOy+0GDWb#TuIbVJ}DU@-$rPM zN&6(E1yF0>?OHf6Ro$9?}pBndG<}B%0eqY4{|0r-d>`+zc-Pn`yaZO!eSg{10_%)6&XY*4I!g&up~o9%EH2&2ZJ+2(G2)RM6jA5l zF_{(db$QJm=JJ2L9LxMrcbKuHsV112-XR|1Gt~2q_C+fUCI)(wy_#sb1gKs_y(?oC z5#p!soqx11Y7o!U6IXLss;$2{IuB5H7|bJom_p}U7(eS=T~`kee*DzPd28WuSS5@5 zt-XHXi{Zh$WL{lZ?m%fxQ+cwU9ARNx84fS5L0zrA0CL{YpA7uU{mMGQk2$;x3Jk?q zghh+evf5$hVGmz0Swev_Vu8)%%0;eerYOl>%wWJZZ0x4UVG|_7t;i5Len&|tYIDZz zZWRQ*bG257Jo}@ND&$2Vv=F@YsGsJFwlrg z5)Xs_2zL&&nCZVefth&KuV;HJ+5ciYT{OK{%1M-h)i22vHW;G6-pv9Q4 zz=N8te0(@K2cOC!H8A#eY6(LEz0K=Cqmkks3pW^K-^}SWwDF$4>yzQ_fOSDdt8ODM z)Jhj3SWDl~s;NBJ0~e`7^Rybv9^C-g7e&>C7bK}a@yU$Ov~~Kq>s9}u{wXr<6sr{W z$bUf19Wgp#82Ijxy2}+PcSf|tIp%owB|MR(0X^bcOrzO zy^UG}!A~VKF^_u9z_sQR{iPK=rVb#4gY!6LDr3hFEMdH{Ci8(mE-#Z7RQ+0ph6EUC zF#R!sVnyG>q-cA$Wh=Ww^5s+A6;<|eQA4zb;L$n!vSHZw7B>@E!M^tW{i=5EaM3X| zeE{C^Mg1|Y73$T|JY2pay7qnpx_1t}77>|X65rSKvX5HdAEW2=U?FdguSdsFT`aqG zMV6gNH-i^LlXPQo23JWUR{eS;Q86M0evtwcRoRTew8KuT-luMN^|pQ0TJHDV<`dGk zviymhf+n?f3WZbPJwjhBF=pJCUpW(=s?8OsRMEPz9R$D;c?M`XnkmPB61Uf9mt-{e z@mf+cT`xV)CS7svOGAf^cK91qsm5tzIp?R0w$3sw-mT+cQU!}{;H8nH=w+A*PsFq% zRP+UTsF$mY!5z3^xN5e+b5*xL*t?`3n_-oaFJdkKM|JtM3A+*$G#p4h%cs#2bZ z>~HKzu6~a+wg~-?*Wwr;=Dc=wLC?(t=q`C%CbjxS_8WUIwDg@!YjT!aT;v~6!^J%> z=_$n;WA{zy@P9s4w3b+l#n2db3F?|G#iKwt0TV1x4-7AQ7jC+JcHKxETaC~P&PhTO z|4SdLNDXQ~m*`4BkicVChx5d8@43Z&H%U|i1AJ9LkV{t{OjHjZD0$KEbz`Kk z*Ne;;QRV?&2icd6U1n^%t4Rmx8Wq@mZ>cvc4WW%NJf)~OmdjnO<%-BijyyV6hDeIoM z9h_0iCT93`#DO9wsnvEOSRhNV($_M``Q@(Pd(gfZucu7@b8rs3aPzC{iVNy7<$?*o zTF>nXnsr2xeQl!UklNk06okKJ%4~0Rzp%fiJfu`o?NN5)OW%{SHf8R$-<+y7+g8>q>cfh`*z6A;RL%U}6WYtP z>cCvy|K1>pdAj;TqFEu`UB>Nqy@)Mc!rA*D2gF;n{H}AZdwFs&0k~HN?s5rr8|fT) zBVWK8ByO3~Jk7hG6gaY5zP3{>|A%4Md0bE)OZXrTDkYrbsIF@64!soOo++Iyck=Qa zN_mVC)F8O}pGtKH@wc1h7%LLS-+zP~enynQ_!6?;yT zX=vR|2J+`5V+|tWqYab>di0u##4fXe^mZ9YPb%v}Jhcl?jQ-MqyqXCGpOeB~ah-&n5eDh9cUj$ss@H z=ne$qI~l1zgWDQ1PTgaFq_5bFk~rK2R? zr?9a(#wV=c$^PIo`U{@RXOK@itCdKCh1L|+F*mVYP3A|jLVxW!?!Q#x;w)44G1c3d ztrl%;jeeR6p@`tR31n*)Onovm&h!C6%*X4Tp5|0+Pn@;151q$3`St(i0154Hou9&z ztIoz!zc&f&nmTe0leW4lP!13cn`vkX5Q|^8qBULEUz*2A?5GN!yDv#&HCu6>OHu=3 z83-7FZ~0f;5<@nYA*yCS39oy(xqD&^nA)RBOAt^a2IzY}56RVa6Fx6C%`b9AUQvw&PSq3i{Sk|k22r|gP7kb~AJ}u7Fs`BzJk{yE& zMrr2R#Gbpjl? z@V8NTg63Fmi|SnzC$j;tb94SIOI1_WOoooiv+$)_=M@sXKb3u4YR7h+ zp5{ZhMLC7#RKAN@O|OcVaQF@Fy=VDUpFEr(DIX}ddNiZPICA+eb>J}doUL@vyymDsG(kAoh1{EJUaGoi-GrAef*!Xa~twObWf!0?t8e!nV=hJIgQ@o`2g-*|*Z|p~|2}m~;SE^)Vg(f?v@oVsN1_`VNJC#(P9kwisM%rv}}U0Yx1AMTA%xaI(u7O^dXAYF1Q4 zQRWWDT+i=}vx4;FqLOLbteTu8+)L{v!U*EDx+n)m%BXq-EsT8Jp_?e%V45rG6d^ML zD%B?_@12L(aKB>*^=l(@@9lQ0A6l1AZ;{~?pv#1d;xn6z1JBMEl0p@Q_TO|K$@y^& zwg_JFIAc+p86s-IR=nPKWwIgXdP;TL;seyR&q+c`B+s;+Ar5pyN@6|kwS3KtiLz{Bb`%;n?Sm>75WxVizE0Gyi+5=1QL?e{zdL9B z*n%7$d02C`zim7B>!nICm>;E%p&B8U9H3j`Fe0aXYbpv2UU}}(Xnfs ztp5x!mSUu{3!o)oT&g!RaVl%)`nP6vs)pUJG6bu4i~e+_ZtMWFz&`w!_V@ln43F7V zZoXx<4&MSbYM?*hd*><3IlJ54MVe8iJK^?VyK=`s{XUT*6e4nqB*?{_7}CTI#oSDo z*6HETV@_0E%^`UiM%CYmQmdV5w>VE8lyJO;&;t)Zc18m3rEi&!HthIA=cVm5%f3Ro zyC|Wy@ArO=wM?b%pnnt~@M9()O8W3p`8c@349jBlJiCB%j?CeaMp@_xfMNmyp zmhggB5ud9L$6!X^l!fEinVrP}10qfh9s}mFTPF!NlB)w5h6=vZZ$S~g?oCc!gSvk^ zc9%49UnH!#J{TxPtPGc(b4YsfS*T0ndH*MtP*Z;lUDipg<#iF%f-N9g#mpjNwNZ@| z#v^ur?SfVnYb)*K--8$81$_p^C$rxjw?X}@>?0dY#(iJ?4HGMtU%WM16mLC>pS$dg z-8YMud~LQK_Eb>ouyzQoJyLA+n0Fjx;#C$d^TsMYe|x4BWB(%SR&b>87mlVrz`@>f zp!WQB<-uZsG5PC`BGz>SB7mN6>89D>&qC19hsKxiu=%rILH!wCf-3?|E44Kv5RPq> z{l_hWmU}uqNjsx9N97HFFTY9L%2?KGFb{6|;CxT8Q&M{8{gP>&hv%BbYp&{sL?F_3 zeiL>?Pa1nY@_CUHytnG;PIxIV1yf2N;S0gOcMS@+AdJZ+XihZD;ebL&Pb~X*PjCiu4N}2Ni);nWxyqjEL;ZAO9 zVVTZ2TdcDl{I~3qjA$=HWcr6~XaB>(#|sfH8TTO#TXp~-y3K<39xYW<(*|fUvX%1B ze#!UipWBsl;x0X6BZl`MPMJM0=zM9DswQd?ce~gbLMka80vJci#g+Wea`La{WcQ>M zx}it5^+EzC(%jGu5e80!zL7bzaZBb_0H`7)C8ifbsH~1r1lo_8Zk!3V1^yv)pPj>p z9Q^`8f6!W$j5E*v=Ug20lw#L{y+uS3%=|zY*~euo#j?M8b+|HhayObXcgAbR#2s}0 zo{WtU*()bR7i~tsTvpPl0b;v)J<@SWTr5xapLJe`6Yu6hH+;HzuW_9|ro{=MguDVxRd-2+h5fu4 zA2by|Gh(+IKVbNA-@m-L$rfqmc09y6ugOL_PM290+0WgA=7v3@C<9+w{^mZUBvzD+ z9IW26lGUlP6O-zEX!J@{Z8$Joj`h7v2{<~Yhc@tEOgkNV%hEThLQz2S)ZZqq*-y6J zPT4F&_1cZqNr?;%pR)TSLrWn%bvX}k6#>rvz6qV6tX-ubic>I|2cT`%Z4b@ zdHu7wk_n0Az?XwrNX-v7Zm5D4fv;jwlGYQtUk*9dWp=nN@163(K)0|B>3mwOdp zcw9exG466bbY=Gsw%3N!Il(vRZytwBwRs%haZ+b|5YFyOOL6dF|CxeHkrA2Y+3OzA za`w2zsGm9ahrwNFnvQG^@3G^{PS+e7{0NBpD82f8#aP_fz_f?c&KJ;@ zkL`AgoN(tuA0z=*=`j(MjhZiODKYw?c$2ZSYa!W)={ugE-Os%FW2AZ;C7rEUYryu- zqp&V5C{cGRI~LD`T2hv#bZf^)L{{*_ZA?`7kk(fM^^+Fq^+(Odf)dzUOWFjK(wI)bE}wIZV>&Y+2I5hPKTiO!~p0ife{V&s_1krQV80jyo+mo!)G| z{p{xzM{-xo9O8IbMa!!c#6dr;$jq-AmBO~&8j$V#SiK>@ZNip@X!2@?mVmG=r z-EYldLJ9pDO!4@*@r~{oTbVG(7{`-5lj*Qkx5viy&a`Lalx3OQreK%6(|)k4C|B-> z6-!=rXU4p5UWZu@H-lzKgR;Js5GxL(aRa)jdDoC33^#TdqL%O3f_xLhgGNd)stJ1E}LFg@G1rW$pOU{vO43I+6H5 zmY;WWZ;pWn?#toAyh4kH_2?4$eP=!Amy_FJuJS3B$O$n3ablfkBFqR;LguzO0yi?e z&z{?&0rvrP;62N+O#<@%izaJ7!YBs^1~k086}rOvM6KDDoby@W(J=Og)s-&n{;lV8`zdAc z>^(&*X}_Q*s#SEafmqeh&<0#hKIm&i^pR@YwMI33+vN%RaJ zr4jyUMwF;+UnyN4`T+hZnV4Q}MM5ghUh=;GBP!zPTJ!SHc~8%r`HXx4lj{3Bo>dUg zori2UM=nq0f2dQ{mWNnxzn40QyhFZIR1mLA#K<4dSIIHHy2mV*Wek}7aLG|+j^Vep zQ$on}8m+xq$zp4a5B*=Yz1{-9r2_PY**1&I9sjDXOB$?3B0ypaap0`@}U<%Xkvq5rccMC;pBW@rO%b|4|Zs4ud9z$+r7~gjYqZa zX4SY&_2uK3WXJ0Gu&QBSxd?OY)@}FWO+9GSX@r#RS7NRfX;e`-Wy^XY*u484El`Dn zvfV11AyXhL!=ZI}%&)X-}hoK6-rxXv@2qyy4Uc~5`jMpH9`3~ zxOt-NzN^80qh?5IEc-__=8%em^_4x>Gj)ll;J{#pczEizS{*VFFOx0(s8AyfCA!83 ztt3_+V}^A6JG52im9GAgbl0fjimbl&XV(xl@ZRMe78-XZ>;=`F)WCtivO2R@LHcZ& zp@HVAPm&Qt81-V{a^R*LfVf9O-0>!Y9JXo)>4HS}W4TV|xr;=Dr43{xtT7V(%#~h( zxf*IONcC4&$m%IK5?fsUpE2$q2AG8vl}egWsw*^gR6=ch$|MYXBGGh)uk&u*?JVZ2 z+}#iDRI6E?3!9I22jz%4)YuFCjh=l(mv0cwt^{GP{S)gpUi*X-b&2j>(&UdTclvBj z{(+wjdV`fO)c1dx8JF#9Q{?4f&hC9fuf6dyk5(tuCa+~Q^N+athX;y~Jl@&`<7&)f z=Mq?=XFsFu$b@+XFVte<29e;E^`2=i@DtvypFZ($Ds%UTw*n`1wW5(S_e=_&f5KM+ zTE1CTR`a{AoI`xpx4BXmVpT{J{orQ3J)H`PHt;+J+2R6o?bomMiy*DaR;^HmOSf@A zF*%g2QQZ5pG~KGLgn%j~H~B(sy(d}oz1>9fSn8P7J`*Utd3QmS;}k!kkeZub+X%bR zqYdPUyZxq)ay3SUAS(T}p=ie|M$h{UPH%&f!=)Rv_DS{oxRzyAOF;RMPr+r{Dxs;F zWIl3pDM3Xuz!LdP{?Bd~7C4nuGg8fsPlk^^T&P?b5GhqkJ(sgW3HIvNf90@v%RNYk zO|4!G6|jz=R9&+9=err%I988uOaj#1y6x_!o`2Y7AeLJb?p zGbc7^;KejhF-LFj4A-&h3QC$>lek@WbV3+u8W!yi?kH^#Mp~@v*IJLLl~6Q9|A9co7Typ_7P4f7+C;zy4eUJpk&OaczR+|GK|{DImN3Y=9#8ZLZjmz42` zNk}2?@1Kk%?$$tONjXZP2dxo3zOU^0*)k+2T$b_z7!YdtL%_T4xQF@{zWDjwOG z3Ub&_T8I=isD#RXd=P1l@wJlv&Yh7OC^w4CpUK3%8?R&-44&L~GcG9`O)Ke8_`-{r z8QS~iE9+kw59~BkBKd-!l{2jpKnAKzufZaFChWtD&^x1#zGEm~M; zRzlqS&nk9&RSA-&s64A>BAivc^UqZCM<16YoFE%Hy@wCj324oA`>mPyh?ctw^ydnk zJL_F1*(MF-n$0IF1k{l3Q6#!O!?3|6=w{B6=mPb7mmHB_8 zc1oGZwFuJFYKm*396eOAaR$^I2>u8;U9%Ld;4c43W5+~rnevO#X~GqD7GuTk_bRHj z@r60z8+vf;Y|||d_w>JHYiuaF!s9e{!e3aLz#hACt!D=S`SJaLg_I^+x^zEIDGrT* zunOET5_R#c^2&^}!8xbKTq8yV!71K^eO&RMI(3AQeY8|8r^a>D>6gIVL7UsqF_R}9 zD}PezNqW&FhWcLFpHz@NiYjlX`ge91+%1M};zwnod!_<%lOWB~dA?-l)>7&rHv<)W zew^@U@YwCKpF7gwD`u{WrS|;k&W0v8W6nZwQOmmh*swI&&kIVjLV7)qo4*n^FY$A3!1*8QHi7Xq{fAk;UQAZ5?3>JeBwr_ku_RYaU zHKY0l8Q%9~XV3B%dRZ;cKq_E<$}(=_Zt#8iY^$R=V`|vTEX9y>m^J&ZXmigAh+}4ino%seNm3t#=mc<%IxJDz@1(XgZNruJ9xJ2w@(G3iY5 zq|1^eIhpPXqUs64921Qi)D2YIO-MQT=k1NDb0Wysb;m2loVTM_)C7#<+RbRU(P!Lc zqk-mkSuP)G3n_vub_L|O=}XfU#?e;z9O-@RF#aQLvM=wX%+C>Rl~+goI|IYtz=|U2 zdcoxF|Lx=B%hfhk#PU+@6UL-wtWby4W2fGqdT26X$NV_v@SlY|mNoLcWJ;)gi>qLlVB z?+5%Oa?XF}I2m_my#$%GyiQ!5FRAN~n6IC(%?@E&)V0ZUX~@0$HqE5o@**>;Ey({{ zK%uhxuyvGw|3VkvZ>UN3Pg^aLo+47rOaAJ!EXowuBPwP|59FqS681V4axM1eR--w> ze)UrQD7a9xGnZKCWb(stTW$rICJ#^@x|u}4h&_k{UN$JoF5o{UruupCp??(l3cCe| zv-M|VU!rdG2N<&^p$#t-f`HJO{PNgj?qk4-HY{3vgS5kE{sz6M={r^wJ)$Rt?zpG5 z{LRwpz!`CGc$o%;4Xyh~=9M@1DBywvht;+qCt-}a^>s?w0S2YdPGt_r7d2-`>6X0E z1GB)ce_@aOnF_P!%Jcko#mx0#%Ts^mshc6UE}Rp>d0f#un#*I(HT{H#>B~?}o6u^F zs;hI-B#UiO0ObRhbrcOQ^|J58o}0)=rz|49=+OfXt=%x`y;Sc{=`$pEyDURA@!r9f zzu71JK_?1irVP}%uF(&Dkp>B1_fc+YH$E``L-YAX2#^PyC(Vinocpm$@70=gN{2R% z#jZ~nE9);4FfL{OWW1+oPvy$W;6M^5M;roXT)#YZliXj`uPn$uUexPv((3=FQ&uA3K+AzI^uJ0oQA*2+sjg_=MEbz$Mu)MSP z=MLO;*_zUOH&v^XfM`auhBOu`s%rx|nlF*>bdKw4l0w~6R_#P;KfCZxh?LJcK7De5 z`b{-1T+m&P^<&68!e zf-oQ~(KB_+lI@~DH~Q**-tC`+hRG%v&^meQq-L{PwtNrm?J|Aa*9WAmS1u2mn|% zTsx@f&ixKmYh?8D`0Ojv{u4wx?O-$9(nScJk9QF{dF?SE7!A5DPdT%b4Mo{oA=@;!z7C1{4Pinq@gF>egrS$l-h=eIjL`3aCD%%))3c5#{ z)7!X|!(-=@q$`omPVk?46zFu$n62!+5pt7AW%cgmwYoLW2ft60*D`ZSNtJTGW9F;O z=NV^DuD*2q%FZ?=_vLPoj^a67o@PS+b$Igl^`;9d4z6lU6YDEIzzuu`%1Pp5DmVey zBCw(+`zJCELhEBz%qTBfSnX#lRadsWSCXs$Jmdq$%hPCw@ID7?EE-%~l#((pAaJ{%zlr?nPJhKY?X35;?r~^Bh z^&#UUx7PSvv?-d(Gh5f(*$<|R_#t}dZHs6hA-p8pA^dr#9HU<<_H{I@?Zfe27!X;z zl&@K~EV_>s4K|JQ%;&KGDazsNnD>+)EC}48%3QqKM4JU_wnL8}{Bx<&y8%(qfet)q zRntztw|r$CrkHCBqrC;|I?<9QXOz}&2)*ekndO#$pUJXSYdC<5o^uY3g1Cm5ii_!F zny~V8N57bf?+}jJWm!K8z{84O;W1)^)}7*dnE6oII0`&tq#FzJHm^c_%ab;O2e4xL zcLh<;bs&uAvKyx9vjJUs&h)buDyJo_KXNFUUK_-3d>6c&t=~@LO&RtkJ6dIM(KRI| zhs@MSbX9T=n7ci>HP?2cEuC)>>Z`aYt;UHddV8PFZq~T}b}KXGz?%_HUL=9Hi00h0Mp^f}&|PU> z(uVJmu4_43CD0&c$9+%J9-?l2fMxi6L4(zf*N+|Eo%%HJGEhTji1%pFb$s1{QWOAw z;Z`apen^l#m&z>?r6w3G8Yw%F=a0mC>6Lwr+#JeV!Sk=Rd>NWcV}~!&ez5~9I7*O? zCRwgGH|DW1oX?>zz8iNh35Dw?9ydC?lZEaIo+qq+5-C5i7qWT+1^lvqAf10>}1e&R`YQv_Q=igfDh4f zbS-RWayTGwcyg^ipnfV;Hats&lY^e!Vr#5$ZjZt}Hr!;mC$P-l1bv@!d)2o@v|Jw# zons$Ry5qBIGOj+!J8SI~#Jh}WY__8l{=zSqgU7ZWcPEN+)q*VTK&cYujqSOifMM8+ z;Iz9MAojJgpvx)TtAdF>J?qB|mLFjWo&_9RXJr?AM=IK`_#;@6x&`GLzG}G|T*W7eX?b-D z?{MAD-f4VGJ1$&(Er!giaMJOdTxX5st!sj{vcOx|tabMr2$$wlYV?sAI2U>T*>Y8J z`IkLr8oEOw?X<1)%I<=J<@o}0CrL-zQ>mR1GjL#%&!ukW@ua5-E$CM0+?|ifJzrv& zr$I*rF%sZiS#YA5Ia!Wuo!oI=CMqgW6}N!+BnE8MB;CKzH!bonRt?nN`i7w07xv+{ z-M3iRe`AK`6~D94xX*fOl*zm-f|DI|*mbN*gYIucyrXrhYEN#}J$5WNCe#DcTu7@m z?<_`OwoBOC!KY5?(=@M3!1<6;f3a7j+u2~^vYW-|eb~4T%z@ayY`_()keri8B?eAK zm_+LbV`B3D(hm*zBP>b|Ed<_zsXDv8pZF-Ok?{m@_^6CO-L;e$`a&OKSvdVidV)2eHVIsO?T@1rg z_H+c?o*AX|)=6gH{W!PS(ixNOBr3K}RU43qpvrfy#W;1hAb5D%iPC1j5&Qr|?jmK} z$cYUdDC1Bon9GME+Q^7SCuPj>%%kJ#hZg!AC1q@~B*)pOABN905>pNy-h+kl{IX&% z1_KJqkI_Ul=UyR_cY1!S@wpux-=mA}BLPvFPyF{(&$!v^k0P-6oqS~SE>SNeg~#iV zt=4J0pO+Rt`W)PqP54JXZX~qjvi>QnlOs9i|`kmm-Y)144KF6 z_vTSIZg3dJ_m=60PLd6jPdH+Nd~>M!>p|AVwk(+(H^TWM_gkW3M1J;lvGOOkuhtA$ zI-`nY-|So+`A&Cpu=#2@i6*Xs$o|MIzQa>FUJRVh2#iXz^uKbG1?4EakIyX!PF;Uo z$&ou1T(-$W7FUk>GQ^GQr-B{pI`kB7eo5W)U_G`iSS+a&)YyKF6!Iv#wSDUG>gd}> zO)s>d@b35OFz^7!L4-v5p@rI2u+Ab+c>1Bofx)3HARtq8Tk-Qo&w#-3%!yVHJy4^~ ze3bON*ojULDWvS?es=!+*zG18q*^e}!qBdBn)9|P`!e!SU}f8VDf?UqinAmC+G0RE zh$$|LTFbB2=c5tc5GhBBGfj%r5{<5JTauW;u88L9-fhO}p|+n`wd(#QwtjbrW$6gM zr|*@5koL8Aah)mqrTntQpo;e0a%{kw*p69L!Cgm&rAld6Z7|^E(NVVtOw;h?R@BHj zFhSs@^OjPSZ)O(9726n26ReH>9-sA?l|#M_gu4T?uHR_b@|H&IHNFvXRfF0{4{3hR zRPr_;((<1L3l{BwiFc+?Ez=O=e8t7-HTOnJc($>lx80#1$4a5rkG(M$KkiCKhW_2RRp&bhu4~bqv{(iNCysqG6 zbCp?26>;wBa*V*tVp`4V*g?Z-|8py9y{3TN?Rp@5Kvp!>Z}V?l2QIOQJ6c6!gI8FO zR;geQX}$gkWc?|KJV(&lnRt-2DW`-hS7JXEC2$< z;M2M8I9nq#rz$*qk6b6@J54;&}Qv=q&i?62H$ z?&vmjsv#k*1=$MUC9GOL=OGSk(SWesofOt+TgNFqqaiLEB)n|sV@tleP}0B5xhKmk zu|Kk*l!$4s8$zeq`#ogfe=us16&%?+mYd$RN5M2Y ziG>CkuGdj|mWLDx!Xp*oN|**BjT$XBQyJ}nD0i*l`YmtW=g!I?M8W+5CgXLzBmmLH z)SX^*h56Q1@SBrEj`iHRO?%63LH20B7TTtp6b1X)aAL|$;e<=pfTGkoYb9aVsjijj z^C@Ca4wuC#;!8Aln-d2uztlF{HMFC;)|_~kL%%k(k+vx|9K)F%$W_|n!4B(jbXMJU ziiZ73=p?8`+!7})@4mxC#V%Fo?i>dRF?{F1Nw8v#9)rYW?$Gt*X_r?p+@WS(iFklrfxs+SoG<5vIqnUwo2K+k7`EWr|Ml>a|gLNkM>q=_|egI7aEK@ORUb2<`fPXyv;FVg+6JyNpr) zovidjxt@kA@8dRq(4&9toyS=ExaW%ZPIh{2ChaD-m@vt>SB+xyN6gzN)ec{pIs8ny zDvLDkx1m@s(-tp&71w?v#c_Th1nWd6exNBy&GY@r3V`dssHHJq<5gX@2(*1z#yGnV z$<083gAJ+dNPe)vPW01n>1V}9lc0|8EDdl*HjE$aO!JGgv@pXe`A#xNJPL5JMjQBf zm2WAWB{v?aixNA5%IkVYV~PG54WWg+uq%bp^QiiMO8!e;mrVD(;^Ou|tFc7)jMi;l znCr~ck#?`2V0J*{!sf?YnuS^DJC4aP|1YpCuN2z~F^JmE#Q4)uQB$j&h=2gA%j_<^ z-dYma72k+IZ%#EM?st`>LGsTlz_{M#fuDGyXkU3hy{O6U(4F;m*tie-`IgDShGcNEDrWqRWpA$t}8Nt z?!UlNNOSZI3^oZ5@|r<lU+)~5j(VXzln|;qwp6Tfmv#$YBqEXf9MR)-#^dPD) zJGfm2y$_krxF`IHntl+Ota_2ckB7k}&9U#0NKlG!tiU&ia}|YSX?DO=*X%Dh?4TLn z>FL_`r>*SOIV4A!IrY)%s^jTB)P`mLCSZ-yVoSY5uRG~|qZ|s=_GKDK2{TQf-R3*@ zs>c^#<*cvVUesLdWgtdTJjIIUR(9uz^q!5;0Dz=YHjY+ckDyJPwcZ@?0VGGWeiKlU zfe18|Y7b}a3Y06JNri$_J#ls|ilNEj_7TtMv0xF_SU(479XE2#SZ>Ug$PPET4C&*UBm_hx3= zGQp%w3*=qMO$~rI^2(Hi9;uA5ou!A}D0bdG&9oe;n5#wgzzdL7n)gP7RC*mZi!0r* zUy3|AW0kxEl?hyZb8Qz;$P6^(hP-kN;G+YTVz+U8Qhh8Mg_@-7`5>$(OQ)xIZqy5# ztZi(RD1`bX>5P)6>&1v$MNm10{b?Nnj))^yv#9Kww|zaV782 zXT~BgcAiX#GcirO2>|Z-vKNt6TKF)QTv8~CW5!)yTxOJt?_wGO2# zdBSs6nV^d&cL~Soo-awTVjpT+8%EnovQEQ)O!QV3gtqb#{unjSz0{B{13@BD@n!5eO+-c01{W4BGjtFuN>q#+r}=1RLR1rWI#rA6#b4 zzzA9TSIheXc?qI<$WYF=g0Aag*pY{50|NRglvUV;&!9`okP4<<8{~GCqk; z4dyz!EkYA*)F6=$IbCz1EBWy#F;#A+S%Y-XD4q-F(vU(BUcmm_<R|edS=-#W z?>2M6W6on6SxQ;sf=q%fxVte+qNE4U^BZw5Toh&SX+njS5a_$XuY58c&zvH^E;Fu# zx3=^3g`|*sbhwp|<1|1p@8!CiM^$()#_S>;R`~|)Lgv?WkS%6CMI|4T_Dpb33G%5n zHeN4o~2^>IGUfbPUO@@?12x$1YN{ zXb!o%J*82dC~h5!&&;bN8W|^c8C$KgulkbprBQ~T(mgqp!l3xBPM;*ML3Z)3`!}5=1$P~XxVjr3!$Jj<3*baq6mK4VP^Dl0;Lt56^$LW z5UrrY#)!S019iyz=Cc7wOC_dDkRLTa#TV2a^1Tb}0I|&ety7_>=Yntn%=o9gsHH*9 z;%wuDYishkI9_O{C~a8)p#SU2)MZWBZL*$$hNf_3dvZU=+SODu`}Vo-1j#%O?-QQp z!!k#evnI-w6)L^BMwfIk6lx4*6yYFWuSH=mnxZEt;%M03RML8>D5AtX&8)QT;FOSP zH~#U*ugt*wU6}k$=o*AAkh?2D1LJaM8ujw@?Gq%J{BeP85F^+EjJ5V^l_cnS2ell6 zYSUHHOZ3St`5x1gryZ69PHb_U=O0vKM1t;~>9u35nTU#E-z)|FetT$XMQIh`CeS?< z$bT2(h8LEKQgu@F5x*QI0Ou@uDKZvtx81RD-)s$va^Fgx*7HX$xI2uJT%@g0CxEO(9`wq?xph<9mZf-mA zz|Shn)b*_HK3yQwy!o!vs;kZ!WqNk=2(;hA)-QQdavOyMtu$CEh++;`52x%2G0Nx# z(Pxyh6ry!h4b=@`@2q}9L=D$+|CJUe#Hz(Oa1zzDqU!!z-B1;Ue?{Qf&L)OKT-Bw# zNu{d@gdr)hTt+(sZLgJDpTiEHFFTdUr!{u*p3y;JSw^(&9uN_;?@?^M zzygOh<^hX5Z5=1`S!g0tL7$iwHFsUBm#tKwV&$u_+{{Qj1Mya{=F=Ovzb*?0q@Zwn z55vKi$$Q?zROQDBobR+XI(0huKE3BM1ONOM59Ii?k|nee7e4VC)Q4a<(;3}*;xD)1 zMf1BUc21!FRFr1N{AAra(@Qs+ZNDR31Bna1x$!1_-zP0~kNaG{zBN!E2)ccK5888! z%;V5+z}4e7IYOfBN(XA|O(v!89qOt2vL53)$i8=Aj|4G}ZDuO+bsv4Gl-)GFyndkq z9X`+=Zk}m^*uOu_Z1Dm$-U!rXE-dzR*UMxkjb4q%xOpe7jbpeC?F$&~8jxF;_!j(0 z39lc#gAlfY4Mg#XP4Q~l!bPb^Ft(p?dLw+A##WE2z6EU8aHi(y)6_$j-3X$2EZNkRkGDHeGuc^D#Vwjl`jbEaFbSGdUq-^( zEAyolttF}@zPaYao02HCjk0vpYhLTZ>c@$zrzU|fxMvytMXqx~ZhGe*Bfa&hcp;c~ zfAFZe1MB3CTC(lXHRdXia1$+ZZAU2Q91RXN{j;63*48x3ax{$nyG|}&-HLd_k6*_n zGQ6k_J5CtdlPC_-Ph>NDt}U}L$YVybm!CLTx(ReaOIPMgp!}?8f$xn=5AVTe7<>KH z3|kxTikh3;fbauxYg|Zbq*})^`hYo;>7Yl=w^#4&f|BB0xUuA8F+w(<6NJpY|BMbt z|GHMunHXs@7xa4z(30iddWjC zu}?wPc7LKS{-*d@@0!1dsYzHpWLVOwZx)+B;E9>GQ zb^@*X*FP^`NQJVr@qJFp)ee-K7(s`FFkj<4gb?`_t@8@~vNj;Dum->4U06z*+>?|1 znP+5KJsyF@#HD3S;r$gf;sE&8qux=S23=|zR8Lo^}atrb+L?j zoTP0zI@BXkJVbX^DyF-{lUc?5BW&9>L9V7zTb6+<_ot(3Z&u)^Hcgfmq|4}s{U7e` zOJavtmo)p+1hM0ioI;$UA3t*psLwCeMSpFzqdTw|tueBMn6#Brz$=2=FlUa$Q=efOeUDnRjy*wkPy;|~9bzVTTXkjy@xpRniUu0-@nT&40YnC73c#;d9&ZY+z z{IiNUyKO2TR4K-RYxr3~2fq=)R{N2_Y-uLch}eDh=Ma4(Er}>ETN_TsDqha>_~adk zt;jY$W$3|zlf9~?rM-aG;{0@TRb#vTCxKt#!oHNTV=T5AA&8Np7mr?=w4YkIKoc1{ zyKhL%EF9}=4+zppMl8EkDeSbZ1frPNK1$PW#zq0*(3FuKGA-boNTy}>0*wS8rdPgr zRZ4TJ!6|ldm_}zI^9Sytm)o5Tzeo2SImOt+hS2N^2hQ#?6gW1qQEfLdy6;w=0*T*Y zh0js$@5g+Xc1pBr$^FxWpCBFF_D17XaJ8)oGp6)6Pdo){LT0qy%q~uihu=7lu}Yao z%~MpD=qyog_Xo!fg3eVah-+!-_vNeI*@E?-@IKthV-Fk-QKMX`C!b1RgeWqtG6>f@ zo!&UTk9xzZN`a42vMw=-dmQr~wD*$Fwj)ZEMpQoizz9ao6F!TMX|yPB#vtO;6vhvdH#nee$d6n|eF;r|)HA)6b+ZVEtdC z#r7R(9gS>EU$o+n%;H=`87WnT<9fWF<5luRI|~y0-T0VYXgzWiJiw|DlnH31D50{m zeQXME3=W4jajl@vW`BtZrbbuD)An!R<#l0GN55t@u^%SkG@ zsZvUsc8weJb>Yje{w6Ud0#2whO#)EzO{k|9MH8r;fS~*sYYI+s(X)%d*#UI@R&O(; zf71lcbFP#sC{~&|1AU5LX%hSJK`|~_i#5uOU&2Fj|Lt^>=4bd_@IBZ2g$p(5xQP>v zy#lE?RcT6w)C+l;EDK(>T>e*~-Ny`V-@X$NHWPhOjcMW&QGVQ`D>LP4VJPgIG{GBW ze(Li!Y5|8UPWAodTkmO!Y~Bg90*iw`ZFS{LY{Z-{brP{@bZZE~;=-K~Tfb?E+_VQg zT=iO-2~!HI8fuGYbzC_|sRW%%KZBKHZlF@YF28Ba4e?JTt@p|ej&sA69g7(hHE6aD z1Kw-WO<)f|tG+Wst3DWYg3+{r!9;MGxCCO1B0zN>@l@ds{Et z|9(1a!o6eOye>uKWxA9VE`HIO(>wf9Z!bQ4Q(#tCcdeHfBR&(%i2$F4E{QgJGNH|7 z(}<(|Tl3x}+vj|Wxf-Q!ODI_)Aoc=w)32C3EFYMFZ;dOHO z?Ze$qfvstgBxg>d_TNO_$O`d)_>N2Ud9zQ0xrW#(`~XhHTZ7j`R^zGW?lllc%<-sgIma`gXzcj-v)vL!k;LM74m1s9S`#^8U%V6^WjDaTr6`D zEnl?5%q(~^xxOMT5M}CM)VW*9-6>T1XIvgx=?EZ2Kt743nv6^ZhXMcaOp2781qge)B8 z$71Y`rf^d8&tiP@ewNFNf%VP>F0VE`n7p;{A!pH#KiZ)ZDc>C*Z=M@G!gEN1>F+Ya zBQf+HX$BfoBd^X+MFr4u9x&gedVcp&RTOIlB>^w8r#8Wa24Sr@mG+yjYn~X4o+31V znKLy9+l60EkJChZ7AMt7%yls|sRkM>sFyzCL-}RADPd zQyK}Ly7$b}ObtoW3{|t0=yRtvH}L~KGJO{>3R0C9NSLT?LZi|| zl(+VX6*9Q9UuB=F5ogm%zg*8DNay6*$7_a39#8xnYO1VE5#57ni2{>bRK4Rr*8F~? z_Yo0Po*b-7oBGWp^JVHgBh$L|yqSE@QC{-Hk0nAv#+1|~>8RQ^?b*|TkQts~7K^bm z)|~1(I}3elIen^N9|J~Y_LPp);Trnx-Xi0vBX<8 zAMFS1>lfsQWs+r=C-cu7^;#nk2NpVgG3`U1PMZz;9EL`K$_P=27S7B7MSF1Bkuwc%F0!RCU2^iYp_-oBVFmhHR1~9PKEuIt zh+Gd8U+Pw9dmJCb9B!<~aqU%t%`y>UYA)h6FSMzmN=oSSt@Dg2SW^yht0`p%USh|+ z$vbjx&qyhBh$D>2|IW+Iqq0CfKKy5CaYM)PaZoFx(A>?||y*Cwqd^a;qZM9jMLwOi*owcY@0oTl*O4)3g8 z9%5{FOEzz>?7^^ROJ&Buvx&S-g`yQb*)4!4R1xR6K>L39ivIx-ya|JT0?M9v<>icE z=(>ik2$w6b2bF5Es=Q7pVA&q1(&5Q28J2rBgVpxKTDd4$tK7~_;)hid9K{UnUKZ{< z(JuPr_!s{nUW;Ubd45(GvQ(#y#@{X1aY^+eW!8-EJ}yP2Y^-vxZLs{}{HRjF+%Q0? z;3^>F?xmHt=OgCOv-oZmFd@asSv>CEUUNq8`q4M*9#ox?0SvfzZFvS@G2_T}m^L|U z10%{wca*r(ZEvZ8R}1UBx$1VFvyAc5=~8=;*fJBLQn%fZxy_O`?0+hhMrh{_7M z$g#kk|Xw5C7nmk>Z7Bt=Z$df4)s62!5N_&PWj#<0{Twh11JlUJK`|${N37%HW?C@ zKp7rS%T`;#~*){5xgG~9bn?q?)nc<+C(;1SS% zuzkx`Z^>|?1U{8NpFTKYg66aAg}Y(;2QER}ZXI*xe!HHCPTXRXKDvsZcyQBUz)}S! zCpXi&HkCEM3@HkYmQ*?Kyw=#Hj;cY{?@A?op}dSA`Dpz?aA#_>KhJP`3fVV6Dqyq* zAlS%}aEIoupfbTGMz=ah45!f?!_0pAf$nPpVve*ii_0ezVA}0<;KeeyPcB&FMmloy z;o;Kj&3fZ4%t(G~j;Y4mk=$@1se-YPLB-ts(;uvua87CYp&=aXImO8IPGFi+pk-`X z?oxiO;uQQxHdNQ|Xy_+I|1pZC(%`(!7ku^UY8!tMPt?zL2Lys25D@8dw7A`-5Dm9j zucurwsvX;FKWGh4_G_?uyG{072{{C;W!M@l&E2fVLF$jZr7~t}j$#W^SHNHABjR2R zV@wpqG#QD8Q#I6Uu)w}MFjzPbE<2|V6F5mxeohS)Dy!+06vi`4>EUqM2+*>T3Ol7BBM91w)4$7pd@)Tsk#!A_C zTY~ox&!YG6;ya&CZhlX%M(tl%>t?f^YF&vJE&|A?A?sLAVq2C4lWdl&K=D})T80=0 z=}*xZ$;=-<7#d$}bruR!Gdzc7GxNM@!NqhB6TKZ)Y0*9L=Ds-=9vr7W2%x>${+{S5 zmT(82@!plSj~xF99A9?d6l29n2-byw|9DD6PkuY*dlUlV=gu8ztFaAsqthTYeDw5F zcnOod`oI>s*5ETpFV;Q`b%CEfcB0>!(4Se5z4@li)0(ba;aL8mb6=5N?!oqaY?F2P zu5x?QMu@=RXUAop`i-O&AV#fM=EJOpuHvU>)$?|H9)puqsc$k%CXbumEdmkfFTUmd zj$@zHY&1#3tlAE-=sX&vxfEfI*}ENm=^bVs04l$_4A8_)tTx_KBUu1Zd)(+1`&L_A^7gNRr2=I8|VF! zZc->cp7wTNk{?g{2lm2oWK+q7d#{>yj(LTC)dg2cZn`bjmh^`-gZHVEhBNIA?{19F zLpOB?nF{~h`aHj%7@a^%zc%q$cqd0Jox)IvQ;5cg`pQR%pQc)<{jPLHl`r;o?Oo!l zewPon815}?)>XnEr)PQN?5c;YLC-DD`a3p@K31Lm*yU;jhg8|WPYX%6^vxT4J9;UN zBftD<_<_(cka(!3WZaLz-@roiaQy8fF&n%0YH5ykwjls;UE=x9QoQA5)in!Tn_n~q z7h~pK_n1`5l$uR-*9RT*`ELC*E}y;$qCM08l+t(?^Yg=>gT?YO<`2b~tgx&1*{cwB z;b}5jv1tAMs~dl{kfAc|^b7^pg82f)77^8iDY```Ss(Egv->>t47-BFa#(q)HbkpE zq&3~;x8C{>h6)VL+5>V(5xYXBZLNaKya;I`t-f4{cwhVM4t({H*z2?xBo zo~#;M&F|4haA9_hPIKMz`iRukciVFpeFk7zFY(K^qRfw0?PyS&hAGaAs5c|~?&fSW zsnIG~vsx$O4=hmGG(*4odJmm1U`Tq0PfzP=rY#q;wFA-A|FQHivn~f4dx$;vPs<^> z3Vi!0)0|}%EVdUtN|mQAR5lymzDzbe z7oMQD9A(4yi=n6mYBg4cL=w0<@Eo?RYpv}DbVnjz?OKC817KkIu+brjWT2-+VB3gq zVUcgWhr-AKTzm3pah+3)VWyd_!p2}X0+PvW9&$1N9zkbI^aUHW`?^{Xd)SLP=V#T! z?&p-@xH?fE0^*%PwKmwfdM35c-aL(?4V!3cik}R?$6$WSRV)BuS;-c}^&~xsXtuYi zn^KvvSLV5A0-ij~?}%$gda_oWeKetk&0#PlTX~;B)yUMs3oppUvD1y1dzvAb_K%6- zG*z+!Mi?`Tx(202#X;a1&VJxY8^h3=r0>G1n= zRXbvGS+9g(A_=o~ab(UaGsex#0>j11cf`2fK5A#e-g&NeOUw0DDhq{-zJh84S$}Nj zE%bxUt!nZ3uw5Y~hiZCDSe5=q<6v-$raV~Ge9wRNjArR!C$VaS*>3}`fK& zWInE1dc|5mXeE;{rWkNHlP`P>ZTmhrcSSRV9sft=eDH2g%FzR?C^R{V4O;-5UT2JN zQKbml=>k=2gY1as+!rQgg=8I~glidgLwH%YLPV0$ggr@ZCk}!H5#seXIv=1$7|Wq* zdgRH&pWm^oXn}+<}IM zXzXE$KcjlCnuRF2WE~$#xHKc&K;6drQYKQa3Ojog%iqQ|M7DM5`nHgrvOo zUUItaw#xl1RcuwKo*I+ISh(;{?u@ujWOf(Jrn_eku$yghy}LdLvKLu=0^!!DuGF{E z)^t@nRQd*wVZKo2dF7zU(I^KqXeb}QGOJemF26Cug@mX#1bPyO$B*w4mJ%FixM!cp4Q(T zj%vm|tk++qq5CG(OyUr5R%#LrD>z==oG%eCyiEL{f#KB_ZKqI?G2B{xn1C8~wcxlf zeB$>YUMXV0sGVn*FrrY2LAB(zza_@>=ysQE%i6MdBEJ-613C1ClG!pgd=X0xzyFaL ziXD?G_!~C7R-L!r>82)TUZ=_BfS!ie@kIY&%e2wJvwIn*BHQ)$ArtIpp}CmD-a_wT zyft!MpzFgZsx9Vg10RtC=vFqlj?Yg-o!!&OspxuiIG8xtvC=6Q@dz)^JMa1|Pl0oyz zQ&Uu{Vp(`|pM;EDD=dDO5&M6tEx}7I>w2|{gI;G~99E_JM-!vL(bSV^DcLTS@oWcw z%g(p(WGu;Q5?mc9BWG?c3(wjtgIEtZR{QLFow_w_iY!zdw#2@J8;SwM925Nb=r+Yr zRyJaWak0%E%v{}E%#H1Fkynl;Hn`lhoV5R(fj|yPM|TG|T5ehn1#2@`T3tTm$Y)w^ zz&|H_S`IaDCv#ekkH(hfuA-v03HDCKO@M4iyy$xjgi&8b9E#_;GRzZ~^|-!7aec|F;eSPC>rE{6$8J zi}Pk#1P=KCuKoZLLTJb%R*N#hgv`~Gqv4gA{=E^dI}-#WMic>liV zoB)2LCx68hz%Tf3aRCVM{F{9M0e+speFF$`0{)5>7Z1PS-_H;ij{qm%zs(Z>aQ!xGv(wJMb5C`GT}1i;^Hyq w=jB9(oQsQ>8^Fn9#%(HS!DYcC`p=4Xbu)Hx`;WEz&jRD)#ARTRR*}K|KefD&8UO$Q literal 0 HcmV?d00001 diff --git a/docs/Modbus_RTU报文 b/docs/Modbus_RTU报文 new file mode 100644 index 0000000..dc2782c --- /dev/null +++ b/docs/Modbus_RTU报文 @@ -0,0 +1,209 @@ +# Modbus RTU 报文说明 + +本文档描述 STM32 通过 RS485 接口轮询 Noris AMS 模块的 Modbus RTU 通信协议, +以及报警数据如何通过 RF433 无线上报。 + +--- + +## 1. Modbus RTU 请求帧 (MCU → Noris AMS) + +```text +01 03 04 88 00 01 C5 D3 +-- -- -- -- -- -- -- -- + | | | | | | | | + | | | | | | | +-- CRC16 低字节 + | | | | | | +------ CRC16 高字节 + | | | | | +---------- 读取数量 = 1 个寄存器 (00 01) + | | | +------------------ 寄存器起始地址 = 0x0488 = 1160 (Noris 41161) + | | +---------------------- 功能码 = 0x03 (Read Holding Registers) + | +-------------------------- 从站地址 = 1 + +------------------------------ 固定从站地址 +``` + +- 帧长度: 8 字节 +- 发送间隔: 1000ms (MODBUS_RTU_POLL_INTERVAL) +- 发送方式: HAL_UART_Transmit() 阻塞发送, @19200bps 约 4.2ms + +--- + +## 2. Modbus RTU 正常响应帧 (Noris AMS → MCU) + +```text +01 03 02 00 F0 B8 47 +-- -- -- -- -- -- -- + | | | | | | | + | | | | | | +-- CRC16 高字节 + | | | | | +------ CRC16 低字节 + | | | | +---------- 寄存器值低字节 = 0xF0 + | | | +-------------- 寄存器值高字节 = 0x00 (大端序) + | | +------------------ 数据字节数 = 2 (1个寄存器 × 2字节) + | +---------------------- 功能码 = 0x03 (正常响应) + +-------------------------- 从站地址 = 1 +``` + +- 帧长度: 7 字节 +- 寄存器值: 0x00F0 (大端序) + +--- + +## 3. 寄存器值 → 报警位映射 + +寄存器 41161 值为 0x00F0 时的位分布: + +```text +Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 + ↑ ↑ ↑ ↑ + │ │ │ └─ Bit4: 火灾综合报警 (Fire) + │ │ └──── Bit5: 水密门综合报警 (Door) + │ └─────── Bit6: 舱底水综合报警 (Bilge) + └────────── Bit7: 气体检测综合报警 (Gas) +``` + +提取宏定义 (modbus_rtu_master.h): +```c +NORIS_FIRE_ALARM(reg) = (reg >> 4) & 1 // Bit4 → 报警字节 Bit0 +NORIS_DOOR_ALARM(reg) = (reg >> 5) & 1 // Bit5 → 报警字节 Bit1 +NORIS_BILGE_ALARM(reg) = (reg >> 6) & 1 // Bit6 → 报警字节 Bit2 +NORIS_GAS_ALARM(reg) = (reg >> 7) & 1 // Bit7 → 报警字节 Bit3 +``` + +映射后的紧凑报警字节 (0x00F0 → 0x0F): + +```text +Bit: 7 6 5 4 3 2 1 0 + 0 0 0 0 1 1 1 1 + ↑ ↑ ↑ ↑ + │ │ │ └─ Bit0: 火灾报警 + │ │ └──── Bit1: 水密门报警 + │ └─────── Bit2: 舱底水报警 + └────────── Bit3: 气体检测报警 +``` + +--- + +## 4. 报警状态变化上报 (主动上报, Type 0x10) + +当 Modbus RTU 报警状态发生变化时,立即发送此包。 +格式与原 DI 变化通知完全一致,上位机代码无需修改。 + +```text +AA 10 03 ID XX SUM +-- -- -- -- -- --- + | | | | | | + | | | | | +-- 校验和 + | | | | +------ 报警状态字节 (见第3节报警字节定义) + | | | +---------- 本机设备 ID + | | +-------------- 长度固定为 0x03 (ID + 1字节状态 + SUM) + | +------------------ 类型标识:0x10 (I/O Data) + +---------------------- 固定起始符 +``` + +示例 (设备ID=105, 报警=0x0F): +```text +AA 10 03 69 0F [SUM] +``` + +触发条件: Modbus RTU 轮询到报警状态变化,且非首次轮询结果。 + +--- + +## 5. 系统心跳包 (30秒/次, Type 0xAA) + +```text +AA AA 09 ID [SEQ_H] [SEQ_L] [FW_H] [FW_L] [RTU] [TCP_H] [TCP_L] SUM +-- -- -- -- --------------- ------------- ---- --------------- --- + | | | | | | | | | + | | | | | | | | +-- 校验和 + | | | | | | | +------------- Modbus TCP 寄存器值 + | | | | | | +------------------------ Modbus RTU 报警状态 + | | | | | | Bit0:火灾 Bit1:水密门 + | | | | | | Bit2:舱底水 Bit3:气体检测 + | | | | | +------------------------------------ 固件版本编码 + | | | | +--------------------------------------------------- 序列号 (0-65535) + | | | +------------------------------------------------------------- 本机设备 ID + | | +----------------------------------------------------------------- LEN = 9 + | +--------------------------------------------------------------------- 类型 0xAA + +------------------------------------------------------------------------- 固定起始符 +``` + +Payload 字段说明: + +| 偏移 | 字段 | 长度 | 说明 | +|------|----------|------|------| +| 0-1 | SEQ | 2 | 序列号 (16-bit 大端, 0-65535 循环自增) | +| 2-3 | FW | 2 | 固件版本编码 (MAKE_XTELL_CODE 宏) | +| 4 | RTU | 1 | Modbus RTU 报警状态字节 (原 DI 状态位,现替换为报警位) | +| 5-6 | TCP | 2 | Modbus TCP 最后寄存器值 (0xFFFF 表示无效) | + +--- + +## 6. Modbus RTU 异常响应帧 (参考) + +如果从站返回异常: + +```text +01 83 02 C0 F1 +-- -- -- -- -- + | | | | | + | | | | +-- CRC16 校验 + | | | +------ 异常码 = 02 (非法寄存器地址) + | | +---------- 功能码 + 0x80 (异常标志, 0x03 → 0x83) + | +-------------- 从站地址 + +------------------ +``` + +处理: 异常响应 FC ≠ 0x03,被 parse_modbus_response() 中 +mb_rx_buf[1] != 0x03 判断拦截,静默丢弃。 + +--- + +## 7. 状态机与轮询时序 + +### 7.1 状态机 + +```text +IDLE ──[1000ms到]──> WAIT_POLL ──[立即发送]──> WAIT_RESPONSE + ↑ │ + │ ┌─────────────┤ + │ │ │ + │ [帧接收完成] [超时500ms] + │ │ │ + └──────────── PROCESS ←─────────┘ │ + │ │ + │ (解析+更新报警) │ + └────────────────────────────────┘ +``` + +### 7.2 轮询时序示例 + +```text +时间 0ms 1000ms 2000ms 3000ms + │ │ │ │ +T0 ├─TX(8B,4ms) + ├─RX(7B,4ms) + ├─解析 + │ +T1 ├─TX + ├─RX + ├─解析 + │ +T2 ├─TX + ├─超时500ms + ├─回IDLE + │ +T3 ├─TX + ├─RX + ├─解析 +``` + +每秒一个完整轮询周期: 发送(~4ms) + 等响应(~10ms) + 解析(<1ms) ≈ 15ms,其余 985ms 空闲。 + +### 7.3 关键超时参数 + +| 参数 | 值 | 说明 | +|------|------|------| +| MODBUS_RTU_POLL_INTERVAL | 1000ms | 轮询间隔 | +| MODBUS_RTU_RESP_TIMEOUT | 500ms | 响应超时 | +| MODBUS_RTU_INTER_CHAR_TIMEOUT | 10ms | 帧内字符间隔超时 | +| MODBUS_RTU_TX_ECHO_MARGIN | 10ms | 发送回波屏蔽时间 | diff --git a/docs/报文.md b/docs/报文.md index 531e9df..fb779d4 100644 --- a/docs/报文.md +++ b/docs/报文.md @@ -22,18 +22,19 @@ AA TYPE LEN ID [PAYLOAD] SUM ## 2. 详细指令集定义 -### 2.1 I/O 状态变化上报 (主动上报) -当板载 4 路数字输入 (DI) 电平发生变化时,立即发送此包。 +### 2.1 报警状态变化上报 (主动上报) +当 Modbus RTU 轮询到的报警状态发生变化时,立即发送此包。 +格式与原 DI 变化通知完全一致,上位机代码无需修改。 ```text AA 10 03 ID XX SUM -- -- -- -- -- --- | | | | | | | | | | | +-- 校验和 - | | | | +------ I/O 状态位 (Bit0:DI1, Bit1:DI2, Bit2:DI3, Bit3:DI4) + | | | | +------ 报警状态字节 (Bit0:火灾, Bit1:水密门, Bit2:舱底水, Bit3:气体检测) | | | +---------- 本机设备 ID | | +-------------- 长度固定为 0x03 (ID + 1字节状态 + SUM) - | +------------------ 类型标识:0x10 (I/O Data) + | +------------------ 类型标识:0x10 (Alarm Data) +---------------------- 固定起始符 ``` @@ -68,41 +69,43 @@ AA 55 LEN ID [DATA] SUM ``` ### 2.4 系统心跳包 (30秒/次) -系统定时上报当前存活状态,包含当前的 I/O 状态、防丢包序列号、固件版本及 Modbus 寄存器值。 +系统定时上报当前存活状态,包含报警状态、防丢包序列号、固件版本及 Modbus TCP 寄存器值。 -#### 2.4.1 标准心跳包 (8字节Payload) +#### 2.4.1 标准心跳包 (7字节Payload) ```text -AA AA 09 [DEVICE_ID] [SEQ_H] [SEQ_L] [FW_H] [FW_L] [IO_STATUS] [MODBUS_H] [MODBUS_L] SUM --- -- -- ----------- --------------- ------------- ----------- --------------------- --- - | | | | | | | | | - | | | | | | | | +-- 1字节 校验和 - | | | | | | | +-------------------- 2字节 Modbus 寄存器值 - | | | | | | +------------------------------------- 1字节 I/O 状态 - | | | | | | Bit7: W5500 网线连接状态 - | | | | | | Bit3-Bit0: 4路 DI 状态 - | | | | | +--------------------------------------------------- 2字节序列号 - | | | | +------------------------------------------------------------------ 2字节固件版本编码 - | | | +----------------------------------------------------------------------------------- 1字节本机设备 ID - | | +--------------------------------------------------------------------------------------------- 长度 0x09,后续的总字节数 - | +------------------------------------------------------------------------------------------------- 类型 0xAA - +----------------------------------------------------------------------------------------------------- 固定起始符 +AA AA 09 ID [SEQ_H] [SEQ_L] [FW_H] [FW_L] [RTU] [TCP_H] [TCP_L] SUM +-- -- -- -- --------------- ------------- ----- --------------- --- + | | | | | | | | | + | | | | | | | | +-- 校验和 + | | | | | | | +-------------- Modbus TCP 寄存器值 + | | | | | | +--------------------------- Modbus RTU 报警状态 + | | | | | | Bit0:火灾 Bit1:水密门 + | | | | | | Bit2:舱底水 Bit3:气体检测 + | | | | | +---------------------------------------- 2字节固件版本编码 + | | | | +------------------------------------------------------- 2字节序列号 (0-65535) + | | | +------------------------------------------------------------------ 1字节本机设备 ID + | | +----------------------------------------------------------------------- LEN = 0x09 (9) + | +--------------------------------------------------------------------------- 类型 0xAA + +------------------------------------------------------------------------------- 固定起始符 ``` **Payload 字段说明:** -| 字段 | 长度 | 说明 | -|------|------|------| -| SEQ_H, SEQ_L | 2 | 2字节序列号 (0-65535, 循环自增) | -| FW_H, FW_L | 2 | 2字节固件版本编码 (MAKE_XTELL_CODE 宏定义) | -| DEVICE_ID | 1 | 本机设备 ID (MY_DEVICE_ID) | -| IO_STATUS | 1 | 1字节 I/O 状态 | -| MODBUS_H, MODBUS_L | 2 | 2字节 Modbus 寄存器值 (最新读取值) | +| 偏移 | 字段 | 长度 | 说明 | +|------|------|------|------| +| 0-1 | SEQ | 2 | 2字节序列号 (0-65535, 循环自增) | +| 2-3 | FW | 2 | 2字节固件版本编码 (MAKE_XTELL_CODE 宏定义) | +| 4 | RTU | 1 | Modbus RTU 报警状态 (Bit0:火灾, Bit1:水密门, Bit2:舱底水, Bit3:气体检测) | +| 5-6 | TCP | 2 | Modbus TCP 寄存器值 (0xFFFF 表示无效) | --- -## 3. 示例说明 (假设 Device ID = 0x01) +## 3. 示例说明 (假设 Device ID = 0x69 = 105) -* **心跳包示例**:`AA AA 08 01 00 05 06 41 01 0F 01 2C 5A` - * 表示:ID为1的设备,序列号5,固件版本 0x0641 (2026年5月10日第1次编译),本机ID=1,I/O全高,Modbus=0x012C (300)(8字节payload) -* **485透传示例**:`AA 48 05 01 41 42 43 44 4D` - * 表示:ID为1的设备,转发了 485 数据 "ABCD" (长度 4+1=5)。 +* **报警变化通知示例**:`AA 10 03 69 0F [SUM]` + * 表示:ID为105的设备,报警状态 = 0x0F (火灾+水密门+舱底水+气体检测 全部激活) +* **心跳包示例**:`AA AA 09 69 00 05 06 41 0F 01 2C [SUM]` + * 表示:ID=105,序列号5,固件版本 0x0641 (2026年5月10日第1次编译), + * RTU报警=0x0F(全报警),Modbus TCP=0x012C(300)(7字节payload) +* **485透传示例**:`AA 48 05 69 41 42 43 44 4D` + * 表示:ID为105的设备,转发了 485 数据 "ABCD" (长度 4+1=5)。