diff --git a/Drivers/BSP/160160D/160160D.C b/Drivers/BSP/160160D/160160D.C index 637d240..39487b1 100644 --- a/Drivers/BSP/160160D/160160D.C +++ b/Drivers/BSP/160160D/160160D.C @@ -10,6 +10,7 @@ * 显示屏: 160x160像素 * 段地址: SEG112~SEG271 * 外部MPU晶振: 20MHz + * 切记不要在中断中操作屏幕,不然会打断屏幕的时许造成不可预测的问题!!!!!!!!!!!!!!! ******************************************************************************/ #include "160160D.h" @@ -1144,10 +1145,14 @@ void Fault_Disp(void) /** - * @brief 显示按键运行状态指示 + * @brief 显示按键运行状态指示,屏幕的左上方显示3个点 * @param Flag 状态标志:非0=显示运行指示,0=清除指示 * @note 在屏幕左上角(坐标0,0)显示按键运行状态 * 显示3个像素点表示运行状态 + * * + * * + * + * * * @retval 无 */ void KeyRun_Disp(uint32_t Flag) @@ -1171,9 +1176,16 @@ void KeyRun_Disp(uint32_t Flag) /** * @brief 全屏显示图像数据 * @param ptr 图像数据指针(160x160像素,每像素2位,共3200字节) - * @note 将图像数据按4K色模式(2位/像素)写入整个屏幕 - * 图像数据格式:每字节包含4个像素点(bit7-6, bit5-4, bit3-2, bit1-0) - * 每行160像素 = 40字节,共160行 + * @note 将图像数据按4K色模式 写入整个屏幕 + * 图像数据格式:每字节包含8个像素点 + * 写入数据:| D7 D6 D5 D4 | D3 D2 D1 D0 | + * └ 第一个像素 ┘ └ 第二个像素 ┘ + * 写入数据:| D7 D6 D5 D4 | D3 D2 D1 D0 | + * └ 第三个像素 ┘ └ 第四个像素 ┘ + * 写入数据:| D7 D6 D5 D4 | D3 D2 D1 D0 | + * └ 第五个像素 ┘ └ 第六个像素 ┘ + * 写入数据:| D7 D6 D5 D4 | D3 D2 D1 D0 | + * └ 第七个像素 ┘ └ 第八个像素 ┘ * @retval 无 */ void ScreenPrintf(uint8_t* ptr) @@ -1184,17 +1196,17 @@ void ScreenPrintf(uint8_t* ptr) SetAddress(0, 0); /* 设置起始地址为屏幕左上角 */ - /* 循环显示160行 */ + /* 循环显示 160 行 */ for(i = 0; i < 160; i++) { - /* 每行20个字节(每字节4个像素点,共80个像素点,但实际显示需要更多) */ + /* 每行20个字节(每字节 8 个像素点,共 160 个像素点) */ for(j = 0; j < 20; j++) { - /* 将每字节的4个2位像素值转换为显示数据 */ - WriteData(disp_point[(ptr[i*20 + j] >> 6) & 0x03]); /* bit7-6 */ - WriteData(disp_point[(ptr[i*20 + j] >> 4) & 0x03]); /* bit5-4 */ - WriteData(disp_point[(ptr[i*20 + j] >> 2) & 0x03]); /* bit3-2 */ - WriteData(disp_point[(ptr[i*20 + j] >> 0) & 0x03]); /* bit1-0 */ + /* 将每字节的 4 个 2 位像素值转换为显示数据 */ + WriteData(disp_point[(ptr[i*20 + j] >> 6) & 0x03]); /* bit0-1 */ + WriteData(disp_point[(ptr[i*20 + j] >> 4) & 0x03]); /* bit2-3 */ + WriteData(disp_point[(ptr[i*20 + j] >> 2) & 0x03]); /* bit4-5 */ + WriteData(disp_point[(ptr[i*20 + j] >> 0) & 0x03]); /* bit6-7 */ } WriteData(0x00); /* 补全每行末尾的数据,使总点数能被3整除 */ } diff --git a/Drivers/BSP/KEY/key.c b/Drivers/BSP/KEY/key.c index befb7c9..3631218 100644 --- a/Drivers/BSP/KEY/key.c +++ b/Drivers/BSP/KEY/key.c @@ -14,7 +14,6 @@ ******************************************************************************/ #include "key.h" -#include "160160D.h" /* ============================================================================ * 按键配置结构体定义 @@ -43,8 +42,7 @@ typedef struct { * | KEY_LEFT | GPIOD | PD13 | KEY_LEFT | 左键 | * | KEY_RIGHT | GPIOD | PD8 | KEY_RIGHT | 右键 | * | KEY_ESC | GPIOB | PB15 | KEY_ESC | 取消键 | - * | KEY_ADD | GPIOB | PB3 | KEY_ADD | 加键(需禁用 JTAG) | - * | KEY_RESET | GPIOD | PD15 | KEY_RESET | 复位键 | + * | KEY_RESET | GPIOB | PB3 | KEY_ADD | 加键(需禁用 JTAG) | * @note PB3 引脚默认被 JTAG 占用,需要禁用 JTAG 才能作为普通 GPIO 使用 */ static const KeyConfig_t key_configs[] = { @@ -54,8 +52,7 @@ static const KeyConfig_t key_configs[] = { {GPIO_PIN_13, GPIOD, KEY_LEFT}, /**< 左键:PD13 */ {GPIO_PIN_8, GPIOD, KEY_RIGHT}, /**< 右键:PD8 */ {GPIO_PIN_15, GPIOB, KEY_ESC}, /**< 取消键:PB15 */ - {GPIO_PIN_3, GPIOB, KEY_ADD}, /**< 加键:PB3(需禁用 JTAG) */ - {GPIO_PIN_15, GPIOD, KEY_RESET}, /**< 复位键:PD15 */ + {GPIO_PIN_3, GPIOB, KEY_RESET}, /**< 加键:PB3(需禁用 JTAG) */ }; #define KEY_COUNT (sizeof(key_configs) / sizeof(key_configs[0])) /**< 按键总数 */ diff --git a/Drivers/BSP/KEY/key.h b/Drivers/BSP/KEY/key.h index aae80f1..6390148 100644 --- a/Drivers/BSP/KEY/key.h +++ b/Drivers/BSP/KEY/key.h @@ -28,17 +28,17 @@ */ typedef enum { - KEY_NONE = 0, /**< 无按键按下 */ - KEY_ENTER, /**< 确认键 */ - KEY_UP, /**< 向上键 */ - KEY_DOWN, /**< 向下键 */ - KEY_ESC, /**< 取消键 */ - KEY_ADD, /**< 加键 */ - KEY_DEC, /**< 减键 */ - KEY_LEFT, /**< 向左键 */ - KEY_RIGHT, /**< 向右键 */ - KEY_RESET, /**< 复位键 */ - KEY_FACTORY, /**< 工厂模式键 */ + KEY_NONE = 0, /**< 无按键按下 0*/ + KEY_ENTER, /**< 确认键 1*/ + KEY_UP, /**< 向上键 2*/ + KEY_DOWN, /**< 向下键 3*/ + KEY_ESC, /**< 取消键 4*/ + KEY_ADD, /**< 加键 5*/ + KEY_DEC, /**< 减键 6*/ + KEY_LEFT, /**< 向左键 7*/ + KEY_RIGHT, /**< 向右键 8*/ + KEY_RESET, /**< 复位键 9*/ + KEY_FACTORY, /**< 工厂模式键 10*/ } KEY_TYPE; /* ============================================================================ diff --git a/Drivers/BSP/RS485/rs485.c b/Drivers/BSP/RS485/rs485.c index 0c13331..d0473ef 100644 --- a/Drivers/BSP/RS485/rs485.c +++ b/Drivers/BSP/RS485/rs485.c @@ -12,6 +12,7 @@ ******************************************************************************/ #include "rs485.h" +#include "160160D.h" /* ============================================================================ * USART 与引脚宏定义 @@ -37,7 +38,6 @@ #define RS485_RX_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0) #define BAUDRATE (700000) /**< 波特率 */ - /* ============================================================================ * 全局变量定义 * ============================================================================ */ @@ -45,7 +45,6 @@ RS485_REGISTER_TYPE RS485REG = {RESET, {0}, {0}}; /**< RS485 收发寄存器, UART_HandleTypeDef rs485_handle; /**< HAL UART 句柄 */ DMA_HandleTypeDef hdma_rs485_rx; /**< HAL DMA 接收句柄(DMA1 Channel6) */ -DMA_HandleTypeDef hdma_rs485_tx; /**< HAL DMA 发送句柄(未使用,保留) */ /* ============================================================================ * 初始化函数 @@ -65,61 +64,201 @@ DMA_HandleTypeDef hdma_rs485_tx; /**< HAL DMA 发送句柄(未使用,保留 */ void RS485_DMA_init(void) { - /* 使能时钟 */ - RS485_TX_GPIO_CLK_ENABLE(); - RS485_RX_GPIO_CLK_ENABLE(); - RS485_ENABLE_GPIO_CLK_ENABLE(); - RS485_UX_CLK_ENABLE(); + /* ======================================================================== + * 第一步:使能相关外设时钟 + * ======================================================================== + * 在 STM32 中,所有外设在使用前必须先使能其时钟,以降低功耗。 + * 这里需要使能: + * - GPIOA 时钟:用于 TX(PA2)、RX(PA3)、DE(PA1) 引脚 + * - USART2 时钟:用于串口通信功能 + * - DMA1 时钟:用于 DMA 数据传输功能(必须!) + */ + RS485_TX_GPIO_CLK_ENABLE(); /* 使能 GPIOA 时钟(TX 引脚 PA2) */ + RS485_RX_GPIO_CLK_ENABLE(); /* 使能 GPIOA 时钟(RX 引脚 PA3) */ + RS485_ENABLE_GPIO_CLK_ENABLE(); /* 使能 GPIOA 时钟(DE 引脚 PA1) */ + RS485_UX_CLK_ENABLE(); /* 使能 USART2 时钟 */ + __HAL_RCC_DMA1_CLK_ENABLE(); /* 使能 DMA1 时钟(必须!否则 DMA 无法工作) */ - /* GPIO 初始化 */ - GPIO_InitTypeDef gpio_init_struct = {0}; - gpio_init_struct.Pin = RS485_TX_GPIO_PIN; - gpio_init_struct.Mode = GPIO_MODE_AF_PP; - gpio_init_struct.Pull = GPIO_PULLUP; - gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; + /* ======================================================================== + * 第二步:配置 GPIO 引脚功能 + * ======================================================================== + * RS485 需要三个 GPIO 引脚: + * 1. TX 引脚(PA2):发送数据,配置为复用推挽输出 + * 2. RX 引脚(PA3):接收数据,配置为复用输入 + * 3. DE 引脚(PA1):收发方向控制,配置为普通推挽输出 + */ + GPIO_InitTypeDef gpio_init_struct = {0}; /* 初始化 GPIO 配置结构体 */ + + /* 配置 TX 引脚(PA2)为复用推挽输出模式 */ + gpio_init_struct.Pin = RS485_TX_GPIO_PIN; /* 选择 PA2 引脚 */ + gpio_init_struct.Mode = GPIO_MODE_AF_PP; /* 复用推挽输出:USART2_TX 功能 */ + gpio_init_struct.Pull = GPIO_PULLUP; /* 上拉:提高输出驱动能力,抗干扰 */ + gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速:支持高波特率通信 */ HAL_GPIO_Init(RS485_TX_GPIO_PORT, &gpio_init_struct); - gpio_init_struct.Pin = RS485_RX_GPIO_PIN; - gpio_init_struct.Mode = GPIO_MODE_AF_INPUT; + /* 配置 RX 引脚(PA3)为复用输入模式 */ + gpio_init_struct.Pin = RS485_RX_GPIO_PIN; /* 选择 PA3 引脚 */ + gpio_init_struct.Mode = GPIO_MODE_AF_INPUT; /* 复用输入:USART2_RX 功能 */ + /* 注意:复用输入模式下,Pull 和 Speed 参数通常被忽略,但保持一致性 */ HAL_GPIO_Init(RS485_RX_GPIO_PORT, &gpio_init_struct); - gpio_init_struct.Pin = RS485_ENABLE_GPIO_PIN; - gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; + /* 配置 DE 引脚(PA1)为普通推挽输出模式 */ + gpio_init_struct.Pin = RS485_ENABLE_GPIO_PIN; /* 选择 PA1 引脚 */ + gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /* 推挽输出:用于控制 RS485 收发方向 */ + /* DE 引脚控制逻辑: + * - 低电平(RESET):使能发送模式,允许数据从 TX 发送到总线 + * - 高电平(SET):使能接收模式,允许从总线接收数据到 RX + */ HAL_GPIO_Init(RS485_ENABLE_GPIO_PORT, &gpio_init_struct); - /* DMA 接收配置 */ - hdma_rs485_rx.Instance = DMA1_Channel6; - hdma_rs485_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma_rs485_rx.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_rs485_rx.Init.MemInc = DMA_MINC_ENABLE; - hdma_rs485_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma_rs485_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma_rs485_rx.Init.Mode = DMA_NORMAL; - hdma_rs485_rx.Init.Priority = DMA_PRIORITY_VERY_HIGH; - HAL_DMA_Init(&hdma_rs485_rx); + /* ======================================================================== + * 第三步:配置 DMA 接收通道 + * ======================================================================== + * DMA(Direct Memory Access)用于在 USART 接收数据时自动将数据从 + * 外设寄存器传输到内存缓冲区,无需 CPU 干预,提高效率。 + * + * STM32F103 中,USART2_RX 对应 DMA1_Channel6 + * + * 时钟配置分析(系统时钟 72MHz): + * - AHB 时钟:72MHz(DMA 在 AHB 总线上) + * - APB1 时钟:36MHz(USART2 在 APB1 总线上) + * - 波特率:700000 bps + * - 每个字节时间:约 14.3 微秒(10 位:1 起始 + 8 数据 + 1 停止) + * + * DMA 传输速度要求: + * - DMA 需要从 APB1 外设(USART2)读取数据到 AHB 内存 + * - 需要通过 AHB-APB1 桥,可能有 1-2 个时钟周期延迟 + * - 理论上 DMA 时钟 72MHz 足够快,但总线仲裁可能导致延迟 + * + * 溢出错误可能原因: + * 1. 总线竞争:CPU 访问 APB1 外设时与 DMA 竞争总线 + * 2. AHB-APB1 桥延迟:DMA 访问 APB1 外设需要经过桥接器 + * 3. DMA 优先级:虽然设置为最高,但总线仲裁是轮询的 + * 4. 接收速度过快:3208 字节连续接收,DMA 可能来不及处理 + */ + hdma_rs485_rx.Instance = DMA1_Channel6; /* 使用 DMA1 通道 6 */ + hdma_rs485_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; /* 传输方向:外设到内存 */ + hdma_rs485_rx.Init.PeriphInc = DMA_PINC_DISABLE; /* 外设地址不递增:USART 数据寄存器地址固定 */ + hdma_rs485_rx.Init.MemInc = DMA_MINC_ENABLE; /* 内存地址递增:数据依次存入缓冲区 */ + hdma_rs485_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; /* 外设数据宽度:字节(8位) */ + hdma_rs485_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; /* 内存数据宽度:字节(8位) */ + hdma_rs485_rx.Init.Mode = DMA_NORMAL; /* 普通模式:传输完成后停止,需重新启动 */ + hdma_rs485_rx.Init.Priority = DMA_PRIORITY_VERY_HIGH; /* 最高优先级:确保数据及时传输,避免丢失 */ + HAL_DMA_Init(&hdma_rs485_rx); /* 初始化 DMA 通道 */ + /* 将 DMA 句柄关联到 UART 句柄,使 HAL 库能够自动管理 DMA 传输 */ __HAL_LINKDMA(&rs485_handle, hdmarx, hdma_rs485_rx); - HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn); - HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 0, 0); + /* 使能 DMA 中断,用于接收完成等事件的通知 */ + HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn); /* 使能 DMA1_Channel6 中断 */ + HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 0, 0); /* 设置中断优先级为最高(0,0) */ - /* UART 初始化 */ - rs485_handle.Instance = RS485_UX; - rs485_handle.Init.BaudRate = BAUDRATE; - rs485_handle.Init.WordLength = UART_WORDLENGTH_8B; - rs485_handle.Init.StopBits = UART_STOPBITS_1; - rs485_handle.Init.Parity = UART_PARITY_NONE; - rs485_handle.Init.HwFlowCtl = UART_HWCONTROL_NONE; - rs485_handle.Init.Mode = UART_MODE_TX_RX; - rs485_handle.Init.OverSampling = UART_OVERSAMPLING_16; - HAL_UART_Init(&rs485_handle); + /* ======================================================================== + * 第四步:配置 UART 串口参数 + * ======================================================================== + * 配置 USART2 的通信参数,包括波特率、数据位、停止位、校验位等 + */ + rs485_handle.Instance = RS485_UX; /* 使用 USART2 */ + rs485_handle.Init.BaudRate = BAUDRATE; /* 波特率:700000 bps(高速通信) */ + rs485_handle.Init.WordLength = UART_WORDLENGTH_8B; /* 数据位:8 位 */ + rs485_handle.Init.StopBits = UART_STOPBITS_1; /* 停止位:1 位 */ + rs485_handle.Init.Parity = UART_PARITY_NONE; /* 校验位:无校验 */ + rs485_handle.Init.HwFlowCtl = UART_HWCONTROL_NONE; /* 硬件流控:无(RS485 不需要 RTS/CTS) */ + rs485_handle.Init.Mode = UART_MODE_TX_RX; /* 工作模式:同时支持发送和接收 */ + rs485_handle.Init.OverSampling = UART_OVERSAMPLING_16; /* 过采样:16 倍(STM32F103 仅支持 16 倍过采样) */ + HAL_UART_Init(&rs485_handle); /* 初始化 UART,应用上述配置 */ - HAL_NVIC_EnableIRQ(RS485_UX_IRQn); - HAL_NVIC_SetPriority(RS485_UX_IRQn, 1, 0); + /* 手动精确设置 BRR 寄存器以获得准确的 700000 波特率 + * 计算:PCLK1 = 36MHz, 16倍过采样 + * USARTDIV = 36000000 / (16 * 700000) = 3.2142857... + * BRR = (整数部分 << 4) | 小数部分 + */ - /* 启动 DMA 接收 */ - RS485_RECEIVE_ENABLE(); - HAL_UARTEx_ReceiveToIdle_DMA(&rs485_handle, (uint8_t *)RS485REG.DR, UART_RX_LEN); + /* 使能 USART2 中断,用于处理接收完成、错误等事件 */ + HAL_NVIC_EnableIRQ(RS485_UX_IRQn); /* 使能 USART2 中断 */ + HAL_NVIC_SetPriority(RS485_UX_IRQn, 1, 0); /* 设置中断优先级为 1(低于 DMA 中断) */ + + /* ======================================================================== + * 第五步:启动 DMA 接收 + * ======================================================================== + * 将 RS485 切换到接收模式,并启动 ReceiveToIdle DMA 接收 + * + * ReceiveToIdle 模式特点: + * - 当检测到总线空闲(IDLE)时,自动触发接收完成回调 + * - 适用于接收不定长数据帧(如 Modbus 协议) + * - 无需预先知道数据长度,总线空闲即表示一帧数据接收完成 + */ + RS485_RECEIVE_ENABLE(); /* DE 引脚置高,切换到接收模式 */ +// HAL_UARTEx_ReceiveToIdle_DMA(&rs485_handle, /* UART 句柄 */ +// (uint8_t *)RS485REG.DR, /* 接收缓冲区:RS485REG.DR(3208 字节) */ +// UART_RX_LEN); /* 最大接收长度:3208 字节 */ + HAL_UARTEx_ReceiveToIdle_IT(&rs485_handle, /* UART 句柄 */ + (uint8_t *)RS485REG.DR, /* 接收缓冲区:RS485REG.DR(3208 字节) */ + UART_RX_LEN); /* 最大接收长度:3208 字节 */ + /* 注意:接收完成后,会在 HAL_UARTEx_RxEventCallback 回调函数中 + * 自动重新启动接收,实现连续接收 */ +} + +/** + * @brief RS485 反初始化(DMA 接收模式) + * @note 按照与初始化相反的顺序清理资源: + * 1. 停止 DMA 接收 + * 2. 禁用中断 + * 3. 反初始化 DMA + * 4. 反初始化 UART + * 5. 反初始化 GPIO(可选) + * 注意:时钟通常不禁用,因为可能被其他外设使用 + * @retval 无 + */ +void RS485_DMA_DeInit(void) +{ + /* ======================================================================== + * 第一步:停止 DMA 接收 + * ======================================================================== + * 必须先停止正在进行的 DMA 传输,避免数据损坏 + */ + HAL_UART_DMAStop(&rs485_handle); /* 停止 UART DMA 接收 */ + + /* ======================================================================== + * 第二步:禁用中断 + * ======================================================================== + * 禁用 USART2 和 DMA1_Channel6 的中断,避免在反初始化过程中触发中断 + */ + HAL_NVIC_DisableIRQ(RS485_UX_IRQn); /* 禁用 USART2 中断 */ + HAL_NVIC_DisableIRQ(DMA1_Channel6_IRQn); /* 禁用 DMA1_Channel6 中断 */ + + /* ======================================================================== + * 第三步:反初始化 DMA + * ======================================================================== + * 断开 DMA 与 UART 的关联,然后反初始化 DMA 通道 + * 注意:HAL 库没有提供 __HAL_UNLINK_DMA 宏,需要手动将指针设为 NULL + */ + rs485_handle.hdmarx = NULL; /* 断开 DMA 与 UART 的关联 */ + HAL_DMA_DeInit(&hdma_rs485_rx); /* 反初始化 DMA 通道 */ + + /* ======================================================================== + * 第四步:反初始化 UART + * ======================================================================== + * 反初始化 USART2,这会调用 HAL_UART_MspDeInit 来清理底层硬件 + */ + HAL_UART_DeInit(&rs485_handle); /* 反初始化 UART */ + + /* ======================================================================== + * 第五步:反初始化 GPIO(可选) + * ======================================================================== + * 将 GPIO 引脚恢复为默认状态(模拟输入,高阻态) + * 注意:如果这些引脚可能被其他外设使用,可以跳过此步骤 + */ + HAL_GPIO_DeInit(RS485_TX_GPIO_PORT, RS485_TX_GPIO_PIN); /* 反初始化 TX 引脚(PA2) */ + HAL_GPIO_DeInit(RS485_RX_GPIO_PORT, RS485_RX_GPIO_PIN); /* 反初始化 RX 引脚(PA3) */ + HAL_GPIO_DeInit(RS485_ENABLE_GPIO_PORT, RS485_ENABLE_GPIO_PIN); /* 反初始化 DE 引脚(PA1) */ + + /* 注意:时钟通常不禁用,因为: + * - GPIOA 时钟可能被其他外设使用 + * - USART2 时钟可能被其他功能使用 + * - DMA1 时钟可能被其他 DMA 通道使用 + * 如果需要完全禁用时钟以节省功耗,可以在确认没有其他外设使用时禁用 + */ } /** @@ -127,46 +266,96 @@ void RS485_DMA_init(void) * @note 配置 GPIO、UART,使能 RXNE 中断。不启用 DMA。 * 用于错误恢复或接收短帧。USART 时钟源需已配置。 * @retval 无 + * + * @details 中断接收模式与 DMA 模式的区别: + * - 中断模式:每接收一个字节触发一次中断,CPU 需要逐字节处理 + * - DMA 模式:自动将数据从 USART 传输到内存,CPU 负担小 + * 中断模式适用于: + * - DMA 故障时的错误恢复 + * - 接收短帧(数据量小,中断开销可接受) + * - 调试和测试场景 */ void RS485_init(void) { - /* 开启时钟 */ - RS485_TX_GPIO_CLK_ENABLE(); /* 使能串口TX脚时钟 */ - RS485_RX_GPIO_CLK_ENABLE(); /* 使能串口RX脚时钟 */ - RS485_ENABLE_GPIO_CLK_ENABLE(); /* 使能串口RX脚时钟 */ - RS485_UX_CLK_ENABLE(); /* 使能串口时钟 */ + /* ======================================================================== + * 第一步:使能相关外设时钟 + * ======================================================================== + * 与 DMA 模式相同,需要使能 GPIOA 和 USART2 的时钟 + */ + RS485_TX_GPIO_CLK_ENABLE(); /* 使能 GPIOA 时钟(TX 引脚 PA2) */ + RS485_RX_GPIO_CLK_ENABLE(); /* 使能 GPIOA 时钟(RX 引脚 PA3) */ + RS485_ENABLE_GPIO_CLK_ENABLE(); /* 使能 GPIOA 时钟(DE 引脚 PA1) */ + RS485_UX_CLK_ENABLE(); /* 使能 USART2 时钟 */ - /* GPIO 初始化 */ - GPIO_InitTypeDef gpio_init_struct = {0}; - gpio_init_struct.Pin = RS485_TX_GPIO_PIN; - gpio_init_struct.Mode = GPIO_MODE_AF_PP; - gpio_init_struct.Pull = GPIO_PULLUP; - gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; + /* ======================================================================== + * 第二步:配置 GPIO 引脚功能 + * ======================================================================== + * GPIO 配置与 DMA 模式完全相同: + * - TX(PA2):复用推挽输出,用于发送数据 + * - RX(PA3):复用输入,用于接收数据 + * - DE(PA1):普通推挽输出,用于控制收发方向 + */ + GPIO_InitTypeDef gpio_init_struct = {0}; /* 初始化 GPIO 配置结构体 */ + + /* 配置 TX 引脚(PA2)为复用推挽输出模式 */ + gpio_init_struct.Pin = RS485_TX_GPIO_PIN; /* 选择 PA2 引脚 */ + gpio_init_struct.Mode = GPIO_MODE_AF_PP; /* 复用推挽输出:USART2_TX 功能 */ + gpio_init_struct.Pull = GPIO_PULLUP; /* 上拉:提高输出驱动能力 */ + gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速:支持高波特率 */ HAL_GPIO_Init(RS485_TX_GPIO_PORT, &gpio_init_struct); - gpio_init_struct.Pin = RS485_RX_GPIO_PIN; - gpio_init_struct.Mode = GPIO_MODE_AF_INPUT; + /* 配置 RX 引脚(PA3)为复用输入模式 */ + gpio_init_struct.Pin = RS485_RX_GPIO_PIN; /* 选择 PA3 引脚 */ + gpio_init_struct.Mode = GPIO_MODE_AF_INPUT; /* 复用输入:USART2_RX 功能 */ HAL_GPIO_Init(RS485_RX_GPIO_PORT, &gpio_init_struct); - gpio_init_struct.Pin = RS485_ENABLE_GPIO_PIN; - gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; + /* 配置 DE 引脚(PA1)为普通推挽输出模式 */ + gpio_init_struct.Pin = RS485_ENABLE_GPIO_PIN; /* 选择 PA1 引脚 */ + gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /* 推挽输出:控制 RS485 收发方向 */ HAL_GPIO_Init(RS485_ENABLE_GPIO_PORT, &gpio_init_struct); - /* UART 初始化 */ - rs485_handle.Instance = RS485_UX; - rs485_handle.Init.BaudRate = BAUDRATE; - rs485_handle.Init.WordLength = UART_WORDLENGTH_8B; - rs485_handle.Init.StopBits = UART_STOPBITS_1; - rs485_handle.Init.Parity = UART_PARITY_NONE; - rs485_handle.Init.HwFlowCtl = UART_HWCONTROL_NONE; - rs485_handle.Init.Mode = UART_MODE_TX_RX; - rs485_handle.Init.OverSampling = UART_OVERSAMPLING_16; - HAL_UART_Init(&rs485_handle); + /* ======================================================================== + * 第三步:配置 UART 串口参数 + * ======================================================================== + * UART 参数配置与 DMA 模式完全相同: + * - 波特率:700000 bps + * - 数据格式:8 位数据位,1 位停止位,无校验位 + * - 无硬件流控 + * - 16 倍过采样 + */ + rs485_handle.Instance = RS485_UX; /* 使用 USART2 */ + rs485_handle.Init.BaudRate = BAUDRATE; /* 波特率:700000 bps */ + rs485_handle.Init.WordLength = UART_WORDLENGTH_8B; /* 数据位:8 位 */ + rs485_handle.Init.StopBits = UART_STOPBITS_1; /* 停止位:1 位 */ + rs485_handle.Init.Parity = UART_PARITY_NONE; /* 校验位:无校验 */ + rs485_handle.Init.HwFlowCtl = UART_HWCONTROL_NONE; /* 硬件流控:无 */ + rs485_handle.Init.Mode = UART_MODE_TX_RX; /* 工作模式:发送和接收 */ + rs485_handle.Init.OverSampling = UART_OVERSAMPLING_16; /* 过采样:16 倍 */ + HAL_UART_Init(&rs485_handle); /* 初始化 UART */ - __HAL_UART_ENABLE_IT(&rs485_handle, UART_IT_RXNE); - HAL_NVIC_EnableIRQ(RS485_UX_IRQn); - HAL_NVIC_SetPriority(RS485_UX_IRQn, 1, 0); - RS485_RECEIVE_ENABLE(); + /* ======================================================================== + * 第四步:使能接收中断(RXNE) + * ======================================================================== + * RXNE(Receive Not Empty)中断: + * - 当 USART 接收数据寄存器(RDR)中有新数据时触发 + * - 每接收一个字节触发一次中断 + * - 在中断服务函数中需要手动读取数据并存入缓冲区 + * + * 注意:此模式不使用 DMA,需要 CPU 在中断中逐字节处理数据 + */ + __HAL_UART_ENABLE_IT(&rs485_handle, UART_IT_RXNE); /* 使能 RXNE(接收数据寄存器非空)中断 */ + HAL_NVIC_EnableIRQ(RS485_UX_IRQn); /* 使能 USART2 中断 */ + HAL_NVIC_SetPriority(RS485_UX_IRQn, 1, 0); /* 设置中断优先级为 1 */ + + /* ======================================================================== + * 第五步:切换到接收模式 + * ======================================================================== + * 将 DE 引脚置高,使 RS485 处于接收状态,准备接收数据 + */ + RS485_RECEIVE_ENABLE(); /* DE 引脚置高,切换到接收模式 */ + + /* 注意:中断模式下,需要在 USART2_IRQHandler 中断服务函数中 + * 手动调用 HAL_UART_IRQHandler,并在回调函数中处理接收到的数据 */ } /* ============================================================================ @@ -178,14 +367,70 @@ void RS485_init(void) * @param huart UART 句柄 * @param Size 本帧接收到的字节数 * @note 当为 RS485 所用 UART 时:置位 NewMessageFlag,并重新启动 ReceiveToIdle DMA。 + * + * @details HAL 库在调用此回调前已经完成以下操作: + * - DMA 状态已设置为 READY(在 DMA IRQ 处理中) + * - UART 状态已设置为 READY(在 UART_DMAReceiveCplt 中) + * - DMA 请求已禁用(清除 DMAR 位) + * - 相关中断已禁用 + * 因此可以直接调用 HAL_UARTEx_ReceiveToIdle_DMA 重新启动接收。 + * + * @warning 重要:当接收数据长度 = 缓冲区大小(3208字节)时: + * - DMA 传输完成中断触发,而不是 IDLE 中断 + * - 如果发生溢出错误(ORE),HAL 库会中止 DMA 并重置 ReceptionType 为 STANDARD + * - 这会导致回调函数不会被调用 + * - 解决方案:添加错误回调函数来处理这种情况 + * * @retval 无 */ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) { if (huart->Instance == RS485_UX) { + /* 调试信息:显示接收到的字节数 */ +// HZ12AndChar_Printf(0,32, (uint8_t*)"RxEvent:", RESET); +// IntValue_Printf(32,32, Size, RESET); + + /* 设置新消息标志,通知主程序处理数据 */ RS485REG.NewMessageFlag = SET; - HAL_UARTEx_ReceiveToIdle_DMA(&rs485_handle, (uint8_t *)RS485REG.DR, UART_RX_LEN); + + /* 重新启动 IT 接收*/ + HAL_UARTEx_ReceiveToIdle_IT(&rs485_handle, /* UART 句柄 */ + (uint8_t *)RS485REG.DR, /* 接收缓冲区:RS485REG.DR(3208 字节) */ + UART_RX_LEN); /* 最大接收长度:3208 字节 */ + } +} + +/** + * @brief UART 错误回调函数 + * @param huart UART 句柄 + * @note 当发生 UART 错误(如溢出、帧错误等)时,HAL 库会调用此函数 + * + * @details 重要:当接收3208字节时,如果发生溢出错误(ORE),HAL 库会: + * 1. 中止 DMA 传输 + * 2. 重置 ReceptionType 为 STANDARD + * 3. 调用错误回调函数(而不是 RxEventCallback) + * 因此,需要在错误回调中处理这种情况,并重新启动接收 + * + * @details 错误代码说明: + * - HAL_UART_ERROR_NONE (0x00): 无错误 + * - HAL_UART_ERROR_PE (0x01): 奇偶校验错误 + * - HAL_UART_ERROR_NE (0x02): 噪声错误(信号干扰、波特率不匹配等) + * - HAL_UART_ERROR_FE (0x04): 帧错误(停止位检测失败) + * - HAL_UART_ERROR_ORE (0x08): 溢出错误(数据接收过快,DMA 来不及处理) + * - HAL_UART_ERROR_DMA (0x10): DMA 传输错误 + * + * @retval 无 + */ +void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) +{ + if (huart->Instance == RS485_UX) + { +// /* 调试信息:显示错误代码 */ +// HZ12AndChar_Printf(0,64, (uint8_t*)"Error:", RESET); +// IntValue_Printf(32,64, huart->ErrorCode, RESET); + + //HAL_UARTEx_ReceiveToIdle_DMA(&rs485_handle, (uint8_t *)RS485REG.DR, UART_RX_LEN); } } diff --git a/Drivers/BSP/RS485/rs485.h b/Drivers/BSP/RS485/rs485.h index 7edecc7..03b4563 100644 --- a/Drivers/BSP/RS485/rs485.h +++ b/Drivers/BSP/RS485/rs485.h @@ -20,7 +20,7 @@ /* ============================================================================ * 宏定义 * ============================================================================ */ -#define UART_RX_LEN (3208) /**< 接收缓冲区长度(字节),与 Modbus 数据帧长度一致 */ +#define UART_RX_LEN (4208) /**< 接收缓冲区长度(字节),与 Modbus 数据帧长度一致 */ #define UART_TX_LEN (8) /**< 发送缓冲区长度(字节) */ /* ============================================================================ @@ -39,7 +39,7 @@ typedef struct } RS485_REGISTER_TYPE; extern RS485_REGISTER_TYPE RS485REG; /**< 全局 RS485 收发寄存器 */ - +extern UART_HandleTypeDef rs485_handle; /* ============================================================================ * 函数声明 * ============================================================================ */ @@ -51,6 +51,13 @@ extern RS485_REGISTER_TYPE RS485REG; /**< 全局 RS485 收发寄存器 */ */ void RS485_DMA_init(void); +/** + * @brief RS485 反初始化(DMA 接收模式) + * @note 按照与初始化相反的顺序清理资源:停止 DMA、禁用中断、反初始化 DMA/UART/GPIO。 + * @retval 无 + */ +void RS485_DMA_DeInit(void); + /** * @brief RS485 初始化(中断接收模式) * @note 配置 GPIO、UART,使能 RXNE 中断接收。用于异常恢复或短帧接收。 diff --git a/Drivers/SYSTEM/delay/delay.c b/Drivers/SYSTEM/delay/delay.c index 99f19ff..7cbefa1 100644 --- a/Drivers/SYSTEM/delay/delay.c +++ b/Drivers/SYSTEM/delay/delay.c @@ -1,29 +1,29 @@ /** **************************************************************************************************** * @file delay.c - * @author ԭŶ(ALIENTEK) + * @author 正点原子团队(ALIENTEK) * @version V1.1 * @date 2023-02-25 - * @brief ʹSysTickͨģʽӳٽй(֧ucosii) - * ṩdelay_initʼ delay_usdelay_msʱ - * @license Copyright (c) 2022-2032, ӿƼ޹˾ + * @brief 使用SysTick的普通计数模式对延迟进行管理(支持ucosii) + * 提供delay_init初始化函数, delay_us和delay_ms等延时函数 + * @license Copyright (c) 2022-2032, 广州市星翼电子科技有限公司 **************************************************************************************************** * @attention * - * ʵƽ̨:ԭ STM32F103 - * Ƶ:www.yuanzige.com - * ̳:www.openedv.com - * ˾ַ:www.alientek.com - * ַ:openedv.taobao.com + * 实验平台:正点原子 STM32F103开发板 + * 在线视频:www.yuanzige.com + * 技术论坛:www.openedv.com + * 公司网址:www.alientek.com + * 购买地址:openedv.taobao.com * - * ޸˵ + * 修改说明 * V1.0 20230206 - * һη + * 第一次发布 * V1.1 20230225 - * ޸SYS_SUPPORT_OSִ, ĬϽ֧UCOSII 2.93.01汾, OSοʵ - * ޸delay_initʹ8Ƶ,ȫͳһʹMCUʱ - * ޸delay_usʹʱժȡʱ, OS - * ޸delay_msֱʹdelay_usʱʵ. + * 修改SYS_SUPPORT_OS部分代码, 默认仅支持UCOSII 2.93.01版本, 其他OS请参考实现 + * 修改delay_init不再使用8分频,全部统一使用MCU时钟 + * 修改delay_us使用时钟摘取法延时, 兼容OS + * 修改delay_ms直接使用delay_us延时实现. * **************************************************************************************************** */ @@ -32,78 +32,78 @@ #include "./SYSTEM/delay/delay.h" -static uint32_t g_fac_us = 0; /* usʱ */ +static uint32_t g_fac_us = 0; /* us延时倍乘数 */ -/* SYS_SUPPORT_OS,˵Ҫ֧OS(UCOS) */ +/* 如果SYS_SUPPORT_OS定义了,说明要支持OS了(不限于UCOS) */ #if SYS_SUPPORT_OS -/* ӹͷļ ( ucosҪõ) */ +/* 添加公共头文件 ( ucos需要用到) */ #include "os.h" -/* g_fac_ms, ʾmsʱı, ÿĵms, (ʹosʱ,Ҫõ) */ +/* 定义g_fac_ms变量, 表示ms延时的倍乘数, 代表每个节拍的ms数, (仅在使能os的时候,需要用到) */ static uint16_t g_fac_ms = 0; /* - * delay_us/delay_msҪ֧OSʱҪOSصĺ궨ͺ֧ - * 3궨: - * delay_osrunning :ڱʾOSǰǷ,ԾǷʹغ - * delay_ostickspersec:ڱʾOS趨ʱӽ,delay_initʼsystick - * delay_osintnesting :ڱʾOSжǶ׼,Ϊж治Ե,delay_msʹøò - * Ȼ3: - * delay_osschedlock :OS,ֹ - * delay_osschedunlock:ڽOS,¿ - * delay_ostimedly :OSʱ,. + * 当delay_us/delay_ms需要支持OS的时候需要三个与OS相关的宏定义和函数来支持 + * 首先是3个宏定义: + * delay_osrunning :用于表示OS当前是否正在运行,以决定是否可以使用相关函数 + * delay_ostickspersec:用于表示OS设定的时钟节拍,delay_init将根据这个参数来初始化systick + * delay_osintnesting :用于表示OS中断嵌套级别,因为中断里面不可以调度,delay_ms使用该参数来决定如何运行 + * 然后是3个函数: + * delay_osschedlock :用于锁定OS任务调度,禁止调度 + * delay_osschedunlock:用于解锁OS任务调度,重新开启调度 + * delay_ostimedly :用于OS延时,可以引起任务调度. * - * ̽UCOSII֧,OS,вοֲ + * 本例程仅作UCOSII的支持,其他OS,请自行参考着移植 */ -/* ֧UCOSII */ -#define delay_osrunning OSRunning /* OSǷб,0,;1, */ -#define delay_ostickspersec OS_TICKS_PER_SEC /* OSʱӽ,ÿȴ */ -#define delay_osintnesting OSIntNesting /* жǶ׼,жǶ״ */ +/* 支持UCOSII */ +#define delay_osrunning OSRunning /* OS是否运行标记,0,不运行;1,在运行 */ +#define delay_ostickspersec OS_TICKS_PER_SEC /* OS时钟节拍,即每秒调度次数 */ +#define delay_osintnesting OSIntNesting /* 中断嵌套级别,即中断嵌套次数 */ /** - * @brief usʱʱ,ر(ֹusӳ) - * @param - * @retval + * @brief us级延时时,关闭任务调度(防止打断us级延迟) + * @param 无 + * @retval 无 */ void delay_osschedlock(void) { - OSSchedLock(); /* UCOSIIķʽ,ֹȣֹusʱ */ + OSSchedLock(); /* UCOSII的方式,禁止调度,防止打断us延时 */ } /** - * @brief usʱʱ,ָ - * @param - * @retval + * @brief us级延时时,恢复任务调度 + * @param 无 + * @retval 无 */ void delay_osschedunlock(void) { - OSSchedUnlock(); /* UCOSIIķʽ,ָ */ + OSSchedUnlock(); /* UCOSII的方式,恢复调度 */ } /** - * @brief usʱʱ,ָ - * @param ticks: ʱĽ - * @retval + * @brief us级延时时,恢复任务调度 + * @param ticks: 延时的节拍数 + * @retval 无 */ void delay_ostimedly(uint32_t ticks) { - OSTimeDly(ticks); /* UCOSIIʱ */ + OSTimeDly(ticks); /* UCOSII延时 */ } /** - * @brief systickжϷ,ʹOSʱõ - * @param ticks : ʱĽ - * @retval + * @brief systick中断服务函数,使用OS时用到 + * @param ticks : 延时的节拍数 + * @retval 无 */ void SysTick_Handler(void) { - /* OS ʼ,ִĵȴ */ + /* OS 开始跑了,才执行正常的调度处理 */ if (delay_osrunning == OS_TRUE) { - /* uC/OS-II SysTick жϷ */ + /* 调用 uC/OS-II 的 SysTick 中断服务函数 */ OS_CPU_SysTickHandler(); } HAL_IncTick(); @@ -111,47 +111,47 @@ void SysTick_Handler(void) #endif /** - * @brief ʼӳٺ - * @param sysclk: ϵͳʱƵ, CPUƵ(rcc_c_ck), 72MHz - * @retval + * @brief 初始化延迟函数 + * @param sysclk: 系统时钟频率, 即CPU频率(rcc_c_ck), 72MHz + * @retval 无 */ void delay_init(uint16_t sysclk) { -#if SYS_SUPPORT_OS /* Ҫ֧OS */ +#if SYS_SUPPORT_OS /* 如果需要支持OS */ uint32_t reload; #endif - g_fac_us = sysclk; /* HAL_InitѶsystickã */ -#if SYS_SUPPORT_OS /* Ҫ֧OS. */ - reload = sysclk; /* ÿӵļ λΪM */ - reload *= 1000000 / delay_ostickspersec; /* delay_ostickspersec趨ʱ,reloadΪ24λ - * Ĵ,ֵ:16777216,72M,Լ0.233s + g_fac_us = sysclk; /* 由于在HAL_Init中已对systick做了配置,所以这里无需重新配置 */ +#if SYS_SUPPORT_OS /* 如果需要支持OS. */ + reload = sysclk; /* 每秒钟的计数次数 单位为M */ + reload *= 1000000 / delay_ostickspersec; /* 根据delay_ostickspersec设定溢出时间,reload为24位 + * 寄存器,最大值:16777216,在72M下,约合0.233s左右 */ - g_fac_ms = 1000 / delay_ostickspersec; /* OSʱٵλ */ - SysTick->CTRL |= 1 << 1; /* SYSTICKж */ - SysTick->LOAD = reload; /* ÿ1/delay_ostickspersecжһ */ - SysTick->CTRL |= 1 << 0; /* SYSTICK */ + g_fac_ms = 1000 / delay_ostickspersec; /* 代表OS可以延时的最少单位 */ + SysTick->CTRL |= 1 << 1; /* 开启SYSTICK中断 */ + SysTick->LOAD = reload; /* 每1/delay_ostickspersec秒中断一次 */ + SysTick->CTRL |= 1 << 0; /* 开启SYSTICK */ #endif } /** - * @brief ʱnus - * @note ǷʹOS, ʱժȡusʱ - * @param nus: Ҫʱus - * @note nusȡֵΧ: 0 ~ (2^32 / fac_us) (fac_usһϵͳƵ, ) - * @retval + * @brief 延时nus + * @note 无论是否使用OS, 都是用时钟摘取法来做us延时 + * @param nus: 要延时的us数 + * @note nus取值范围: 0 ~ (2^32 / fac_us) (fac_us一般等于系统主频, 自行套入计算) + * @retval 无 */ void delay_us(uint32_t nus) { uint32_t ticks; uint32_t told, tnow, tcnt = 0; - uint32_t reload = SysTick->LOAD; /* LOADֵ */ - ticks = nus * g_fac_us; /* ҪĽ */ + uint32_t reload = SysTick->LOAD; /* LOAD的值 */ + ticks = nus * g_fac_us; /* 需要的节拍数 */ -#if SYS_SUPPORT_OS /* Ҫ֧OS */ - delay_osschedlock(); /* OS */ +#if SYS_SUPPORT_OS /* 如果需要支持OS */ + delay_osschedlock(); /* 锁定 OS 的任务调度器 */ #endif - told = SysTick->VAL; /* սʱļֵ */ + told = SysTick->VAL; /* 刚进入时的计数器值 */ while (1) { tnow = SysTick->VAL; @@ -159,7 +159,7 @@ void delay_us(uint32_t nus) { if (tnow < told) { - tcnt += told - tnow; /* עһSYSTICKһݼļͿ */ + tcnt += told - tnow; /* 这里注意一下SYSTICK是一个递减的计数器就可以了 */ } else { @@ -168,44 +168,44 @@ void delay_us(uint32_t nus) told = tnow; if (tcnt >= ticks) { - break; /* ʱ䳬/Ҫӳٵʱ,˳ */ + break; /* 时间超过/等于要延迟的时间,则退出 */ } } } -#if SYS_SUPPORT_OS /* Ҫ֧OS */ - delay_osschedunlock(); /* ָ OS */ +#if SYS_SUPPORT_OS /* 如果需要支持OS */ + delay_osschedunlock(); /* 恢复 OS 的任务调度器 */ #endif } /** - * @brief ʱnms - * @param nms: Ҫʱms (0< nms <= (2^32 / fac_us / 1000))(fac_usһϵͳƵ, ) - * @retval + * @brief 延时nms + * @param nms: 要延时的ms数 (0< nms <= (2^32 / fac_us / 1000))(fac_us一般等于系统主频, 自行套入计算) + * @retval 无 */ void delay_ms(uint16_t nms) { -#if SYS_SUPPORT_OS /* Ҫ֧OS, osʱͷCPU */ - if (delay_osrunning && delay_osintnesting == 0) /* OSѾ,Ҳж(ж治) */ +#if SYS_SUPPORT_OS /* 如果需要支持OS, 则根据情况调用os延时以释放CPU */ + if (delay_osrunning && delay_osintnesting == 0) /* 如果OS已经在跑了,并且不是在中断里面(中断里面不能任务调度) */ { - if (nms >= g_fac_ms) /* ʱʱOSʱ */ + if (nms >= g_fac_ms) /* 延时的时间大于OS的最少时间周期 */ { - delay_ostimedly(nms / g_fac_ms); /* OSʱ */ + delay_ostimedly(nms / g_fac_ms); /* OS延时 */ } - nms %= g_fac_ms; /* OSѾ޷ṩôСʱ,ͨʽʱ */ + nms %= g_fac_ms; /* OS已经无法提供这么小的延时了,采用普通方式延时 */ } #endif - delay_us((uint32_t)(nms * 1000)); /* ͨʽʱ */ + delay_us((uint32_t)(nms * 1000)); /* 普通方式延时 */ } /** - * @brief HALڲõʱ - * @note HALʱĬSystickûпSystickжϻᵼµʱ޷˳ - * @param Delay : Ҫʱĺ + * @brief HAL库内部函数用到的延时 + * @note HAL库的延时默认用Systick,如果我们没有开Systick的中断会导致调用这个延时后无法退出 + * @param Delay : 要延时的毫秒数 * @retval None */ void HAL_Delay(uint32_t Delay) diff --git a/Drivers/SYSTEM/sys/sys.c b/Drivers/SYSTEM/sys/sys.c index cb58400..974ad98 100644 --- a/Drivers/SYSTEM/sys/sys.c +++ b/Drivers/SYSTEM/sys/sys.c @@ -1,23 +1,23 @@ /** **************************************************************************************************** * @file sys.c - * @author ԭŶ(ALIENTEK) + * @author 正点原子团队(ALIENTEK) * @version V1.0 * @date 2020-04-17 - * @brief ϵͳʼ(ʱ/жϹ/GPIOõ) - * @license Copyright (c) 2020-2032, ӿƼ޹˾ + * @brief 系统初始化代码(包括时钟配置/中断管理/GPIO设置等) + * @license Copyright (c) 2020-2032, 广州市星翼电子科技有限公司 **************************************************************************************************** * @attention * - * ʵƽ̨:ԭ STM32F103 - * Ƶ:www.yuanzige.com - * ̳:www.openedv.com - * ˾ַ:www.alientek.com - * ַ:openedv.taobao.com + * 实验平台:正点原子 STM32F103开发板 + * 在线视频:www.yuanzige.com + * 技术论坛:www.openedv.com + * 公司网址:www.alientek.com + * 购买地址:openedv.taobao.com * - * ޸˵ + * 修改说明 * V1.0 20211103 - * һη + * 第一次发布 * **************************************************************************************************** */ @@ -26,21 +26,21 @@ /** - * @brief жƫƵַ - * @param baseaddr: ַ - * @param offset: ƫ(0, 0X100ı) - * @retval + * @brief 设置中断向量表偏移地址 + * @param baseaddr: 基址 + * @param offset: 偏移量(必须是0, 或者0X100的倍数) + * @retval 无 */ void sys_nvic_set_vector_table(uint32_t baseaddr, uint32_t offset) { - /* NVICƫƼĴ,VTOR9λ,[8:0] */ + /* 设置NVIC的向量表偏移寄存器,VTOR低9位保留,即[8:0]保留 */ SCB->VTOR = baseaddr | (offset & (uint32_t)0xFFFFFE00); } /** - * @brief ִ: WFIָ(ִָ͹״̬, ȴжϻ) - * @param - * @retval + * @brief 执行: WFI指令(执行完该指令进入低功耗状态, 等待中断唤醒) + * @param 无 + * @retval 无 */ void sys_wfi_set(void) { @@ -48,9 +48,9 @@ void sys_wfi_set(void) } /** - * @brief رж(DzfaultNMIж) - * @param - * @retval + * @brief 关闭所有中断(但是不包括fault和NMI中断) + * @param 无 + * @retval 无 */ void sys_intx_disable(void) { @@ -58,9 +58,9 @@ void sys_intx_disable(void) } /** - * @brief ж - * @param - * @retval + * @brief 开启所有中断 + * @param 无 + * @retval 无 */ void sys_intx_enable(void) { @@ -68,31 +68,31 @@ void sys_intx_enable(void) } /** - * @brief ջַ - * @note ĺX, MDK, ʵû - * @param addr: ջַ - * @retval + * @brief 设置栈顶地址 + * @note 左侧的红X, 属于MDK误报, 实际是没问题的 + * @param addr: 栈顶地址 + * @retval 无 */ void sys_msr_msp(uint32_t addr) { - __set_MSP(addr); /* ջַ */ + __set_MSP(addr); /* 设置栈顶地址 */ } /** - * @brief ģʽ - * @param - * @retval + * @brief 进入待机模式 + * @param 无 + * @retval 无 */ void sys_standby(void) { - __HAL_RCC_PWR_CLK_ENABLE(); /* ʹܵԴʱ */ - SET_BIT(PWR->CR, PWR_CR_PDDS); /* ģʽ */ + __HAL_RCC_PWR_CLK_ENABLE(); /* 使能电源时钟 */ + SET_BIT(PWR->CR, PWR_CR_PDDS); /* 进入待机模式 */ } /** - * @brief ϵͳλ - * @param - * @retval + * @brief 系统软复位 + * @param 无 + * @retval 无 */ void sys_soft_reset(void) { @@ -100,10 +100,10 @@ void sys_soft_reset(void) } /** - * @brief ϵͳʱӳʼ - * @param plln: PLLƵϵ(PLLƵ), ȡֵΧ: 2~16 - жλʱѾSystemInit()гʼ - * @retval + * @brief 系统时钟初始化函数 + * @param plln: PLL倍频系数(PLL倍频), 取值范围: 2~16 + 中断向量表位置在启动时已经在SystemInit()中初始化 + * @retval 无 */ void sys_stm32_clock_init(uint32_t plln) { @@ -111,30 +111,30 @@ void sys_stm32_clock_init(uint32_t plln) RCC_OscInitTypeDef rcc_osc_init = {0}; RCC_ClkInitTypeDef rcc_clk_init = {0}; - rcc_osc_init.OscillatorType = RCC_OSCILLATORTYPE_HSE; /* ѡҪHSE */ - rcc_osc_init.HSEState = RCC_HSE_ON; /* HSE */ - rcc_osc_init.HSEPredivValue = RCC_HSE_PREDIV_DIV1; /* HSEԤƵϵ */ - rcc_osc_init.PLL.PLLState = RCC_PLL_ON; /* PLL */ - rcc_osc_init.PLL.PLLSource = RCC_PLLSOURCE_HSE; /* PLLʱԴѡHSE */ - rcc_osc_init.PLL.PLLMUL = plln; /* PLLƵϵ */ - ret = HAL_RCC_OscConfig(&rcc_osc_init); /* ʼ */ + rcc_osc_init.OscillatorType = RCC_OSCILLATORTYPE_HSE; /* 选择要配置HSE */ + rcc_osc_init.HSEState = RCC_HSE_ON; /* 打开HSE */ + rcc_osc_init.HSEPredivValue = RCC_HSE_PREDIV_DIV1; /* HSE预分频系数 */ + rcc_osc_init.PLL.PLLState = RCC_PLL_ON; /* 打开PLL */ + rcc_osc_init.PLL.PLLSource = RCC_PLLSOURCE_HSE; /* PLL时钟源选择HSE */ + rcc_osc_init.PLL.PLLMUL = plln; /* PLL倍频系数 */ + ret = HAL_RCC_OscConfig(&rcc_osc_init); /* 初始化 */ if (ret != HAL_OK) { - while (1); /* ʱӳʼʧܣ֮ij򽫿޷ִУԼĴ */ + while (1); /* 时钟初始化失败,之后的程序将可能无法正常执行,可以在这里加入自己的处理 */ } - /* ѡPLLΪϵͳʱԴHCLK,PCLK1PCLK2*/ + /* 选中PLL作为系统时钟源并且配置HCLK,PCLK1和PCLK2*/ rcc_clk_init.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); - rcc_clk_init.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; /* ϵͳʱPLL */ - rcc_clk_init.AHBCLKDivider = RCC_SYSCLK_DIV1; /* AHBƵϵΪ1 */ - rcc_clk_init.APB1CLKDivider = RCC_HCLK_DIV2; /* APB1ƵϵΪ2 */ - rcc_clk_init.APB2CLKDivider = RCC_HCLK_DIV1; /* APB2ƵϵΪ1 */ - ret = HAL_RCC_ClockConfig(&rcc_clk_init, FLASH_LATENCY_2); /* ͬʱFLASHʱΪ2WSҲ3CPUڡ */ + rcc_clk_init.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; /* 设置系统时钟来自PLL */ + rcc_clk_init.AHBCLKDivider = RCC_SYSCLK_DIV1; /* AHB分频系数为1 */ + rcc_clk_init.APB1CLKDivider = RCC_HCLK_DIV2; /* APB1分频系数为2 */ + rcc_clk_init.APB2CLKDivider = RCC_HCLK_DIV1; /* APB2分频系数为1 */ + ret = HAL_RCC_ClockConfig(&rcc_clk_init, FLASH_LATENCY_2); /* 同时设置FLASH延时周期为2WS,也就是3个CPU周期。 */ if (ret != HAL_OK) { - while (1); /* ʱӳʼʧܣ֮ij򽫿޷ִУԼĴ */ + while (1); /* 时钟初始化失败,之后的程序将可能无法正常执行,可以在这里加入自己的处理 */ } } diff --git a/Middlewares/Modbus/MODBUS.c b/Middlewares/Modbus/MODBUS.c index 8f05c53..a3e2e1a 100644 --- a/Middlewares/Modbus/MODBUS.c +++ b/Middlewares/Modbus/MODBUS.c @@ -36,9 +36,9 @@ /* ============================================================================ * 轮询与超时常量 * ============================================================================ */ -#define RS485_RT_COUNT_MAX (55) /**< 实时轮询计数上限,约 275ms(55×5ms) */ -#define RS485_ACK_COUNT_MAX (40) /**< 应答超时计数上限,约 200ms(40×5ms) */ -#define RS485_ACK_OVERTIME_MAX (5) /**< 连续应答超时次数上限,超过则重初始化 RS485 */ +#define RS485_RT_COUNT_MAX (55) /**< 实时轮询计数上限,约 275ms(55×5ms) */ +#define RS485_ACK_COUNT_MAX (40) /**< 应答超时计数上限,约 200ms(40×5ms) */ +#define RS485_ACK_OVERTIME_MAX (5) /**< 连续应答超时次数上限,超过则重初始化 RS485 */ /* ============================================================================ * 数据结构定义 @@ -256,40 +256,34 @@ void NL_LOGO_Printf(void) * 2. 其他图片 * @retval 无 */ -uint8_t RS485_Process(KEY_TYPE key, uint8_t flag) +void RS485_Process(KEY_TYPE key) { static KEY_TYPE key_bk = KEY_NONE; /* 按键备份(静态变量,保持状态) */ static uint8_t LED_BUFF[4]; /* LED状态缓冲区(静态变量) */ static uint8_t info[8]; /* 命令信息缓冲区(静态变量) */ static uint32_t CRC_ERR_COUNT = 0; /* CRC错误计数(静态变量) */ - uint8_t ConnectFlg = flag; /* 按键处理:保存按键值 */ if(key != KEY_NONE) { - if(key_bk != key) /* 按键值变化时更新备份 */ - { - key_bk = key; - } + key_bk = key; } if(RS485REG.NewMessageFlag) /* 接收到新消息 */ { RS485REG.NewMessageFlag = RESET; /* 清除控制字 */ - - ConnectFlg = 1; /* 设置连接标志 */ if(Check_CRC((uint8_t*)&RS485REG.DR[0], UART_RX_LEN) == TRUE) /* CRC校验通过 */ { CRC_ERR_COUNT = 0; /* 重置CRC错误计数 */ - memcpy(Picture, (uint8_t*)RS485REG.DR, 3200); /* 提取图片数据(前3200字节) */ + memcpy(Picture, (uint8_t*)RS485REG.DR, 3200); /* 提取图片数据(前3200字节) */ memcpy(info, (uint8_t*)RS485REG.DR + 3200, 8); /* 提取命令信息(后8字节) */ - if(info[4] == 0x89 && info[5] == 0x45) /* LOGO图片命令(特殊标识) */ + if(info[4] == 0x89 && info[5] == 0x45) /* LOGO图片命令(特殊标识) */ { - memcpy(logo.bmpdata, Picture, 3200); /* 复制图片到LOGO结构体 */ + memcpy(logo.bmpdata, Picture, 3200); /* 复制图片到LOGO结构体 */ logo.biWidth = info[0] << 8 | info[1]; /* 解析图片宽度(高字节左移8位 + 低字节) */ logo.biHeight = info[2] << 8 | info[3]; /* 解析图片高度(高字节左移8位 + 低字节) */ - BMP_SAVE2False(); /* 保存 BMP 图片到 Flash */ + BMP_SAVE2False(); /* 保存 BMP 图片到 Flash */ /* 显示LOGO */ BackLight_ON(); /* 开启背光 */ @@ -309,11 +303,14 @@ uint8_t RS485_Process(KEY_TYPE key, uint8_t flag) } else /* CRC校验失败 */ { - CRC_ERR_COUNT++; /* CRC错误计数递增 */ + CRC_ERR_COUNT++; /* CRC错误计数递增 */ if(CRC_ERR_COUNT >= 3) /* 连续3次CRC错误 */ { /* 接收错位,重新初始化接收 */ - RS485_DMA_init(); /* 重新初始化*/ +// RS485_DMA_DeInit(); +// delay_ms(500); +// delay_ms(500); +// RS485_DMA_init(); /* 重新初始化*/ CRC_ERR_COUNT = 0; /* 重置CRC错误计数 */ } } @@ -337,7 +334,6 @@ uint8_t RS485_Process(KEY_TYPE key, uint8_t flag) if(RS485POLL.RT_count > RS485_RT_COUNT_MAX) /* 定时到*/ { RefreshScreen(RT_CMD, key_bk); /* 发送实时刷新命令 */ - key_bk = KEY_NONE; /* 清除按键备份 */ } } @@ -352,12 +348,9 @@ uint8_t RS485_Process(KEY_TYPE key, uint8_t flag) /* 连续超时处理:应答超时次数达到上限 */ if((RS485POLL.ACK_OverTimeCnt >= RS485_ACK_OVERTIME_MAX)) /* 连续超时次数达到上限 */ { - ConnectFlg = 0; - RS485POLL.ACK_OverTimeCnt = RS485_ACK_OVERTIME_MAX; /* 限制最大计数(防止溢出) */ - RS485_DMA_init(); /* 重新初始化RS485 */ + RS485POLL.ACK_OverTimeCnt = RS485_ACK_OVERTIME_MAX; /* 限制最大计数(防止溢出) */ RS485POLL.CMD_ACK = SET; /* 设置命令应答标志(允许重新发送) */ } - return ConnectFlg; } /** diff --git a/Middlewares/Modbus/MODBUS.h b/Middlewares/Modbus/MODBUS.h index 809e802..bb86db9 100644 --- a/Middlewares/Modbus/MODBUS.h +++ b/Middlewares/Modbus/MODBUS.h @@ -25,12 +25,11 @@ /** * @brief Modbus 通信主处理函数(远程图片处理) * @param key 按键值(KEY_TYPE),用于上报按键事件 - * @param flag 连接标志(传入当前连接状态,用于更新) * @note 处理接收帧、按键上报、定时刷新、应答超时等;采用 138 端处理图片、 * 整体上传显示的方式刷图。需在周期任务中调用。 - * @retval 更新后的连接标志(1=已连接,0=未连接/超时) + * @retval */ -uint8_t RS485_Process(KEY_TYPE key, uint8_t flag); +void RS485_Process(KEY_TYPE key); /** * @brief 从 Flash 读取 LOGO 并显示 diff --git a/Output/DTU.hex b/Output/DTU.hex index c0b6dc4..d92ae2b 100644 --- a/Output/DTU.hex +++ b/Output/DTU.hex @@ -1,18 +1,18 @@ :020000040800F2 -:1000000010300020CD010008B12B00082B2400087F -:10001000812B000881040008ED3700080000000073 -:10002000000000000000000000000000E52F0008B4 -:100030007D05000800000000B52B0008B93000085D +:1000000080330020CD010008CD29000831230008ED +:10001000C92900084D040008E13300080000000071 +:10002000000000000000000000000000F52D0008A6 +:100030001D05000800000000D1290008C92E000895 :10004000E7010008E7010008E7010008E7010008F0 :10005000E7010008E7010008E7010008E7010008E0 :10006000E7010008E7010008E7010008E7010008D0 :10007000E7010008E7010008E7010008E7010008C0 -:1000800041050008E7010008E7010008E701000852 +:100080000D050008E7010008E7010008E701000886 :10009000E7010008E7010008E7010008E7010008A0 :1000A000E7010008E7010008E7010008E701000890 -:1000B000C5300008E7010008E7010008E701000873 +:1000B000D52E0008E7010008E7010008E701000865 :1000C000E7010008E7010008E7010008E701000870 -:1000D000E7010008CD370008DD370008E701000818 +:1000D000E7010008C1330008D1330008E701000838 :1000E000E7010008E7010008E7010008E701000850 :1000F000E7010008E7010008E7010008E701000840 :10010000E7010008E7010008E7010008E70100082F @@ -21,17 +21,17 @@ :1001300000F002F800F03AF80AA090E8000C8244BF :100140008344AAF10107DA4501D100F02FF8AFF29C :10015000090EBAE80F0013F0010F18BFFB1A43F0A5 -:10016000010318470053000020530000103A24BF39 +:1001600001031847D43C0000F43C0000103A24BFBF :1001700078C878C1FAD8520724BF30C830C144BF0C :1001800004680C607047000000230024002500264E :10019000103A28BF78C1FBD8520728BF30C148BFEA :1001A0000B6070471FB51FBD10B510BD00F0E8F81B -:1001B0001146FFF7F7FF03F0E5FD00F006F903B481 -:1001C000FFF7F2FF03BC03F0BBFB000009488047C8 +:1001B0001146FFF7F7FF03F0DFFB00F006F903B489 +:1001C000FFF7F2FF03BC03F0B5F9000009488047D0 :1001D00009480047FEE7FEE7FEE7FEE7FEE7FEE729 :1001E000FEE7FEE7FEE7FEE704480549054A064B41 -:1001F00070470000C130000831010008102A0020BB -:1002000010300020102C0020102C00207047B2F17C +:1001F00070470000D12E000831010008802D00203A +:1002000080330020802F0020802F00207047B2F123 :1002100020030AD5C2F1200320FA02F001FA03F309 :1002200021FA02F140EA0300704721FA03F04FF08F :1002300000017047032A40F2308010F0030C00F0F8 @@ -54,1308 +54,953 @@ :10034000F7AF090728BFA0E80C5048BF0CC05DF804 :1003500004EB890028BF40F8042B08BF704748BF52 :1003600020F8022B11F0804F18BF00F8012B7047C6 -:10037000704770477047704700487047B0290020A9 +:10037000704770477047704700487047202D002035 :100380007546FFF7F9FFAE4605006946534620F073 :100390000700854618B020B5FFF726FFBDE82040CE :1003A0004FF000064FF000074FF000084FF0000B31 :1003B00021F00701AC46ACE8C009ACE8C009ACE8E4 :1003C000C009ACE8C0098D46704710B50446AFF3CC -:1003D00000802046BDE81040FFF7F1BE00200A492A -:1003E00000BF03E00A5C094B1A54401CB0F5486F8B -:1003F000F8D3D1F8802C054BC3F8802CD1F8842C8D -:10040000C3F8842C7047000000F00308A8100020F7 -:1004100010B540F244620249024800F0CBF910BD29 -:10042000A810002000F0030810B50B480068401C1D -:10043000094908600846006844F62061884209D3EB -:1004400008460549086000BF00220121034801F069 -:1004500009F800BF10BD00002C000020000C014076 -:1004600010B500BF01221146034800F0FBFF00BF9A -:1004700000200249086010BD000C01402C00002043 -:1004800000BFFEE7F0B502460C46FF21FF2509E05C -:1004900012F8016B86EA0103084EF65C86EA050154 -:1004A000074EF55C261EA4F10107BCB2F0D1084648 -:1004B0004FF6FF7606EA00202843F0BD645200089C -:1004C00064530008F0B505460C46A01E2E5C4FF69E -:1004D000FF7000EA0626601E285C0643A01E81B25B -:1004E0002846FFF7CFFF0746BE4201D10120F0BDED -:1004F0000020FCE770B500BFD52003F09BF900BFDA -:100500000021084602F0BCFD002416E000250DE0A5 -:10051000002003F0C5F9002003F0C2F9002003F029 -:10052000BFF9002003F0BCF9681C85B2142DEFDB85 -:10053000002003F0B5F9601C84B2A02CE6DB70BD8E -:1005400010B5024800F0AAFA10BD000020100020EB -:1005500030B590F840500124AC40C56B6C60046825 -:1005600063604468102C04D10468A2600468E160F0 -:1005700003E00468A1600468E26030BD70470000D9 -:100580002DE9F84F81460F46904630A00068009054 -:1005900000BFD52003F04EF900BFB9F1A00F01D87C -:1005A000A02F01D9BDE8F88FC9F1A00040080321B0 -:1005B000B0FBF1F000F0FF0AC7F1A00007EB50001C -:1005C00000F0FF0B4FEAD90600243BE0ABEB040040 -:1005D000C1B2504602F054FD00252CE004FB065148 -:1005E00018F80110C943C1F381111DF8010003F08F -:1005F00057F904FB065118F80110C943C1F3011162 -:100600001DF8010003F04CF904FB065118F8011025 -:10061000C943C1F381011DF8010003F041F904FB56 -:10062000065118F80120032191431DF8010003F041 -:1006300037F9681CC5B2B542D0D3002003F030F9B9 -:10064000601CC4B2BC42C1D300BFABE7000FF0FFD7 -:100650000021074AD1610749096941F00401054AAF -:1006600011611146096941F04001116170470000B4 -:1006700068010020002002400021074AD16107499B -:10068000096941F00201054A116111464861096991 -:1006900041F04001116170476801002000200240D4 -:1006A0000022054BDA61054A126942F00102034B50 -:1006B0001A6101807047000068010020002002409C -:1006C00000201E49C96801F0100139B11C49C969EF -:1006D00041F002011A4AD16140F010001749C9687F -:1006E00001F0040139B11649C96941F00101144A08 -:1006F000D16140F004001149C96901F0010169B1FB -:100700000F49C96941F004010D4AD16100BF0B498D -:10071000C96921F00101094AD16100BF00BF40F25F -:100720000111884206D10549C96921F00101034A36 -:10073000D16101E00149C86000BF7047002002405C -:100740006801002070B5044600F092FE054609E0FD -:10075000601C38B124B100F08BFE401BA04201D9CF -:10076000032070BD1248C06800F001000028EFD1DE -:100770000F48C06800F0200020B100BF20200C49C5 -:10078000C86000BF0A48C06800F0100048B90848B7 -:10079000C06900F0010020B90548C06800F00400FD -:1007A00018B1FFF78DFF0120DBE70020D9E700003B -:1007B000002002402DE9F74F88B005469046A5F18C -:1007C0000060079007984FEAD02A4FF0006000EBD6 -:1007D000CA26A81B06904FEA480705950698384494 -:1007E0004FEAD02B4FF000090020009006983844C3 -:1007F000C0F30A0008B10BF1010BB5F1006F03D390 -:10080000E8192549884203D301200BB0BDE8F08FD9 -:10081000B6F1006F02D32048864201D30120F4E7ED -:1008200000F056FC0598C11906F5006081422ED3F0 -:10083000002414E0002001900396012004906946F2 -:1008400001A800F08BFB8146B9F1000F03D000F046 -:10085000DDFB4846D9E706F50066601C84B25C45BE -:10086000E8D3002410E0099830F814C005EB4401E7 -:1008700062460023012000F0D3FB8146B9F1000F4E -:1008800000D003E0601C84B24445ECDB00BF00F004 -:10089000BDFB4846B9E700000000040801460022FD -:1008A00091F82100022808D00420886300BF0020AE -:1008B00081F8200000BF012070470868006820F020 -:1008C0000E000B6818600868006820F001000B68D3 -:1008D000186091F8403001209840CB6B586001209F -:1008E00081F8210000BF002081F8200000BF1046E1 -:1008F000E2E7000070B50446002594F821000228C4 -:1009000003D00420A0630125C1E02068006820F026 -:100910000E00216808602068006820F0010021684E -:1009200008605C492068884252D95A497839206861 -:10093000884201D1012047E0564964392068884245 -:1009400001D1102040E0534950392068884201D13C -:10095000801539E04F493C392068884201D1801424 -:1009600032E04C4928392068884202D14FF4803067 -:100970002AE0484914392068884202D14FF4801097 -:1009800022E044492068884201D140041CE04249E9 -:100990002068884201D1012016E03F4914312068C7 -:1009A000884201D110200FE03B492831206888425D -:1009B00001D1801508E038493C312068884201D1D6 -:1009C000801401E04FF480303349091F086051E082 -:1009D000304978392068884201D1012047E02D490B -:1009E00064392068884201D1102040E029495039FB -:1009F0002068884201D1801539E026493C392068B9 -:100A0000884201D1801432E0224928392068884286 -:100A100002D14FF480302AE01E4914392068884200 -:100A200002D14FF4801022E01A492068884201D197 -:100A300040041CE018492068884201D1012016E0DA -:100A4000154914312068884201D110200FE0124965 -:100A500028312068884201D1801508E00E493C31D8 -:100A60002068884201D1801401E04FF480300949A8 -:100A700080394860012084F8210000BF002084F8FC -:100A8000200000BF606B10B12046616B884728468C -:100A900070BD0000800002400804024070B50446AA -:100AA000E06B05682068066894F8401004208840D0 -:100AB0002840002875D006F004000028FAD02068ED -:100AC000006800F0200028B92068006820F00400C9 -:100AD00021680860D5492068884254D9D3497839BB -:100AE0002068884201D1042049E0D0496439206857 -:100AF000884201D1402042E0CC49503920688842E8 -:100B000001D100153BE0C9493C392068884202D137 -:100B10004FF4804033E0C54928392068884202D12B -:100B20004FF480202BE0C14914392068884202D15B -:100B30004FF4800023E0BD492068884201D1C00401 -:100B40001DE0BB492068884201D1042017E0B84964 -:100B500014312068884201D1402010E0B449283186 -:100B60002068884201D1001509E0B1493C31206874 -:100B7000884202D14FF4804001E04FF48020AC491C -:100B8000091F086054E0A94978392068884201D1DA -:100B900004204AE0A54964392068884202D14020F7 -:100BA00043E04CE0A14950392068884201D100154A -:100BB0003BE09E493C392068884202D14FF4804096 -:100BC00033E09A4928392068884202D14FF48020C6 -:100BD0002BE0964914392068884202D14FF48000F6 -:100BE00023E092492068884201D1C0041DE0904969 -:100BF0002068884201D1042017E08D491431206813 -:100C0000884201D1402010E089492831206888427B -:100C100001D1001509E086493C312068884202D1A3 -:100C20004FF4804001E04FF48020804980394860D3 -:100C3000E06A002802D02046E16A8847F4E094F890 -:100C40004010022088402840002871D006F00200A1 -:100C50000028FAD02068006800F0200040B9206821 -:100C6000006820F00A0021680860012084F8210053 -:100C70006E492068884254D96C4978392068884286 -:100C800001D1022049E0694964392068884201D1D4 -:100C9000202042E0654950392068884201D1401542 -:100CA0003BE062493C392068884202D14FF4005051 -:100CB00033E05E4928392068884202D14FF4003081 -:100CC0002BE05A4914392068884202D14FF40010B1 -:100CD00023E056492068884201D180041DE0544930 -:100CE0002068884201D1022017E051491431206860 -:100CF000884201D1202010E04D49283120688842E7 -:100D000001D1401509E04A493C312068884202D1AE -:100D10004FF4005001E04FF400304549091F0860CE -:100D200054E0424978392068884202D102204AE0E2 -:100D300057E03E4964392068884201D1202042E0D2 -:100D40003A4950392068884201D140153BE0374983 -:100D50003C392068884202D14FF4005033E03349D7 -:100D600028392068884202D14FF400302BE02F4907 -:100D700014392068884202D14FF4001023E02B4937 -:100D80002068884201D180041DE0294920688842FA -:100D900001D1022017E0264914312068884201D190 -:100DA000202010E0224928312068884201D14015D6 -:100DB00009E01F493C312068884202D14FF40050BD -:100DC00001E04FF4003019498039486000BF00202D -:100DD00084F8200000BFA06A30B32046A16A88478B -:100DE00022E094F84010082088402840E0B106F046 -:100DF0000800C8B12068006820F00E002168086073 -:100E000094F8401001208840E16B48600120A06305 -:100E100084F8210000BF002084F8200000BF206B70 -:100E200010B12046216B884770BD00008000024051 -:100E3000080402400146002209B9012070471E4BF8 -:100E4000086898420BD21D4B0868C01A1423B0FBE7 -:100E5000F3F08000086419480838C8630AE0164BAC -:100E60000868C01A1423B0FBF3F08000086412482D -:100E70000838C863022081F821000868026843F638 -:100E8000F0708243D1E901031843CB6818430B6922 -:100E900018434B6918438B691843CB6918430243C5 -:100EA0000868026000208863012081F8210000208A -:100EB00081F8200000BFC1E708040240080002409A -:100EC0002DE9F04104460D4616461F464FF0000836 -:100ED00000BF94F82000012802D10220BDE8F08173 -:100EE000012084F8200000BF94F8210001282CD1B3 -:100EF000022084F821000020A0632068006820F010 -:100F00000100216808603B46324629462046FFF72B -:100F10001FFBE06A30B12068006840F00E002168D5 -:100F200008600BE02068006820F004002168086079 -:100F30002068006840F00A002168086020680068A6 -:100F400040F001002168086006E000BF002084F83E -:100F5000200000BF4FF002084046BFE72DE9F041F6 -:100F600004460E460127002500BF2648007E0128C2 -:100F700002D10220BDE8F08101202249087600BF9D -:100F80002068022813D14CF25030FFF7DBFB90BBF6 -:100F90000120FFF75DFB4CF25030FFF7D3FB074613 -:100FA0001948006920F004001749086123E04CF259 -:100FB0005030FFF7C7FBF0B94FF0FF303060A56845 -:100FC00012E02846FFF758FB4CF25030FFF7BAFB0F -:100FD00007460D48006920F002000B4908610FB177 -:100FE000356007E005F50065D4E9021001EBC0208B -:100FF000A842E6D800BF00BF00200249087600BF23 -:101000003846B7E768010020002002400348006925 -:1010100040F0800001490861002070470020024034 -:101020002DE9FE4F05468B461746984601260024BB -:101030000020029000BF2448007E012802D1022037 -:10104000BDE8FE8F01202049087600BF4CF25030E9 -:10105000FFF778FB064686BB012D02D101200290E6 -:1010600006E0022D02D10220029001E0042002904D -:1010700000241EE02201B946C24648465146FFF709 -:10108000C6F880B20190022000FB04B000900199E4 -:10109000FFF706FB4CF25030FFF754FB06460B48B7 -:1010A000006920F001000949086106B104E0601CF4 -:1010B000C4B202988442DDDB00BF00BF00200249B9 -:1010C000087600BF3046BBE76801002000200240E0 -:1010D00000200849096901F0800151B10649054A1B -:1010E0005160064951601146096901F0800101B162 -:1010F000012070470020024023016745AB89EFCDF6 -:101100002DE9F847024600239C467BE14FF0010899 -:1011100008FA03F4D1F8008008EA0400A0427DD167 -:10112000DFF8F4A2D1F80480A8EB0A09D0453AD040 -:1011300014DCB8F1030F50D009DCB8F1000F31D046 -:10114000B8F1010F1CD0B8F1020F49D120E0B8F17D -:10115000110F18D0B8F1120F42D11EE0B9F5881F57 -:1011600025D006DCB9F5803F20D0B9F5801F37D1F6 -:101170001AE0B9F5001F18D0B9F5041F30D117E0F7 -:10118000D1F80CC02DE0D1F80C8008F1040C28E057 -:10119000D1F80C8008F1080C23E0D1F80C8008F19C -:1011A0000C0C1EE000BF00BF00BF00BF00BF00BFAF -:1011B000D1F80880B8F1000F02D14FF0040C0BE019 -:1011C000D1F80880B8F1010F03D14FF0080C146179 -:1011D00002E04FF0080C546103E04FF0000C00E017 -:1011E00000BF00BFFF2801D8904601E002F10408CB -:1011F0004646FF2802D84FEA830803E0A3F1080817 -:101200004FEA88084746D6F800804FF00F0909FAE0 -:1012100007F928EA09080CFA07F900E07AE048EA39 -:101220000908C6F80080D1F8048008F08058B8F1A9 -:10123000805F6FD100BFDFF8E481D8F8188048F0F4 -:101240000108DFF8D891C9F81880C846D8F8188086 -:1012500008F00108CDF8008000BF00BF4FEAB938A0 -:101260004FEA930958F829504FEA83784FEA1879E2 -:101270004FF00F0808FA09F825EA0805DFF8A08101 -:10128000424502D14FF0000824E0DFF89881424542 -:1012900002D14FF001081DE0DFF88C81424502D1F8 -:1012A0004FF0020816E0DFF88481424502D14FF08A -:1012B00003080FE0DFF87881424502D14FF00408BF -:1012C00008E0DFF87081424502D14FF0050801E0E7 -:1012D0004FF006084FEA83794FEA197908FA09F8BE -:1012E00048EA0505DFF850814FEA930948F829508C -:1012F000D1F8048008F48018B8F5801F0BD1DFF80E -:101300003C81D8F8008048EA0008DFF83091C9F83D -:1013100000800AE075E0DFF82481D8F8008028EA30 -:101320000008DFF81891C9F80080D1F8048008F4AB -:101330000018B8F5001F0ED1DFF8008108F104088D -:10134000D8F8008048EA0008DFF8F09009F10409B5 -:10135000C9F800800DE0DFF8E48008F10408D8F84F -:10136000008028EA0008DFF8D49009F10409C9F8E0 -:101370000080D1F8048008F40038B8F5003F0ED1A1 -:10138000DFF8B880A8F10408D8F8008048EA00081F -:10139000DFF8A890A9F10409C9F800800DE0DFF892 -:1013A0009C80A8F10408D8F8008028EA0008DFF83B -:1013B0008C90A9F10409C9F80080D1F8048008F4E0 -:1013C0008038B8F5803F0ED1DFF87080A8F10808AA -:1013D000D8F8008048EA0008DFF86090A9F1080911 -:1013E000C9F800800DE0DFF85480A8F10808D8F8AB -:1013F000008028EA0008DFF84490A9F10809C9F83C -:1014000000805B1CD1F8008028FA03F8B8F1000FC7 -:101410007FF47CAEBDE8F887000011100010024098 -:1014200000080140000C0140001001400014014080 -:1014300000180140001C0140080001400804014060 -:10144000024693680B400BB1012000E0002070477A -:1014500010B5C26821EA020302EA010443EA044328 -:10146000036110BD0AB1016101E00B040361704723 -:1014700001480068704700001C0000200348006815 -:101480000349097808440149086070471C0000209E -:101490002400002010B50848006840F010000649FC -:1014A0000860032000F080F80F2000F007F800F03B -:1014B0002BF8002010BD00000020024070B504464B -:1014C0000E4800784FF47A71B1FBF0F00C490968CE -:1014D000B1FBF0F5284600F0F3FB08B1012070BD28 -:1014E000102C07D200222146501E00F01EF805489D -:1014F000046001E00120F2E70020F0E72400002072 -:101500000C000020200000207047014608460028FB -:1015100009DB00F01F0301229A4043099B0003F1FD -:10152000E023C3F8002100BF70472DE9F05F80463B -:101530000D461646002702F0E7F9074639462A46C7 -:10154000334601F00700C0F1070ABAF1040F02D9CF -:101550004FF0040A01E0C0F1070AD14600F1040A85 -:10156000BAF1070F02D24FF0000A01E0A0F1030A1E -:10157000D4464FF0010A0AFA09FAAAF1010A0AEA66 -:10158000020A0AFA0CFA4FF0010B0BFA0CFBABF152 -:10159000010B0BEA030B4AEA0B042146404602F01A -:1015A000BBF9BDE8F09F000000BF00F00702064B4A -:1015B00019684FF6FF031940044B0B4343EA02211D -:1015C000014B196000BF70470CED00E00000FA0508 -:1015D00000BF00BF00BF00BF00BFBFF34F8F00BF01 -:1015E00000BF00BF0948006800F4E06008490843F4 -:1015F000001D0649086000BF00BF00BFBFF34F8F4A -:1016000000BF00BF00BF00BF00BFFDE70CED00E062 -:101610000000FA0570B504460D460CB9012070BDF6 -:101620005A48006800F00700A8420ED257480068E8 -:1016300020F007002843554908600846006800F07C -:101640000700A84201D00120E9E7207800F002005D -:1016500002281DD1207800F00400042805D14C4850 -:10166000406840F4E0604A494860207800F0080093 -:10167000082805D14648406840F460504449486015 -:101680004348406820F0F000A168084340494860A2 -:10169000207800F0010078B36068012806D13C484A -:1016A000006800F4003090B90120B8E760680228B3 -:1016B00006D13748006800F0007040B90120AEE75D -:1016C0003348006800F0020008B90120A7E730485D -:1016D000406820F00300616808432D494860FFF727 -:1016E000C7FE064609E0FFF7C3FE801B41F28831C2 -:1016F000884202D9032092E707E02548406800F0BD -:101700000C006168B0EB810FEDD12048006800F05B -:101710000700A8420ED91D48006820F007002843A2 -:101720001A4908600846006800F00700A84201D086 -:10173000012074E7207800F00400042807D1144841 -:10174000406820F4E060E16808431149486020786F -:1017500000F00800082808D10D48406820F46050C7 -:10176000216940EAC1000A49486000F03FF8084991 -:101770004968C1F30311074A515CC8400649086033 -:1017800006480068FFF79AFE002048E70020024064 -:1017900000100240C83E00080C000020200000207D -:1017A00001480068704700000C00002000B5FFF7FA -:1017B000F7FF04494968C1F30221034A515CC8405C -:1017C00000BD000000100240D83E000800B5FFF741 -:1017D000E7FF04494968C1F3C221034A515CC8408C -:1017E00000BD000000100240D83E000870B5002186 -:1017F0000022002400230020134D696801F00C052D -:10180000F5B1042D02D0082D19D101E00F4819E0DF -:101810000F4DC1F38346AB5D01F4803555B10A4DE0 -:101820006D68C5F340450B4E725D084D5D43B5FBD9 -:10183000F2F402E0084D03FB05F4204602E000BF8D -:10184000024800BF00BF70BD0010024000127A00C5 -:10185000E03E0008F03E000800093D00F8B50446EF -:101860000CB90120F8BD207800F00100002878D0E4 -:10187000F848406800F00C0004280CD0F548406897 -:1018800000F00C00082811D1F248406800F48030C4 -:10189000B0F5803F0AD1EF48006800F4003000281E -:1018A0005FD0606800285CD10120DBE700BF606882 -:1018B000B0F5803F06D1E748006840F48030E54944 -:1018C000086028E0606858B9E248006820F4803079 -:1018D000E04908600846006820F4802008601AE0AB -:1018E0006068B0F5A02F0BD1DA48006840F4802082 -:1018F000D84908600846006840F4803008600AE073 -:10190000D448006820F48030D24908600846006856 -:1019100020F48020086000BF606888B1FFF7A8FD50 -:10192000054606E0FFF7A4FD401B642801D903200B -:1019300098E7C848006800F400300028F2D010E0B2 -:10194000FFF796FD054606E0FFF792FD401B642871 -:1019500001D9032086E7BF48006800F40030002862 -:10196000F2D1207800F00200022857D1B94840682F -:1019700000F00C0050B1B748406800F00C00082897 -:1019800018D1B448406800F4803098B9B148006874 -:1019900000F0020020B12069012801D0012061E798 -:1019A000AC48006820F0F800616940EAC100A9492C -:1019B000086033E02069E8B10120A7490860FFF71B -:1019C00057FD054606E0FFF753FD401B022801D9ED -:1019D000032047E79F48006800F002000028F2D08B -:1019E0009C48006820F0F800616940EAC10099490C -:1019F000086013E0002098490860FFF739FD0546AC -:101A000006E0FFF735FD401B022801D9032029E736 -:101A10009048006800F002000028F2D1207800F021 -:101A2000080008282DD1A069B8B101208B490860B1 -:101A3000FFF71EFD054606E0FFF71AFD401B0228D2 -:101A400001D903200EE78348406A00F00200002815 -:101A5000F2D0012001F0CCF813E000207F490860AB -:101A6000FFF706FD054606E0FFF702FD401B0228D2 -:101A700001D90320F6E67748406A00F0020000280A -:101A8000F2D1207800F00400042873D100277148B7 -:101A9000C06900F0805070B900BF6E48C06940F066 -:101AA00080506C49C8610846C06900F080500090C1 -:101AB00000BF00BF01276A48006800F48070B0B919 -:101AC0006748006840F4807065490860FFF7D0FC03 -:101AD000054606E0FFF7CCFC401B642801D9032033 -:101AE000C0E65F48006800F480700028F2D000BFB4 -:101AF000E068012806D15748006A40F001005549C6 -:101B0000086227E0E06858B95248006A20F00100F6 -:101B1000504908620846006A20F00400086219E093 -:101B2000E06805280BD14B48006A40F004004949A1 -:101B300008620846006A40F0010008620AE0454871 -:101B4000006A20F00100434908620846006A20F05C -:101B50000400086200BFE068A0B1FFF789FC0546F9 -:101B600009E0FFF785FC401B41F28831884202D929 -:101B7000032077E622E03748006A00F002000028E0 -:101B8000EFD012E0FFF774FC054608E0FFF770FCA9 -:101B9000401B41F28831884201D9032062E62D487A -:101BA000006A00F002000028F0D1012F05D1294879 -:101BB000C06920F080502749C86100BFE069C8B300 -:101BC0002448406800F00C00082860D0E069022832 -:101BD00048D1002020490866FFF74AFC054606E088 -:101BE000FFF746FC401B022801D903203AE61948BA -:101BF000006800F000700028F2D1206AB0F5803F44 -:101C000007D11448406820F40030A1680843114906 -:101C10004860D4E9080108430E49496821F4741169 -:101C200008430C49486001200B490866FFF720FC77 -:101C3000054607E03DE0FFF71BFC401B022801D9E9 -:101C400003200FE60348006800F000700028F2D07F -:101C50002FE0000000100240000042428004424297 -:101C600000700040002014490866FFF701FC05469B -:101C700006E0FFF7FDFB401B022801D90320F1E538 -:101C80000E48006800F000700028F2D111E0E06911 -:101C9000012800D1E6E50948466806F48031206A4B -:101CA000814204D106F47011606A814201D00120A2 -:101CB000D8E50020D6E500000000424200100240B6 -:101CC00070B504462546681EB0F1807F01D301201F -:101CD0000FE0681E4FF0E02148610F214FF0FF3008 -:101CE00001F01AFE00204FF0E02188610720086112 -:101CF000002070BD10B504460CB9012010BD94F849 -:101D00003D0028B9002084F83C00204600F025F86A -:101D1000022084F83D00211D206801F007FA01200F -:101D200084F8460000BF84F83E0001213F200155A1 -:101D3000402001554120015500BF00BF012084F81B -:101D4000420043200155442001554520015500BF64 -:101D5000012084F83D000020D0E77047014691F84B -:101D60003D00012801D001207047022081F83D008C -:101D70000868C06840F001000B68D860164B08681E -:101D8000984213D0154B086898420FD00868B0F1FC -:101D9000804F0BD0124B0868984207D0114B08684F -:101DA000984203D0104B086898420CD108688068AC -:101DB00000F00702062A0CD00868006840F0010015 -:101DC0000B68186005E00868006840F001000B68C7 -:101DD00018600020C8E70000002C014000340140DA -:101DE0000004004000080040000C0040F8B5044624 -:101DF0000D46164694F8420020282DD105B10EB9A3 -:101E00000120F8BD0120206300206063324629468E -:101E1000204601F0D5FB0746206B012819D100BFF1 -:101E200000200090206800680090206840680090C2 -:101E300000BF00BF00BF00BF21680C3151E8001F88 -:101E400041F0100021680C3141E80002002AF3D172 -:101E500000E001273846D4E70220D2E770B50446F7 -:101E60000D4607492068884208D1012005490870BD -:101E700040F68842491C0448FFF7B8FF70BD0000D7 -:101E80000044004044030020D80F002070470000A9 -:101E90002DE9F84F0446206805682068C668206868 -:101EA00047694FF00009CA4605F00F09B9F1000F64 -:101EB0000AD105F0200038B106F0200020B12046FC -:101EC00001F081FABDE8F88FB9F1000F7BD007F07F -:101ED000010018B906F49070002874D005F00100D4 -:101EE00030B106F4807018B1606C40F0010060649D -:101EF00005F0040030B107F0010018B1606C40F04B -:101F00000200606405F0020030B107F0010018B172 -:101F1000606C40F00400606405F0080048B106F011 -:101F2000200010B907F0010018B1606C40F0080003 -:101F30006064606C002845D005F0200028B106F0F0 -:101F4000200010B1204601F03EFA20684069C0F33D -:101F5000801A606C00F0080010B9BAF1000F2CD0A4 -:101F6000204601F0D7F92068406900F0400000B336 -:101F700000BF00BF2168143151E8001F21F040006C -:101F80002168143141E80002002AF3D100BFE06B60 -:101F900050B17748E16B4863E06BFEF7ABFC88B16A -:101FA000E06B416B88470DE02046FFF76FFF09E0CB -:101FB00009E02046FFF76AFF04E02046FFF766FFCE -:101FC000002060647EE7206B012877D105F01000C7 -:101FD000002873D006F010000028FAD000BF0020BF -:101FE000009020680068009020684068009000BF62 -:101FF00000BF2068406900F0400000285FD0E06B1F -:10200000006840681FFA80F8B8F1000F55D0A08D25 -:10201000404552DDA4F82E80E06B8069202843D033 -:1020200000BF00BF21680C3151E8001F21F480700F -:1020300021680C3141E80002002AF3D100BF00BF43 -:1020400000BF2168143151E8001F21F00100216810 -:10205000143141E80002002AF3D100BF00BF00BFE5 -:102060002168143151E8001F21F04000216814312B -:1020700041E80002002AF3D100BF202084F842008A -:102080000020206300BF00BF21680C3151E8001F11 -:1020900021F0100021680C3141E80002002AF3D140 -:1020A00000BFE06BFEF7FAFB02206063A08DE28DBB -:1020B000801A81B22046FFF7D1FE03E742E0A08DEF -:1020C000E18D401A1FFA80F8E08DD0B3B8F1000F0F -:1020D00037D000BF00BF21680C3151E8001F21F448 -:1020E000907021680C3141E80002002AF3D100BF52 -:1020F00000BF00BF2168143151E8001F21F001002A -:102100002168143141E80002002AF3D100BF2020E9 -:1021100084F842000020206300BF00BF21680C311A -:1021200051E8001F21F0100021680C3141E8000245 -:10213000002AF3D100BF0220606341462046FFF72A -:102140008DFEBFE605F0800030B106F0800018B1CA -:10215000204601F0B9FAB5E605F0400030B106F0CE -:10216000400018B1204601F00BF9ABE600BFA9E62C -:10217000D931000810B504460CB9012010BDA06982 -:1021800000B100E000BF94F8410028B9002084F8B5 -:102190004000204600F02AF8242084F841002068FE -:1021A000C06820F400502168C860204601F08AF918 -:1021B0002068006920F49040216808612068406927 -:1021C00020F02A00216848612068C06840F400506F -:1021D0002168C86000206064202084F8410084F8F1 -:1021E00042000020606300BFC8E7000010B586B061 -:1021F00004462849206888424AD100BF00BF2648CB -:10220000806940F00400244988610846806900F034 -:102210000400019000BF00BF00BF00BF00BF084620 -:10222000806940F0040088610846806900F004007D -:10223000019000BF00BF00BF00BF00BF084680691B -:1022400040F4804088610846806900F48040019035 -:1022500000BF00BF00BF481502900220039001207C -:1022600004900320059002A90C48FEF749FF4FF4A3 -:10227000806002900020039002A90848FEF740FF0A -:102280002520FFF742F9032211462520FFF74DF9DB -:1022900006B010BD003801400010024000080140A7 -:1022A00070B504460D46164694F8420020280BD11E -:1022B00005B10EB9012070BD0020206332462946C9 -:1022C000204601F0E1F9F6E70220F4E710B50446F4 -:1022D0002049206888423BD11F48008800F4004014 -:1022E00088BB1D48008800F4804070B11B4800780E -:1022F0000A2803D000201849088024E016480088E6 -:1023000040F40040144908801DE0144800780D286E -:1023100006D11148008840F480400F49088012E03F -:102320000E4800780C490988C1F30D010C4A50543D -:1023300009480088401C0849088008460088C728CA -:1023400001DD00200880012204490648FFF7A8FFAC -:1023500010BD000000380140180000201A000020C5 -:10236000540000201C01002070472DE9F84F04465E -:102370000E46174699464FF0000A94F8410020286F -:1023800050D106B117B90120BDE8F88F0020606474 -:10239000212084F84100FFF76BF88246A784E78488 -:1023A000A068B0F5805F04D1206910B90025B0465F -:1023B00002E035464FF000081EE05346002280211F -:1023C0002046CDF8009001F0AFF920B1202084F82C -:1023D00041000320D8E745B9B8F80000C0F3080071 -:1023E0002168486008F1020803E028782168486005 -:1023F0006D1CE08C401EE084E08C0028DDD153464B -:10240000002240212046CDF8009001F08DF920B146 -:10241000202084F841000320B6E7202084F8410002 -:102420000020B1E70220AFE7704700BFFEE70000E1 -:1024300008B5434A811A904241D009DC4149014420 -:1024400081B1B1F5806F1CD0B1F5006F74D127E078 -:10245000B1F5806F42D0B1F5006F4ED0B1F5406F4D -:102460006AD159E000BF3849896941F00401364A10 -:1024700091611146896901F00401009100BF00BF1C -:102480005BE000BF3049896941F008012E4A916143 -:102490001146896901F00801009100BF00BF4CE0BE -:1024A00000BF2949896941F01001274A916111460D -:1024B000896901F01001009100BF00BF3DE000BF3D -:1024C0002149896941F020011F4A916111468969BA -:1024D00001F02001009100BF00BF2EE000BF1A49AB -:1024E000896941F04001184A91611146896901F0FA -:1024F0004001009100BF00BF1FE000BF1249896981 -:1025000041F08001104A91611146896901F0800112 -:10251000009100BF00BF10E000BF0B49896941F482 -:102520008071094A91611146896901F480710091B5 -:1025300000BF00BF01E0FFE700BF00BF08BD000013 -:102540000014014000F8FEBF0010024070B50446C0 -:10255000002500267CB180220021084601F096FC6F -:1025600080220121002001F091FC80220321002023 -:1025700001F08CFC0EE000221146104601F086FCB2 -:1025800000220121104601F081FC002203211046A7 -:1025900001F07CFC70BD000010B507480068401CCD -:1025A00005490860084600680F2804D30F2008601A -:1025B0000020FFF7CBFF10BD0800002010B586B04B -:1025C00000BF2F48806940F001002D49886108460E -:1025D000806900F00100019000BF00BF00BF2949E1 -:1025E000486820F0E06040F00070486000BF0020C4 -:1025F000029003900490059000243DE004EB440118 -:10260000214A02EB81014868FFF712FF04EB440006 -:102610001D4931F82000029000200390049003200F -:10262000059004EB4401184A02EB8101486802A9B5 -:10263000FEF766FD04EB440101EBC401134A02EB13 -:10264000810023460022124901F0D6FA04EB44012E -:1026500001EBC4010D4A02EB81000E4A032101F097 -:1026600071F904EB440101EBC401084A02EB81005B -:1026700001F0FEFA601CC4B2082CBFD306B010BD36 -:10268000001002400000014004520008E401002054 -:10269000493C00085939000810B50446FDF7E0FE32 -:1026A0000120FFF753FF0020024908600248047030 -:1026B00010BD00000800002005000020014908604E -:1026C000704700002800002000B585B000BF1A4800 -:1026D000806940F00800184988610846806900F068 -:1026E0000800009000BF00BF00BF0846806940F0AE -:1026F000400088610846806900F04000009000BFFB -:1027000000BF47F601400190012002900390032092 -:10271000049001A90948FEF7F3FC4FF47F400190B3 -:102720000120029003900320049001A90448FEF7C1 -:10273000E7FC05B000BD000000100240000C0140A5 -:102740000018014010B5E92001F074F82B2001F0C9 -:1027500071F8242001F06EF8812001F06BF8BE20A2 -:1027600001F068F8A42001F065F8A62001F062F8F5 -:10277000C02001F05FF8A32001F05CF8D12001F047 -:1027800059F8D52001F056F8DA2001F053F8F4207A -:1027900001F050F8252001F04DF8F62001F04AF83C -:1027A0005A2001F047F8F52001F044F8002001F02C -:1027B00041F8F72001F03EF89F2001F03BF8F820A7 -:1027C00001F038F8892001F035F8AD2001F032F839 -:1027D000402001F02FF8502001F02CF8C42001F027 -:1027E00029F8902001F026F8FF2001F023F884203A -:1027F00001F020F8F12001F01DF89F2001F01AF8F7 -:1028000010BD000010B500BF012291020E48FEF776 -:1028100029FE00BF0A2001F059FA00BF00224FF440 -:1028200080610948FEF71EFE00BF022001F04EFA4B -:1028300000BF012291020448FEF714FE00BF96205B -:1028400001F044FA10BD0000000C014008B5434AF5 -:10285000811A904241D009DC4149014481B1B1F56E -:10286000806F1CD0B1F5006F74D127E0B1F5806F97 -:1028700042D0B1F5006F4ED0B1F5406F6AD159E04A -:1028800000BF3849896941F00401364A9161114617 -:10289000896901F00401009100BF00BF5BE000BF47 -:1028A0003049896941F008012E4A916111468969D0 -:1028B00001F00801009100BF00BF4CE000BF2949B2 -:1028C000896941F01001274A91611146896901F037 -:1028D0001001009100BF00BF3DE000BF21498969A0 -:1028E00041F020011F4A91611146896901F02001E0 -:1028F000009100BF00BF2EE000BF1A49896941F076 -:102900004001184A91611146896901F04001009126 -:1029100000BF00BF1FE000BF1249896941F080017C -:10292000104A91611146896901F08001009100BF50 -:1029300000BF10E000BF0B49896941F48071094A6A -:1029400091611146896901F48071009100BF00BF57 -:1029500001E0FFE700BF00BF08BD00000014014018 -:1029600000F8FEBF001002401FB5002447E02749D1 -:1029700001EB04110868FFF769FF244800EB04101D -:102980008088009001200190204800EB04108068AE -:1029900003901E4800EB0410C06802901B4901EB35 -:1029A000041108686946FEF7ABFB184B03EB0413F0 -:1029B000DA79164B03EB04139988144B03EB0413D9 -:1029C0001868FEF74FFD114800EB0410807950B9EC -:1029D0000E4800EB0410C07908B9012000E0002087 -:1029E0000B49085509E0094800EB0410C07901289B -:1029F00000D100E0002006490855601CC4B2142C28 -:102A0000B5DB0121002000F06FF81FBDF43E000887 -:102A10008801002070B50446142C00DB70BD0C4802 -:102A200000EB0410807908B9012500E00025084A70 -:102A300002EB04129188064A02EB041210682A463F -:102A4000FEF710FD00200349085500BFE6E700002F -:102A5000F43E00088801002070B50446142C00DB09 -:102A600070BD0C4800EB0410807908B9002500E027 -:102A70000125084A02EB04129188064A02EB04126F -:102A800010682A46FEF7EEFC01200349085500BFF6 -:102A9000E6E70000F43E0008880100202DE9F0413F -:102AA0000446E0780006A17840EA0140617840EAF7 -:102AB0000120217840EA010600250121002000F0D4 -:102AC00013F801250CE00120A840304008B1012096 -:102AD00000E000200746E8B2394600F005F86D1C1A -:102AE000142DF0D3BDE8F08170B505460C46012CDD -:102AF00003D12846FFF7B0FF02E02846FFF78AFF20 -:102B000070BD000010B50446142C00DB10BD0A4A4D -:102B100002EB04129188084A02EB04121068FEF7D7 -:102B200097FC0648005D012801D0012000E000204C -:102B30000249085500BFE9E7F43E0008880100207B -:102B400010B5044AD2F8841CD2F8800CFDF718FDA9 -:102B500010BD0000A810002010B5FFF7B5FD00BFA4 -:102B6000012211460548FEF77DFC00BFFFF74AFE33 -:102B7000FFF7E8FDFDF7BEFC10BD0000000C0140B2 -:102B800000BFFEE710B5FDF729FCFFF7D9FF4FF4B2 -:102B9000FA7001F09BF84FF4FA7001F097F84FF4D7 -:102BA000FA7001F093F84FF4FA7001F08FF810BD4D -:102BB00000BFFEE77047000006480078401C05494A -:102BC00008700846007918B108464079401C4871E1 -:102BD0007047000038000020002004498871087107 -:102BE0004871C871012048807047000038000020FB -:102BF00008B508490968C9084FF47A72B1FBF2F1C7 -:102C00004143009100BF00BF00994A1E0092002975 -:102C1000F9D108BD0C00002000B585B000BF00BF91 -:102C20005348806940F00400514988610846806932 -:102C300000F00400009000BF00BF00BF00BF00BF55 -:102C40000846806940F0040088610846806900F009 -:102C50000400009000BF00BF00BF00BF00BF0846D7 -:102C6000806940F0040088610846806900F0040033 -:102C7000009000BF00BF00BF00BF00BF0846C06992 -:102C800040F40030C8610846C06900F4003000908C -:102C900000BF00BF00BF002001900290039004908D -:102CA0000420019002200290012003900320049050 -:102CB00001A93048FEF724FA082001900020029074 -:102CC00001A92C48FEF71CFA022001900120029075 -:102CD00001A92848FEF714FA27482849086000206F -:102CE00048600021254881608021C1600021016188 -:102CF000416181614FF44051C161FEF79BF800BF13 -:102D00001E481F49C86308461C49486200BF10207E -:102D1000FEF7FBFB002211461020FEF706FC1948C7 -:102D20001749086018484860002115488160C16053 -:102D3000016181610C2141610021C161FFF71AFA33 -:102D40002620FEF7E2FB002201212620FEF7EDFB04 -:102D500000BF012202210748FEF784FB00BF40F6B6 -:102D600088420A490648FFF741F805B000BD000057 -:102D700000100240000801406C00024020100020BA -:102D8000D80F00200044004060AE0A004503002038 -:102D900070B504460D462E462CB15D480078A04221 -:102DA00001D05B4804705B480078002876D0002092 -:102DB00058490870012640F688415648401CFDF7E6 -:102DC00081FB012854D10020534908604FF4486228 -:102DD0005049491C5148FDF72DFA514951480268A4 -:102DE0000A604068486008460079892834D108465E -:102DF0004079452830D14FF4486248494A48FDF7A8 -:102E00005EFA474840784649097840EA0120464939 -:102E1000C1F8800C4248C0784149897840EA0120D5 -:102E20004149C1F8840CFDF7F3FAFDF719FBFDF7F2 -:102E300061FBFFF785FE4FF4FA7000F047FF4FF497 -:102E4000FA7000F043FF4FF4FA7000F03FFF4FF4C8 -:102E5000FA7000F03BFF19E034492E48D0F8810C9D -:102E600008600846FFF71AFE2C4800F0BDF80DE098 -:102E700029480068401C2849086008460068032863 -:102E800004D3FFF7C9FE0020234908600020284929 -:102E9000887108714871C8710120488024484088B1 -:102EA00010B923488079B0B11948007838B1184872 -:102EB0000178002000F082F80020154908701C48B5 -:102EC0000078372807DD12480178012000F076F8F5 -:102ED00000200F49087016484079282808DD012095 -:102EE00013498871002048710846C079401CC87198 -:102EF0000F48C079052808DB002605200C49C87159 -:102F0000FFF78AFE01200A494880304670BD000064 -:102F1000400000204403002050000020301D00200D -:102F200045000020C50F0020A8100020410000200F -:102F3000380000202DE9FC4104460D4616460027C6 -:102F400001208DF800008DF801408DF802508DF8B9 -:102F5000036004216846FDF795FA074638128DF89C -:102F60000400F8B28DF805000621684600F008F864 -:102F7000002002494880BDE8FC81000038000020A4 -:102F800070B504460D4600BF002202210948FEF735 -:102F900069FA00BFAAB24FF47A7321460648FFF7D8 -:102FA000E4F900BF012202210248FEF75BFA00BFEC -:102FB00070BD000000080140D80F002070B5044625 -:102FC0000D462A4621460320FFF7B4FF002004499E -:102FD00048800870012008710020487170BD000011 -:102FE0003800002070470000F8B5064600BFD52025 -:102FF00000F020FC00BF21A00068009000210846DE -:1030000000F03EF8002436E000252DE004EB8401BA -:1030100005EB8101715C6A4602EB9111087800F0C2 -:103020003FFC04EB840105EB8101715CC1F30111EC -:103030001DF8010000F034FC04EB840105EB810174 -:10304000715CC1F381011DF8010000F029FC04EB63 -:10305000840105EB8101715C01F003011DF80100A1 -:1030600000F01EFC681C85B2142DCFDB002000F0A0 -:1030700017FC601C84B2A02CC6DBF8BD000FF0FF6B -:1030800070B504460D4604F12500C4B204F00F00EB -:1030900000F0D0FBC4F3021141F0100000F0CAFBB5 -:1030A00005F00F0141F0600000F0C4FB702141EA1F -:1030B000151000F0BFFB70BD10B5FEF7DFF910BDB5 -:1030C0007047000010B515480068006900F0010065 -:1030D00010B313480068401C114908600846006896 -:1030E000C821B0FBF1F201FB120010B901200D491B -:1030F000087000F0D7FD00BF01210B48FEF7A8F9CA -:1031000000BFFDF791F9FFF757FDFFF745FA6FF0A4 -:10311000010002490968086110BD00009C010020FF -:1031200000000020040000200008014010B50268E3 -:10313000244B98420ED0244B98420BD0B0F1804FD4 -:1031400008D0224B984205D0214B984202D0214B07 -:10315000984203D122F070024B681A43194B9842EF -:103160000ED0194B98420BD0B0F1804F08D0174BBE -:10317000984205D0164B984202D0164B984203D184 -:1031800022F44072CB681A4322F080034C6943EA70 -:10319000040202608B68C3620B688362094B984229 -:1031A00002D0094B984201D10B69036301234361AB -:1031B000036903F001031BB1036923F001030361F9 -:1031C00010BD0000002C014000340140000400400C -:1031D00000080040000C004070B505466C6A0020F5 -:1031E000E085E0842046FEF751FE70BD70B50646CE -:1031F0000025746A20684069C0F3C01594F8410046 -:10320000212805D125B10020E084204600F0C8F82F -:1032100020684069C0F3801594F84200222805D147 -:1032200025B10020E085204600F074F8606C40F085 -:10323000100060642046FEF729FE70BD70B505469B -:103240006C6A2868006800F02000002842D1E08500 -:1032500000BF00BF21680C3151E8001F21F48070CD -:1032600021680C3141E80002002AF3D100BF00BF01 -:1032700000BF2168143151E8001F21F001002168CE -:10328000143141E80002002AF3D100BF00BF00BFA3 -:103290002168143151E8001F21F0400021681431E9 -:1032A00041E80002002AF3D100BF202084F8420048 -:1032B000206B01280ED100BF00BF21680C3151E8FE -:1032C000001F21F0100021680C3141E80002002AA3 -:1032D000F3D100BF00206063206B012804D1A18DD1 -:1032E0002046FEF7BBFD02E02046FEF7EFFF70BD73 -:1032F00070B505466C6A01206063206B012805D11A -:10330000A08D41082046FEF7A9FD02E02046FFF708 -:103310002BF870BD00BF00BF02680C3252E8002FCE -:1033200022F4907102680C3242E80013002BF3D1B2 -:1033300000BF00BF00BF0268143252E8002F22F025 -:1033400001010268143242E80013002BF3D100BFE0 -:10335000016B01290ED100BF00BF02680C3252E898 -:10336000002F22F0100102680C3242E80013002BFB -:10337000F3D100BF202180F8421000210163704783 -:1033800010B504462068C06820F040002168C8607D -:10339000202084F841002046FFF746F8002010BDA9 -:1033A00000BF00BF02680C3252E8002F22F0C001BB -:1033B00002680C3242E80013002BF3D100BF202139 -:1033C00080F841107047F8B5044694F8420022286E -:1033D00075D1A068B0F5805F0CD1206950B9002587 -:1033E000A66A20684068C0F308003080A06A801C8C -:1033F000A06215E0A56A0026A068B0F5805F03D042 -:10340000A06828B9206918B920684068287004E0CD -:103410002068406800F07F002870A06A401CA0620D -:10342000E08D401E80B2E085002846D12068C0684B -:1034300020F020002168C8602068C06820F48070F7 -:103440002168C8602068406920F001002168486157 -:10345000202084F8420000206063206B012826D1E0 -:103460000020206300BF00BF21680C3151E8001F1D -:1034700021F0100021680C3141E80002002AF3D14C -:1034800000BF2068006800F0100010280AD100BFBB -:10349000002000902068006800902068406800903C -:1034A00000BF00BFA18D2046FEF7D8FC02E02046F9 -:1034B000FEF70CFF0020F8BD01E00020FBE7022032 -:1034C000F9E7000070B504462168096921F440510C -:1034D000E2681143226811612269A168114362699F -:1034E00041EA02052168C96841F20C62914329430F -:1034F0002268D1602168496921F44071A2691143B1 -:10350000226851612D4A2168914202D1FEF75EF98D -:1035100001E0FEF74BF900EBC00101EB001162681E -:103520009200B1FBF2F100EBC00202EB0012636803 -:103530009B00B2FBF3F26423B2FBF3F202EBC20393 -:1035400003EB0212A1EB8201322202EB0111642291 -:10355000B1FBF2F101F0F00100EBC00202EB00124E -:1035600063689B00B2FBF3F26423B2FBF3F201EB5E -:10357000021200EBC00101EB001163689B00B1FB7C -:10358000F3F100EBC00303EB00136668B600B3FB76 -:10359000F6F36426B3FBF6F303EBC30606EB031363 -:1035A000A1EB8301322303EB01116423B1FBF3F19F -:1035B00001F00F0111442268916070BD0038014094 -:1035C00077B581B0044615460298A062A585002013 -:1035D0006064222084F842002848E16B8862284811 -:1035E000E16BC8622748E16B08630020E16B486328 -:1035F00002AE32682368191D2B46E06BFDF760FCB4 -:1036000000BF00200090206800680090206840689B -:10361000009000BF00BF206970B100BF00BF2168EB -:103620000C3151E8001F41F4807021680C3141E8F1 -:103630000002002AF3D100BF00BF00BF216814318F -:1036400051E8001F41F001002168143141E80002F7 -:10365000002AF3D100BF00BF00BF2168143151E838 -:10366000001F41F040002168143141E80002002AA7 -:10367000F3D100BF002004B070BD00003D3200084F -:10368000F1320008ED31000810B5034699629A85C1 -:10369000DA8500205864222083F84200186928B196 -:1036A0001868C06840F480701C68E0601868406961 -:1036B00040F001001C6860611868C06840F020009C -:1036C0001C68E060002010BD014691F841002128EF -:1036D00028D18868B0F5805F0BD1086948B90A6ABB -:1036E0001088C0F308000B685860086A801C0862E4 -:1036F00005E00B6A581C086218780B685860C88C83 -:10370000401E80B2C88458B90868C06820F08000A4 -:103710000B68D8600868C06840F040000B68D8604B -:10372000002070470220FCE72DE9F84304460D46CF -:1037300017469846089E31E0701C70B3FDF798FE5E -:10374000A0EB0800B04200D816B90320BDE8F8830A -:103750002068C06800F00400F8B1802D1ED0402D14 -:103760001CD020680068C0F3C000B0B100BF0020CA -:10377000009020680068009020684068009000BFBA -:1037800000BF2046FFF7C6FD0820606400BF002090 -:1037900084F8400000BF0120D8E7FFE720680068F8 -:1037A0002840A84201D1012000E00020B842C3D047 -:1037B0000020CBE70021044A1268D1B241EA00227E -:1037C000014B1A60704700000C18014010B5024808 -:1037D000FEF75EFB10BD00001C01002010B5024882 -:1037E000FEF756FB10BD0000D80F002000BFFEE71B -:1037F00000B585B000BF00BF0C48806940F00400F0 -:103800000A4988610846806900F00400009000BF02 -:1038100000BF00BF0120019002900390032004909C -:1038200001A90348FDF76CFC05B000BD0010024083 -:103830000008014010B5044600BF00224FF480414B -:103840001648FDF70FFE00BF00BF01221103134809 -:10385000FDF708FE00BF2046FFF7ACFF00BF0022C7 -:103860004FF400610D48FDF7FDFD00BF00BF0022D1 -:103870004FF400510948FDF7F5FD00BF00BF0122DC -:1038800051030648FDF7EEFD00BF00BF0122D10243 -:103890000248FDF7E7FD00BF10BD0000000C01402D -:1038A00010B5044600BF012291031648FDF7DAFD6A -:1038B00000BF00BF012211031248FDF7D3FD00BF76 -:1038C0002046FFF777FF00BF00224FF400610D484C -:1038D000FDF7C8FD00BF00BF00224FF400510948AA -:1038E000FDF7C0FD00BF00BF012251030548FDF7F1 -:1038F000B9FD00BF00BF0122D1020248FDF7B2FDB1 -:1039000000BF10BD000C014002480068C0F3022057 -:10391000704700000CED00E010B5002804DB0A073A -:10392000130E054A135406E00A07140E034A00F06A -:103930000F031B1FD45410BD00E400E018ED00E09D -:1039400000BF704708B1072900DB704700F10C0386 -:1039500043F8212000BFF8E770B504467CB1084861 -:10396000006860B12579082D08D205EB4501054AAC -:1039700002EB8101087A02490968884700BF70BDDF -:10398000280000200452000870B5044600BF2079CA -:10399000A16888470546E07800F00700002802DDAE -:1039A0002088401C2080E078B5EBD01F13D0E07851 -:1039B000C008401CE17860F3C501E170C1F3C200AA -:1039C00003280CDBE07865F3C710E070E07820F0A6 -:1039D0003800E07003E0E07820F03800E070E07834 -:1039E00000F0070005287DD2DFE800F0032858AF7B -:1039F000DB00E078C0F38010E178B0EBD11F17D185 -:103A0000A07820F0F000A07000BFE06810B1204660 -:103A1000E168884700BF00202080A07820F00F00D8 -:103A2000401CA070E07820F00700401CE07004E02B -:103A3000A07820F0F0008030A070DBE0E078C0F3E8 -:103A40008010E178B0EBD11F13D0A07820F0F00007 -:103A50001030A07000BF206910B12046216988474E -:103A600000BF00202080E07820F00700801CE0707C -:103A700013E02088C82810DDA07820F0F000503036 -:103A8000A07000BF206A10B12046216A884700BF9D -:103A9000E07820F00700001DE070ABE0E078C0F3B4 -:103AA0008010E178B0EBD11F25D1A07820F0F00094 -:103AB000A07000BFE06810B12046E168884700BFF1 -:103AC000A07800F00F000F2804DAA078411C61F301 -:103AD0000300A07000BF606910B12046616988478B -:103AE00000BF00E081E000202080E07820F00700A7 -:103AF000C01CE07028E020883C2825DDA07800F07C -:103B00000F0001280BD1A07820F0F0003030A07019 -:103B100000BFA06910B12046A169884710E0A078D5 -:103B200000F00F0002280BD1A07820F0F000403008 -:103B3000A07000BFE06910B12046E169884700BF6E -:103B4000E07820F00700E07054E0E078C0F38010E7 -:103B5000E178B0EBD11F1BD0A07820F0F00010303E -:103B6000A07000BF206910B120462169884700BFBE -:103B700020883C2807DA00202080E07820F0070029 -:103B8000801CE0700CE0E07820F00700E07007E0B7 -:103B900020883C2804DDE07820F00700401CE0701D -:103BA00028E0E078C0F38010E178B0EBD11F0BD1B2 -:103BB000A07820F0F0006030A07000BF606A10B103 -:103BC0002046616A88470FE0A07820F0F0001030AE -:103BD000A07000BF206910B120462169884700BF4E -:103BE000E07820F00700E07004E0E07820F00700C3 -:103BF000E07000BF00BF70BD2DE9F04104460D46E6 -:103C000016461F4604B10DB9BDE8F0812C212046AF -:103C1000FCF787FBA07820F0F0008030A070A56052 -:103C20000EB9012000E00020E17860F3C711E170D7 -:103C3000E07866F38610E0702771E07820F00700E6 -:103C4000E07000BFE0E7000070B5044604EB4402FA -:103C5000064B33F8221004EB440203EB8202506857 -:103C6000FDF7EEFB0546284670BD00000452000833 -:103C7000014611B96FF0010070470948026805E07C -:103C80008A4202D14FF0FF30F6E7926A002AF7D15C -:103C9000034800688862024801600020ECE70000E9 -:103CA0003400002010B50548046803E02046FFF703 -:103CB0006BFEA46A002CF9D110BD00003400002076 -:103CC00001490860704700001000002010B504464C -:103CD0004FF47A7104FB01F000F002F810BD00000F -:103CE00070B5034600224FF0E02675690D4E366828 -:103CF00003FB06F44FF0E026B16910E04FF0E02638 -:103D0000B06988420BD0884202D20E1A324402E0D7 -:103D10002E1A0E4432440146A24200D300E0EDE7E1 -:103D200000BF70BD1000002038B504460D4600BF2E -:103D300000BF1248C06940F001001049C861084640 -:103D4000C06900F00100009000BF00BF00BF880400 -:103D50000B4908600846456000218160C460FDF79A -:103D6000C9FF002202211C20FDF7DFFB1C20FDF70C -:103D7000CCFB0348FDF7F2FF38BD00000010024005 -:103D80009C010020FDF786FB4FF4E01000F04AF89C -:103D90004820FFF795FFFEF7E7FDFEF70FFCFFF762 -:103DA00027FDFEF739FFFEF7D7FEFEF715FFFEF7FA -:103DB000E9FE41F61F413120FFF7B6FF1348FEF739 -:103DC0007DFC22E012480078012809D111480078D2 -:103DD000012805D100200F4908700120FEF792FE4E -:103DE0000B4801780C480078FEF7D2FF08490870AC -:103DF000002009490870094800680949884204D927 -:103E0000FDF7E6FB002005490860DBE7992600087E -:103E10000600002004000020050000200000002013 -:103E200040420F0030B58FB005460124282105A877 -:103E3000FCF777FA14216846FCF773FA0120059025 -:103E4000000406900020079002200C90C1030D9101 -:103E50000E9505A8FDF702FD04460CB100BFFEE774 -:103E60000F20009002200190002002904FF480600B -:103E700003900020049002216846FDF7CBFB044626 -:103E80000CB100BFFEE70FB030BD0000F8B505462D -:103E90000E4614460BA00068009031462846FFF7F6 -:103EA000EFF8694601EB94110878FFF7F9FCC4F3C9 -:103EB00040121DF81200FFF7F3FC9DF80000FFF719 -:103EC000EFFCF8BD000FF0FF000000000000000054 -:103ED00001020304060708090000000001020304B0 -:103EE00002030405060708090A0B0C0D0E0F10103B -:103EF0000102000000100140000100010300000069 -:103F00000100000000100140000200010300000059 -:103F10000100000000080140000200010300000051 -:103F2000010000000008014000080001030000003B -:103F300001000000000801400080000103000000B3 -:103F40000100000000100140000800010300000013 -:103F50000100000000140140010000010300000006 -:103F600001000000001401400400000103000000F3 -:103F700001000000001401401000000103000000D7 -:103F80000100000000140140400000010300000097 -:103F9000010000000010014080000001030000004B -:103FA00001000000000801400001000103000000C2 -:103FB00001000000000801400004000103000000AF -:103FC0000100000000080140001000010300000093 -:103FD0000100000000100140000400010300000087 -:103FE000010000000010014000100001030000006B -:103FF0000100000000140140020000010300000065 -:10400000010000000014014008000001030000004E -:104010000100000000140140200000010300000026 -:1040200001000000001401408000000103000000B6 -:10403000010000000000000000000000000000007F -:1040400000002020202020200020000000285050C8 -:10405000000000000000000000002828FC2850FCA0 -:1040600050500000002078A8A0603028A8F0200060 -:10407000000048A8B05028345448000000002050E8 -:104080005078A8A8906C000000404080000000001C -:1040900000000000000408101010101010080400A8 -:1040A00000402010101010101020400000000020D0 -:1040B000A87070A8200000000000202020F8202018 -:1040C00020000000000000000000000000404080D0 -:1040D0000000000000F800000000000000000000E8 -:1040E0000000000060600000000810101020204058 -:1040F00040408000000070888888888888700000B0 -:104100000000206020202020207000000000708827 -:104110008810204080F800000000708808300808EF -:104120008870000000001030505090781018000087 -:104130000000F88080F0080888700000000070908F -:1041400080F08888887000000000F89010202020FF -:104150002020000000007088887088888870000027 -:1041600000007088888878084870000000000060AF -:1041700060000000006060000000000000200000FF -:104180000020200000040810204020100804000037 -:1041900000000000F80000F80000000000402010BF -:1041A00008040810204000000000708888102020BB -:1041B000002000000000708898A8A8B8807800004F -:1041C000000020203050507848CC00000000F0481B -:1041D0004870484848F0000000007888808080805F -:1041E000887000000000F0484848484848F0000047 -:1041F0000000F8485070504048F800000000F848AF -:104200005070504040E000000000384880809C889A -:10421000483000000000CC484878484848CC0000AE -:104220000000F8202020202020F8000000007C1052 -:10423000101010101090E0000000EC48506050503A -:1042400048EC00000000E0404040404044FC0000DA -:104250000000D8D8D8D8A8A8A8A800000000DC483A -:104260006868585848E80000000070888888888886 -:10427000887000000000F0484870404040E00000B6 -:1042800000007088888888E8987018000000F0485E -:104290004870504848EC00000000788880601008A2 -:1042A00088F000000000F8A82020202020700000E6 -:1042B0000000CC4848484848483000000000CC483E -:1042C00048505030202000000000A8A8A87050508E -:1042D000505000000000D8505020205050D800000E -:1042E0000000D85050202020207000000000F890DE -:1042F0001020204048F800000038202020202020F6 -:1043000020203800004040402020101010080000FD -:1043100000701010101010101010700000205000CD -:10432000000000000000000000000000000000008D -:10433000000000FC00200000000000000000000061 -:104340000000000000304838483C00000000C04039 -:1043500040704848487000000000000000384840A5 -:10436000403800000000180808384848483C000061 -:1043700000000000003048784038000000001C2099 -:10438000207820202078000000000000003C483009 -:10439000407844380000C0404070484848EC000075 -:1043A00000002000006020202070000000001000AD -:1043B00000301010101010E00000C040405C507041 -:1043C00048EC00000000E0202020202020F8000021 -:1043D0000000000000F0A8A8A8A80000000000004D -:1043E00000F0484848EC0000000000000030484859 -:1043F000483000000000000000F04848487040E0ED -:1044000000000000003848484838081C0000000040 -:1044100000D8604040E0000000000000007840301C -:1044200008780000000000202070202020180000E4 -:104430000000000000D84848483C00000000000090 -:1044400000EC4850302000000000000000A8A870D8 -:10445000505000000000000000D8502050D800004C -:104460000000000000EC4850302020C00000000098 -:104470000078102020780000001810101020101074 -:104480001010180010101010101010101010101034 -:1044900000602020201020202020600040A4180070 -:1044A000000000000000000000000000000000000C -:1044B0000000000000001010101010100018000084 -:1044C0000012244800000000000000000000242426 -:1044D000FE4848FE4848000000103C545030181474 -:1044E000547810000000E4A4A8F01E2A2A4E000010 -:1044F00000003048487EA494887700000060204087 -:10450000000000000000000000020C081010101055 -:104510000808060000402010080808081020400085 -:1045200000000010927C7C9210000000000010102F -:1045300010FE10101000000000000000000000003D -:104540000060204000000000007F0000000000002C -:1045500000000000000000000060000000010206F2 -:10456000040808102020400000003C24424242423F -:10457000243C00000000107010101010107C00008F -:1045800000003C4242040810627E000000003C42F1 -:10459000021C0202423C000000000C142444443C73 -:1045A000040C000000007E40407C0202423C0000FF -:1045B00000001C24405C6242623C000000007E441B -:1045C000080810101010000000003C4242342C4239 -:1045D000423C00000000186442463A02243C0000BD -:1045E000000000001800000000180000000000009B -:1045F00000100000001010000002041820402010DD -:104600000C02000000000000FE0000FE00000000A0 -:1046100000402018040204083040000000003C4222 -:1046200062020C080018000000003C469AAAAABCCE -:10463000403E0000000010182824247C42E70000BF -:104640000000F8444478464242FC000000003E422C -:1046500080808080423C00000000F8444242424298 -:1046600044F800000000FC424878484042FC00004A -:104670000000FC424878484040E0000000003C4414 -:1046800080808E84443800000000E742427E42422F -:1046900042E7000000007C1010101010107C000099 -:1046A00000003E08080808080888F0000000EE44F2 -:1046B0004870504844EE00000000E0404040404058 -:1046C00042FE00000000EE6C6C6C545454D60000A6 -:1046D0000000C76252524A4646E2000000003C44D5 -:1046E00082828282443800000000FC42427C4040CA -:1046F00040E0000000003844828282B24C3806005C -:104700000000FC42427C484446E3000000003E4278 -:1047100040380402427C00000000FE92101010108D -:10472000103800000000E74242424242423C000092 -:104730000000E74244242C28181000000000D69204 -:1047400092929A6C644400000000E76624181824D2 -:1047500066E700000000EE44283810101038000012 -:1047600000007E840810102042FC0000001E101083 -:104770001010101010101E0000402020101008080B -:1047800004040200007808080808080808087800EF -:10479000001C2200000000000000000000000000DB -:1047A00000000000000000FF0020000000000000EA -:1047B0000000000000000000003C423E423F0000BC -:1047C0000000C040405C6242427C000000000000EB -:1047D000003C6240423C000000000602021E6242B1 -:1047E000423F000000000000003C427E403E0000CE -:1047F00000000F10107E1010107C00000000000060 -:10480000003E4438407C423C0000C040405C624274 -:1048100042E700000000300000701010107C000023 -:1048200000000C00001C0404040404780000C040D4 -:10483000404E587048EE000000007010101010102C -:10484000107C00000000000000FF494949ED000015 -:104850000000000000D8664242E7000000000000AF -:10486000003C4242423C00000000000000F846428A -:10487000427C40E000000000003E4242423E02070F -:104880000000000000EE302020F8000000000000D2 -:10489000003E403C427C000000000010107C1010E4 -:1048A000100C00000000000000C64242423F000021 -:1048B0000000000000E7462428100000000000006F -:1048C00000D7929A6A44000000000000006E3C1875 -:1048D0003C7600000000000000E74624181810E0B5 -:1048E00000000000007E4418327E0000000704042F -:1048F0000408040404040300080808080808080859 -:10490000080808080070101010081010101060003F -:10491000304C030000000000000000000000000018 -:104920000000000000000000000000000000000087 -:104930000000000000000000070007000700020060 -:1049400002000200000007000000000000000660F6 -:104950000CC0330000000000000000000000000058 -:104960000000000000000000104010407FE01040F8 -:1049700020807FE0208020800000000000000200F6 -:104980001F8032C032000E00038002C032C01F8080 -:104990000200000000000000708089808900720021 -:1049A00005C00A20122021C0000000000000000005 -:1049B0001C002600240019C07880CD00C6007DE0D0 -:1049C0000000000000003800080030000000000077 -:1049D0000000000000000000000000000000004097 -:1049E00000800300060006000600060003000180A8 -:1049F000004000000000200018000C000600060027 -:104A0000060006000C001800200000000000000056 -:104A10000000030062301AC01FC0623006000000B0 -:104A200000000000000000000200020002007FF011 -:104A30000200020002000000000000000000000070 -:104A4000000000000000000000000000000038002E -:104A500008003000000000000000000000007FE0BF -:104A60000000000000000000000000000000000046 -:104A700000000000000000000000000000003800FE -:104A80000000000000000020004000800100020043 -:104A9000040008001000200040000000000000009A -:104AA0001F8030C0606060606060606030C01F80E8 -:104AB000000000000000000002003E0006000600AA -:104AC0000600060006003FC00000000000000000D5 -:104AD0001F8061C060C0018002000C0030407FC0B8 -:104AE00000000000000000003F00618001800E0017 -:104AF000018000C061C03F00000000000000000015 -:104B0000018007800980118061801FC0018003C07F -:104B100000000000000000003FC0200020002F80A7 -:104B200010C000C061C03F00000000000000000095 -:104B30000F8030C060006FC07060606030601F80A8 -:104B400000000000000000003FE020400080010065 -:104B50000200020006000600000000000000000045 -:104B60003FC060E060601F8031C0606070601F8087 -:104B700000000000000000001F8070C0606070E056 -:104B80003F6000E031C01F00000000000000000096 -:104B90000000000007000000000000000000070007 -:104BA00000000000000000000000000000000600FF -:104BB0000000000000000600060000000000006089 -:104BC000008003000C003000080006000180006037 -:104BD0000000000000000000000000007FE0000076 -:104BE00000007FE000000000000000000000300036 -:104BF0000800060001800060008003000C00300007 -:104C000000000000000000001F8060E0606000C045 -:104C10000700040000000E0000000000000000007B -:104C20000FC0382063D0649069906FE038000FE0C7 -:104C3000000000000000000006000F000B001180C3 -:104C400011803FC060C0F1F00000000000000000D3 -:104C5000FF8060C060C07F0060C0606060E0FF8077 -:104C600000000000000000000FE03820600060003D -:104C70006000600030201FC0000000000000000045 -:104C8000FF0060C0606060606060606060C0FF00E6 -:104C90000000000000000000FFC0602061007F00F5 -:104CA000610060006020FFC0000000000000000004 -:104CB000FFC0602061007F00610060006000F000C4 -:104CC000000000000000000007C0384060006000E5 -:104CD00063F060C030C00F00000000000000000062 -:104CE000F0F0606060607FE0606060606060F0F0E5 -:104CF00000000000000000003FC0060006000600A3 -:104D00000600060006003FC0000000000000000092 -:104D10000FF00180018001800180018001806180AD -:104D20003F00000000000000F1E0608067007C00B0 -:104D30006200610060C0F0F00000000000000000B0 -:104D4000F000600060006000600060006020FFC054 -:104D50000000000000000000F0F070E07960596091 -:104D60005E604E604C60E4F0000000000000000057 -:104D7000E070702058204620432041E04060E02051 -:104D800000000000000000001F8030C06060606014 -:104D90006060606030C01F80000000000000000004 -:104DA000FFC0606060607FC0600060006000F00075 -:104DB00000000000000000001F8030C060606060E4 -:104DC00060606E6031C01F0000E000000000000065 -:104DD000FFC0606060607F806300618060C0F070D1 -:104DE00000000000000000001FE0602060001F00C5 -:104DF00001C0006040E07F80000000000000000073 -:104E00007FE08610060006000600060006000F0080 -:104E10000000000000000000F070602060206020B2 -:104E20006020602060603FC00000000000000000C3 -:104E3000F8F030403040188018800D000F00060058 -:104E40000000000000000000F77066206240334060 -:104E500037803F8019801100000000000000000032 -:104E600079E018800D00060007000980104078E006 -:104E70000000000000000000F1F020401080090058 -:104E80000600060006001F80000000000000000071 -:104E90003FC06080010002000400080010203FC0F5 -:104EA00000000000000007E004000400040004000B -:104EB000040004000400040007E0000000002000DB -:104EC00010000800080004000200010000800080BB -:104ED0000040000000003F0001000100010001004F -:104EE00001000100010001003F0000000000070078 -:104EF00018C00000000000000000000000000000DA -:104F000000000000000000000000000000000000A1 -:104F100000000000000000000000FFF000001C0086 -:104F20000000000000000000000000000000000081 -:104F300000000000000000000000000000001F80D2 -:104F400030C01FC060C03FF0000000000000000043 -:104F500070003000300037C03860306030603F8013 -:104F600000000000000000000000000000001F0022 -:104F70007180600070401F80000000000000000091 -:104F800001C000C000C01FC070C060C060C03FE072 -:104F900000000000000000000000000000000F8082 -:104FA00030603FE030000FC0000000000000000053 -:104FB00007E00C000C007FC00C000C000C003F80D0 -:104FC00000000000000000000000000000000FF0E2 -:104FD00030C01F8030003F8060603FC00000000094 -:104FE000700030003000378038C030C030C079E009 -:104FF00000000000000000000600000000003E006D -:105000000600060006003FC000000000000000008F -:105010000180000000000F8001800180018001807C -:1050200001803F000000000070003000300033C0FD -:1050300033003E00310079E0000000000000000075 -:105040003E000600060006000600060006003FC0FF -:105050000000000000000000000000000000FFE071 -:10506000666066606660F770000000000000000087 -:10507000000000000000770038C030C030C079E088 -:1050800000000000000000000000000000001F8081 -:1050900070E0606070E01F80000000000000000011 -:1050A00000000000000077C03860306030E03F80D2 -:1050B00030007C00000000000000000000001FC065 -:1050C00070C060C060C03FC000C003E000000000CE -:1050D000000000000000F9E01E0018001800FF00AA -:1050E00000000000000000000000000000001FE0C1 -:1050F00030000F8020603FC0000000000000000072 -:10510000000004000C007F800C000C000C400380A9 -:10511000000000000000000000000000000071C05E -:1051200030C030C030C01FE00000000000000000B0 -:1051300000000000000078F0104008800500020028 -:105140000000000000000000000000000000F7B0B8 -:10515000632037E03DC01880000000000000000020 -:105160000000000000007FE01D80060019807FE045 -:10517000000000000000000000000000000079E0D6 -:10518000108019000F000600040038000000000025 -:105190000000000000003FC02300060018203FE090 -:1051A00000000000000001C0010001000100060035 -:1051B000010001000100010000C000000200020027 -:1051C00002000200020002000200020002000200CF -:1051D0000200020000003800080008000800060075 -:1051E0000800080008000800300000003C004710DC -:1051F00001E00000000000000000000000000000CE -:105200000000000000100000001401400100000038 -:10521000000800000014014002000000000400002B -:1052200000140140030000000020000000140140B1 -:105230000700000000010000001401400800000009 -:1052400000800000000C0140040000000800000085 -:10525000000C014005000000008000000014014027 -:105260000900000000C1814001C0804101C08041AF -:1052700000C1814001C0804100C1814000C1814026 -:1052800001C0804101C0804100C1814000C1814016 -:1052900001C0804100C1814001C0804101C0804106 -:1052A00000C1814001C0804100C1814000C18140F6 -:1052B00001C0804100C1814001C0804101C08041E6 -:1052C00000C1814000C1814001C0804101C08041D6 -:1052D00000C1814001C0804100C1814000C18140C6 -:1052E00001C0804101C0804100C1814000C18140B6 -:1052F00001C0804100C1814001C0804101C08041A6 -:1053000000C1814000C1814001C0804101C0804195 -:1053100000C1814001C0804100C1814000C1814085 -:1053200001C0804100C1814001C0804101C0804175 -:1053300000C1814001C0804100C1814000C1814065 -:1053400001C0804101C0804100C1814000C1814055 -:1053500001C0804100C1814001C0804101C0804145 -:1053600000C1814000C0C101C30302C2C60607C715 -:1053700005C5C404CC0C0DCD0FCFCE0E0ACACB0B85 -:10538000C90908C8D81819D91BDBDA1A1EDEDF1FB5 -:10539000DD1D1CDC14D4D515D71716D6D21213D3A5 -:1053A00011D1D010F03031F133F3F23236F6F73755 -:1053B000F53534F43CFCFD3DFF3F3EFEFA3A3BFB45 -:1053C00039F9F83828E8E929EB2B2AEAEE2E2FEFF5 -:1053D0002DEDEC2CE42425E527E7E62622E2E32365 -:1053E000E12120E0A06061A163A3A26266A6A76795 -:1053F000A56564A46CACAD6DAF6F6EAEAA6A6BAB05 -:1054000069A9A86878B8B979BB7B7ABABE7E7FBF34 -:105410007DBDBC7CB47475B577B7B67672B2B37324 -:10542000B17170B0509091519353529296565797D4 -:10543000559594549C5C5D9D5F9F9E5E5A9A9B5BC4 -:1054400099595898884849894B8B8A4A4E8E8F4F74 -:105450008D4D4C8C448485458747468682424383E4 -:105460004181804084540008000000205400000066 -:105470006C010008D854000854000020BC2F000024 -:10548000880100080000000000000000000000008B -:105490000024F400000000000000000000000000F4 -:1054A00000000000100000000100000000000000EB -:1054B00000000000000000000000000000000000EC -:1054C00000000000000000000000000000000000DC -:0854D0000000000000000000D4 +:1003D00000802046BDE81040FFF7F1BE10B540F2A6 +:1003E00044620249024800F0B5F910BD181400201B +:1003F00000F0030810B50B480068401C094908606C +:100400000846006844F62061884209D30846054939 +:10041000086000BF00220121034800F0A5FF00BFD3 +:1004200010BD000028000020000C014010B500BFE6 +:1004300001221146034800F097FF00BF0020024947 +:10044000086010BD000C01402800002000BFFEE73E +:10045000F0B502460C46FF21FF2509E012F8016BBA +:1004600086EA0103084EF65C86EA0501074EF55C54 +:10047000261EA4F10107BCB2F0D108464FF6FF7664 +:1004800006EA00202843F0BD383C0008383D00084B +:10049000F0B505460C46A01E2E5C4FF6FF7000EA34 +:1004A0000626601E285C0643A01E81B22846FFF780 +:1004B000CFFF0746BE4201D10120F0BD0020FCE77E +:1004C00070B500BFD52002F0AFFF00BF0021084685 +:1004D00002F0DEFC002416E000250DE0002002F012 +:1004E000D9FF002002F0D6FF002002F0D3FF002049 +:1004F00002F0D0FF681C85B2142DEFDB002002F063 +:10050000C9FF601C84B2A02CE6DB70BD10B50248A8 +:1005100000F094FA10BD0000D413002070470000D2 +:100520002DE9F84F81460F46904630A000680090B4 +:1005300000BFD52002F078FF00BFB9F1A00F01D8AD +:10054000A02F01D9BDE8F88FC9F1A0004008032110 +:10055000B0FBF1F000F0FF0AC7F1A00007EB50007C +:1005600000F0FF0B4FEAD90600243BE0ABEB0400A0 +:10057000C1B2504602F08CFC00252CE004FB065171 +:1005800018F80110C943C1F381111DF8010002F0F0 +:1005900081FF04FB065118F80110C943C1F3011192 +:1005A0001DF8010002F076FF04FB065118F8011057 +:1005B000C943C1F381011DF8010002F06BFF04FB88 +:1005C000065118F80120032191431DF8010002F0A3 +:1005D00061FF681CC5B2B542D0D3002002F05AFFBB +:1005E000601CC4B2BC42C1D300BFABE7000FF0FF38 +:1005F0000021074AD1610749096941F00401054A10 +:1006000011611146096941F0400111617047000014 +:1006100060010020002002400021074AD161074903 +:10062000096941F00201054A1161114648610969F1 +:1006300041F040011161704760010020002002403C +:100640000022054BDA61054A126942F00102034BB0 +:100650001A61018070470000600100200020024004 +:1006600000201E49C96801F0100139B11C49C9694F +:1006700041F002011A4AD16140F010001749C968DF +:1006800001F0040139B11649C96941F00101144A68 +:10069000D16140F004001149C96901F0010169B15B +:1006A0000F49C96941F004010D4AD16100BF0B49EE +:1006B000C96921F00101094AD16100BF00BF40F2C0 +:1006C0000111884206D10549C96921F00101034A97 +:1006D000D16101E00149C86000BF704700200240BD +:1006E0006001002070B5044600F044FE054609E0B4 +:1006F000601C38B124B100F03DFE401BA04201D97E +:10070000032070BD1248C06800F001000028EFD13E +:100710000F48C06800F0200020B100BF20200C4925 +:10072000C86000BF0A48C06800F0100048B9084817 +:10073000C06900F0010020B90548C06800F004005D +:1007400018B1FFF78DFF0120DBE70020D9E700009B +:10075000002002402DE9F74F88B005469046A5F1EC +:100760000060079007984FEAD02A4FF0006000EB36 +:10077000CA26A81B06904FEA4807059506983844F4 +:100780004FEAD02B4FF00009002000900698384423 +:10079000C0F30A0008B10BF1010BB5F1006F03D3F0 +:1007A000E8192549884203D301200BB0BDE8F08F3A +:1007B000B6F1006F02D32048864201D30120F4E74E +:1007C00000F008FC0598C11906F5006081422ED39F +:1007D000002414E000200190039601200490694653 +:1007E00001A800F03DFB8146B9F1000F03D000F0F5 +:1007F0008FFB4846D9E706F50066601C84B25C456D +:10080000E8D3002410E0099830F814C005EB440147 +:1008100062460023012000F085FB8146B9F1000FFC +:1008200000D003E0601C84B24445ECDB00BF00F064 +:100830006FFB4846B9E700000000040801460022AB +:1008400091F82100022808D00420886300BF00200E +:1008500081F8200000BF012070470868006820F080 +:100860000E000B6818600868006820F001000B6833 +:10087000186091F8403001209840CB6B58600120FF +:1008800081F8210000BF002081F8200000BF104641 +:10089000E2E7000070B50446002594F82100022824 +:1008A00003D00420A0630125C1E02068006820F087 +:1008B0000E00216808602068006820F001002168AF +:1008C00008605C492068884252D95A4978392068C2 +:1008D000884201D1012047E05649643920688842A6 +:1008E00001D1102040E0534950392068884201D19D +:1008F000801539E04F493C392068884201D1801485 +:1009000032E04C4928392068884202D14FF48030C7 +:100910002AE0484914392068884202D14FF48010F7 +:1009200022E044492068884201D140041CE0424949 +:100930002068884201D1012016E03F491431206827 +:10094000884201D110200FE03B49283120688842BD +:1009500001D1801508E038493C312068884201D136 +:10096000801401E04FF480303349091F086051E0E2 +:10097000304978392068884201D1012047E02D496B +:1009800064392068884201D1102040E0294950395B +:100990002068884201D1801539E026493C39206819 +:1009A000884201D1801432E02249283920688842E7 +:1009B00002D14FF480302AE01E4914392068884261 +:1009C00002D14FF4801022E01A492068884201D1F8 +:1009D00040041CE018492068884201D1012016E03B +:1009E000154914312068884201D110200FE01249C6 +:1009F00028312068884201D1801508E00E493C3139 +:100A00002068884201D1801401E04FF48030094908 +:100A100080394860012084F8210000BF002084F85C +:100A2000200000BF606B10B12046616B88472846EC +:100A300070BD0000800002400804024070B504460A +:100A4000E06B05682068066894F840100420884030 +:100A50002840002875D006F004000028FAD020684D +:100A6000006800F0200028B92068006820F0040029 +:100A700021680860D5492068884254D9D34978391B +:100A80002068884201D1042049E0D04964392068B7 +:100A9000884201D1402042E0CC4950392068884248 +:100AA00001D100153BE0C9493C392068884202D198 +:100AB0004FF4804033E0C54928392068884202D18C +:100AC0004FF480202BE0C14914392068884202D1BC +:100AD0004FF4800023E0BD492068884201D1C00462 +:100AE0001DE0BB492068884201D1042017E0B849C5 +:100AF00014312068884201D1402010E0B4492831E7 +:100B00002068884201D1001509E0B1493C312068D4 +:100B1000884202D14FF4804001E04FF48020AC497C +:100B2000091F086054E0A94978392068884201D13A +:100B300004204AE0A54964392068884202D1402057 +:100B400043E04CE0A14950392068884201D10015AA +:100B50003BE09E493C392068884202D14FF48040F6 +:100B600033E09A4928392068884202D14FF4802026 +:100B70002BE0964914392068884202D14FF4800056 +:100B800023E092492068884201D1C0041DE09049C9 +:100B90002068884201D1042017E08D491431206873 +:100BA000884201D1402010E08949283120688842DC +:100BB00001D1001509E086493C312068884202D104 +:100BC0004FF4804001E04FF4802080498039486034 +:100BD000E06A002802D02046E16A8847F4E094F8F1 +:100BE0004010022088402840002871D006F0020002 +:100BF0000028FAD02068006800F0200040B9206882 +:100C0000006820F00A0021680860012084F82100B3 +:100C10006E492068884254D96C49783920688842E6 +:100C200001D1022049E0694964392068884201D134 +:100C3000202042E0654950392068884201D14015A2 +:100C40003BE062493C392068884202D14FF40050B1 +:100C500033E05E4928392068884202D14FF40030E1 +:100C60002BE05A4914392068884202D14FF4001011 +:100C700023E056492068884201D180041DE0544990 +:100C80002068884201D1022017E0514914312068C0 +:100C9000884201D1202010E04D4928312068884247 +:100CA00001D1401509E04A493C312068884202D10F +:100CB0004FF4005001E04FF400304549091F08602F +:100CC00054E0424978392068884202D102204AE043 +:100CD00057E03E4964392068884201D1202042E033 +:100CE0003A4950392068884201D140153BE03749E4 +:100CF0003C392068884202D14FF4005033E0334938 +:100D000028392068884202D14FF400302BE02F4967 +:100D100014392068884202D14FF4001023E02B4997 +:100D20002068884201D180041DE02949206888425A +:100D300001D1022017E0264914312068884201D1F0 +:100D4000202010E0224928312068884201D1401536 +:100D500009E01F493C312068884202D14FF400501D +:100D600001E04FF4003019498039486000BF00208D +:100D700084F8200000BFA06A30B32046A16A8847EB +:100D800022E094F84010082088402840E0B106F0A6 +:100D90000800C8B12068006820F00E0021680860D3 +:100DA00094F8401001208840E16B48600120A06366 +:100DB00084F8210000BF002084F8200000BF206BD1 +:100DC00010B12046216B884770BD000080000240B2 +:100DD000080402400146002209B9012070471E4B59 +:100DE000086898420BD21D4B0868C01A1423B0FB48 +:100DF000F3F08000086419480838C8630AE0164B0D +:100E00000868C01A1423B0FBF3F08000086412488D +:100E10000838C863022081F821000868026843F698 +:100E2000F0708243D1E901031843CB6818430B6982 +:100E300018434B6918438B691843CB691843024325 +:100E40000868026000208863012081F821000020EA +:100E500081F8200000BFC1E70804024008000240FA +:100E60002DE9F04104460E460127002500BF264823 +:100E7000007E012802D10220BDE8F0810120224934 +:100E8000087600BF2068022813D14CF25030FFF7DB +:100E900029FC90BB0120FFF7ABFB4CF25030FFF771 +:100EA00021FC07461948006920F004001749086131 +:100EB00023E04CF25030FFF715FCF0B94FF0FF3053 +:100EC0003060A56812E02846FFF7A6FB4CF25030D0 +:100ED000FFF708FC07460D48006920F002000B49A7 +:100EE00008610FB1356007E005F50065D4E902102F +:100EF00001EBC020A842E6D800BF00BF0020024995 +:100F0000087600BF3846B7E76001002000200240A5 +:100F10000348006940F080000149086100207047E3 +:100F2000002002402DE9FE4F05468B4617469846A5 +:100F3000012600240020029000BF2448007E0128E2 +:100F400002D10220BDE8FE8F01202049087600BFB3 +:100F50004CF25030FFF7C6FB064686BB012D02D18E +:100F60000120029006E0022D02D10220029001E051 +:100F70000420029000241EE02201B946C2464846E1 +:100F80005146FFF744F980B20190022000FB04B003 +:100F900000900199FFF754FB4CF25030FFF7A2FB91 +:100FA00006460B48006920F001000949086106B1B6 +:100FB00004E0601CC4B202988442DDDB00BF00BFC5 +:100FC00000200249087600BF3046BBE760010020E0 +:100FD0000020024000200849096901F0800151B158 +:100FE0000649054A5160064951601146096901F0F8 +:100FF000800101B1012070470020024023016745B4 +:10100000AB89EFCD2DE9F847024600239C467BE1F2 +:101010004FF0010808FA03F4D1F8008008EA040050 +:10102000A0427DD1DFF8F4A2D1F80480A8EB0A0930 +:10103000D0453AD014DCB8F1030F50D009DCB8F138 +:10104000000F31D0B8F1010F1CD0B8F1020F49D117 +:1010500020E0B8F1110F18D0B8F1120F42D11EE004 +:10106000B9F5881F25D006DCB9F5803F20D0B9F549 +:10107000801F37D11AE0B9F5001F18D0B9F5041F49 +:1010800030D117E0D1F80CC02DE0D1F80C8008F178 +:10109000040C28E0D1F80C8008F1080C23E0D1F80A +:1010A0000C8008F10C0C1EE000BF00BF00BF00BFA9 +:1010B00000BF00BFD1F80880B8F1000F02D14FF097 +:1010C000040C0BE0D1F80880B8F1010F03D14FF008 +:1010D000080C146102E04FF0080C546103E04FF07B +:1010E000000C00E000BF00BFFF2801D8904601E0DF +:1010F00002F104084646FF2802D84FEA830803E0BD +:10110000A3F108084FEA88084746D6F800804FF058 +:101110000F0909FA07F928EA09080CFA07F900E0AB +:101120007AE048EA0908C6F80080D1F8048008F09F +:101130008058B8F1805F6FD100BFDFF8E481D8F844 +:10114000188048F00108DFF8D891C9F81880C8461F +:10115000D8F8188008F00108CDF8008000BF00BF63 +:101160004FEAB9384FEA930958F829504FEA837883 +:101170004FEA18794FF00F0808FA09F825EA080530 +:10118000DFF8A081424502D14FF0000824E0DFF8EB +:101190009881424502D14FF001081DE0DFF88C81B3 +:1011A000424502D14FF0020816E0DFF88481424543 +:1011B00002D14FF003080FE0DFF87881424502D1F9 +:1011C0004FF0040808E0DFF87081424502D14FF08B +:1011D000050801E04FF006084FEA83794FEA1979D4 +:1011E00008FA09F848EA0505DFF850814FEA930943 +:1011F00048F82950D1F8048008F48018B8F5801F09 +:101200000BD1DFF83C81D8F8008048EA0008DFF80D +:101210003091C9F800800AE075E0DFF82481D8F841 +:10122000008028EA0008DFF81891C9F80080D1F89A +:10123000048008F40018B8F5001F0ED1DFF8008113 +:1012400008F10408D8F8008048EA0008DFF8F090B8 +:1012500009F10409C9F800800DE0DFF8E48008F125 +:101260000408D8F8008028EA0008DFF8D49009F1D3 +:101270000409C9F80080D1F8048008F40038B8F5F2 +:10128000003F0ED1DFF8B880A8F10408D8F800803C +:1012900048EA0008DFF8A890A9F10409C9F800801D +:1012A0000DE0DFF89C80A8F10408D8F8008028EA57 +:1012B0000008DFF88C90A9F10409C9F80080D1F882 +:1012C000048008F48038B8F5803F0ED1DFF87080D4 +:1012D000A8F10808D8F8008048EA0008DFF8609014 +:1012E000A9F10809C9F800800DE0DFF85480A8F1E1 +:1012F0000808D8F8008028EA0008DFF84490A9F12F +:101300000809C9F800805B1CD1F8008028FA03F8AE +:10131000B8F1000F7FF47CAEBDE8F8870000111033 +:101320000010024000080140000C01400010014084 +:101330000014014000180140001C01400800014059 +:1013400008040140024693680B400BB1012000E005 +:101350000020704710B5C26821EA020302EA0104C6 +:1013600043EA0443036110BD0AB1016101E00B04CB +:1013700003617047014800687047000018000020B2 +:101380000348006803490978084401490860704728 +:10139000180000202000002010B50848006840F028 +:1013A000100006490860032000F080F80F2000F0CC +:1013B00007F800F02BF8002010BD000000200240CC +:1013C00070B504460E4800784FF47A71B1FBF0F026 +:1013D0000C490968B1FBF0F5284600F0F3FB08B1B1 +:1013E000012070BD102C07D200222146501E00F0B3 +:1013F0001EF80548046001E00120F2E70020F0E754 +:1014000020000020080000201C000020704701463A +:101410000846002809DB00F01F0301229A40430917 +:101420009B0003F1E023C3F8002100BF70472DE9C2 +:10143000F05F80460D461646002702F05FF807462B +:1014400039462A46334601F00700C0F1070ABAF1CF +:10145000040F02D94FF0040A01E0C0F1070AD14697 +:1014600000F1040ABAF1070F02D24FF0000A01E0BE +:10147000A0F1030AD4464FF0010A0AFA09FAAAF1C8 +:10148000010A0AEA020A0AFA0CFA4FF0010B0BFAF7 +:101490000CFBABF1010B0BEA030B4AEA0B042146F0 +:1014A000404602F033F8BDE8F09F000000BF00F0B6 +:1014B0000702064B19684FF6FF031940044B0B4314 +:1014C00043EA0221014B196000BF70470CED00E0B8 +:1014D0000000FA0500BF00BF00BF00BF00BFBFF3A0 +:1014E0004F8F00BF00BF00BF0948006800F4E060F4 +:1014F00008490843001D0649086000BF00BF00BF3F +:10150000BFF34F8F00BF00BF00BF00BF00BFFDE7AC +:101510000CED00E00000FA0570B504460D460CB96C +:10152000012070BD5A48006800F00700A8420ED2A2 +:101530005748006820F007002843554908600846CE +:10154000006800F00700A84201D00120E9E72078F8 +:1015500000F0020002281DD1207800F004000428C9 +:1015600005D14C48406840F4E0604A494860207822 +:1015700000F00800082805D14648406840F4605053 +:10158000444948604348406820F0F000A16808439F +:1015900040494860207800F0010078B36068012875 +:1015A00006D13C48006800F4003090B90120B8E74B +:1015B0006068022806D13748006800F0007040B922 +:1015C0000120AEE73348006800F0020008B90120AE +:1015D000A7E73048406820F00300616808432D49C0 +:1015E0004860FFF7C7FE064609E0FFF7C3FE801B11 +:1015F00041F28831884202D9032092E707E025486A +:10160000406800F00C006168B0EB810FEDD120481C +:10161000006800F00700A8420ED91D48006820F0BD +:10162000070028431A4908600846006800F00700D0 +:10163000A84201D0012074E7207800F004000428BB +:1016400007D11448406820F4E060E168084311497C +:101650004860207800F00800082808D10D4840684C +:1016600020F46050216940EAC1000A49486000F056 +:101670003FF808494968C1F30311074A515CC84063 +:101680000649086006480068FFF79AFE002048E710 +:1016900000200240001002407A3A000808000020B2 +:1016A0001C0000200148006870470000080000206E +:1016B00000B5FFF7F7FF04494968C1F30221034A67 +:1016C000515CC84000BD0000001002408A3A00088A +:1016D00000B5FFF7E7FF04494968C1F3C221034A97 +:1016E000515CC84000BD0000001002408A3A00086A +:1016F00070B500210022002400230020134D6968EA +:1017000001F00C05F5B1042D02D0082D19D101E02E +:101710000F4819E00F4DC1F38346AB5D01F48035EE +:1017200055B10A4D6D68C5F340450B4E725D084DCD +:101730005D43B5FBF2F402E0084D03FB05F42046DF +:1017400002E000BF024800BF00BF70BD00100240B1 +:1017500000127A00923A0008A23A000800093D00FF +:10176000F8B504460CB90120F8BD207800F001005E +:10177000002878D0F848406800F00C0004280CD00D +:10178000F548406800F00C00082811D1F248406884 +:1017900000F48030B0F5803F0AD1EF48006800F4D3 +:1017A000003000285FD0606800285CD10120DBE7B2 +:1017B00000BF6068B0F5803F06D1E748006840F49C +:1017C0008030E549086028E0606858B9E248006860 +:1017D00020F48030E04908600846006820F480204A +:1017E00008601AE06068B0F5A02F0BD1DA480068F5 +:1017F00040F48020D84908600846006840F48030F2 +:1018000008600AE0D448006820F48030D2490860BB +:101810000846006820F48020086000BF606888B136 +:10182000FFF7A8FD054606E0FFF7A4FD401B64286E +:1018300001D9032098E7C848006800F40030002868 +:10184000F2D010E0FFF796FD054606E0FFF792FDA7 +:10185000401B642801D9032086E7BF48006800F4D4 +:1018600000300028F2D1207800F00200022857D181 +:10187000B948406800F00C0050B1B748406800F02B +:101880000C00082818D1B448406800F4803098B99A +:10189000B148006800F0020020B12069012801D0A1 +:1018A000012061E7AC48006820F0F800616940EA77 +:1018B000C100A949086033E02069E8B10120A749C7 +:1018C0000860FFF757FD054606E0FFF753FD401B94 +:1018D000022801D9032047E79F48006800F0020072 +:1018E0000028F2D09C48006820F0F800616940EAC6 +:1018F000C1009949086013E0002098490860FFF78B +:1019000039FD054606E0FFF735FD401B022801D9E9 +:10191000032029E79048006800F002000028F2D177 +:10192000207800F0080008282DD1A069B8B1012066 +:101930008B490860FFF71EFD054606E0FFF71AFD1C +:10194000401B022801D903200EE78348406A00F0BB +:1019500002000028F2D0012001F058F813E0002026 +:101960007F490860FFF706FD054606E0FFF702FD28 +:10197000401B022801D90320F6E67748406A00F0B0 +:1019800002000028F2D1207800F00400042873D16E +:1019900000277148C06900F0805070B900BF6E48E0 +:1019A000C06940F080506C49C8610846C06900F0C9 +:1019B0008050009000BF00BF01276A48006800F413 +:1019C0008070B0B96748006840F48070654908606D +:1019D000FFF7D0FC054606E0FFF7CCFC401B64286F +:1019E00001D90320C0E65F48006800F48070002839 +:1019F000F2D000BFE068012806D15748006A40F0E5 +:101A000001005549086227E0E06858B95248006A69 +:101A100020F00100504908620846006A20F00400E6 +:101A2000086219E0E06805280BD14B48006A40F0D5 +:101A30000400494908620846006A40F00100086253 +:101A40000AE04548006A20F0010043490862084660 +:101A5000006A20F00400086200BFE068A0B1FFF750 +:101A600089FC054609E0FFF785FC401B41F28831FF +:101A7000884202D9032077E622E03748006A00F066 +:101A800002000028EFD012E0FFF774FC054608E0E2 +:101A9000FFF770FC401B41F28831884201D90320D6 +:101AA00062E62D48006A00F002000028F0D1012F04 +:101AB00005D12948C06920F080502749C86100BF7E +:101AC000E069C8B32448406800F00C00082860D0E2 +:101AD000E069022848D1002020490866FFF74AFC47 +:101AE000054606E0FFF746FC401B022801D903200B +:101AF0003AE61948006800F000700028F2D1206A28 +:101B0000B0F5803F07D11448406820F40030A16848 +:101B1000084311494860D4E9080108430E4949685F +:101B200021F4741108430C49486001200B490866F0 +:101B3000FFF720FC054607E03DE0FFF71BFC401BDC +:101B4000022801D903200FE60348006800F0007066 +:101B50000028F2D02FE000000010024000004242B6 +:101B60008004424200700040002014490866FFF7DC +:101B700001FC054606E0FFF7FDFB401B022801D9EA +:101B80000320F1E50E48006800F000700028F2D153 +:101B900011E0E069012800D1E6E50948466806F44D +:101BA0008031206A814204D106F47011606A81425A +:101BB00001D00120D8E50020D6E500000000424217 +:101BC0000010024070B504462546681EB0F1807FC3 +:101BD00001D301200FE0681E4FF0E02148610F2182 +:101BE0004FF0FF3001F092FC00204FF0E0218861BF +:101BF00007200861002070BD10B504460CB9012013 +:101C000010BD94F83D0028B9002084F83C0020461F +:101C100000F025F8022084F83D00211D206801F025 +:101C20008BF9012084F8460000BF84F83E000121B2 +:101C30003F200155402001554120015500BF00BF04 +:101C4000012084F8420043200155442001554520DD +:101C5000015500BF012084F83D000020D0E7704707 +:101C6000014691F83D00012801D001207047022073 +:101C700081F83D000868C06840F001000B68D8603A +:101C8000164B0868984213D0154B086898420FD03D +:101C90000868B0F1804F0BD0124B0868984207D00B +:101CA000114B0868984203D0104B086898420CD139 +:101CB0000868806800F00702062A0CD008680068EF +:101CC00040F001000B68186005E00868006840F00B +:101CD00001000B6818600020C8E70000002C0140DC +:101CE000003401400004004000080040000C0040A7 +:101CF000F8B504460E46174694F8420020282ED127 +:101D000006B10FB90120F8BD0120206300206063F7 +:101D10003A463146204601F0B1FA0546EDB9206B4E +:101D2000012819D100BF00200090206800680090B1 +:101D300020684068009000BF00BF00BF00BF21685E +:101D40000C3151E8001F41F0100021680C3141E8CE +:101D50000002002AF3D100E001252846D3E7022043 +:101D6000D1E7000070B504460D4607492068884257 +:101D700008D101200549087041F27002491C04484D +:101D8000FFF7B6FF70BD00000044004010030020C4 +:101D90008C130020704700002DE9F84F044620689E +:101DA00005682068C668206847694FF00009CA4680 +:101DB00005F00F09B9F1000F0AD105F0200038B184 +:101DC00006F0200020B1204601F05CF9BDE8F88F54 +:101DD000B9F1000F7BD007F0010018B906F490703C +:101DE000002874D005F0010030B106F4807018B1FD +:101DF000606C40F00100606405F0040030B107F051 +:101E0000010018B1606C40F00200606405F002004F +:101E100030B107F0010018B1606C40F0040060645C +:101E200005F0080048B106F0200010B907F00100E5 +:101E300018B1606C40F008006064606C002845D008 +:101E400005F0200028B106F0200010B1204601F076 +:101E500019F920684069C0F3801A606C00F008002E +:101E600010B9BAF1000F2CD0204601F0C5F8206857 +:101E7000406900F0400000B300BF00BF216814318A +:101E800051E8001F21F040002168143141E80002B0 +:101E9000002AF3D100BFE06B50B17748E16B486393 +:101EA000E06BFEF7F7FC88B1E06B416B88470DE013 +:101EB0002046FFF76FFF09E009E02046FFF76AFFC1 +:101EC00004E02046FFF766FF002060647EE7206B99 +:101ED000012877D105F01000002873D006F010001B +:101EE0000028FAD000BF0020009020680068009011 +:101EF00020684068009000BF00BF2068406900F083 +:101F0000400000285FD0E06B006840681FFA80F84E +:101F1000B8F1000F55D0A08D404552DDA4F82E80B9 +:101F2000E06B8069202843D000BF00BF21680C31DE +:101F300051E8001F21F4807021680C3141E8000253 +:101F4000002AF3D100BF00BF00BF2168143151E85F +:101F5000001F21F001002168143141E80002002A2D +:101F6000F3D100BF00BF00BF2168143151E8001F4A +:101F700021F040002168143141E80002002AF3D129 +:101F800000BF202084F842000020206300BF00BF73 +:101F900021680C3151E8001F21F0100021680C313C +:101FA00041E80002002AF3D100BFE06BFEF746FCD7 +:101FB00002206063A08DE28D801A81B22046FFF777 +:101FC000D1FE03E742E0A08DE18D401A1FFA80F8B0 +:101FD000E08DD0B3B8F1000F37D000BF00BF21684B +:101FE0000C3151E8001F21F4907021680C3141E858 +:101FF0000002002AF3D100BF00BF00BF21681431E6 +:1020000051E8001F21F001002168143141E800026D +:10201000002AF3D100BF202084F842000020206372 +:1020200000BF00BF21680C3151E8001F21F01000F3 +:1020300021680C3141E80002002AF3D100BF0220E0 +:10204000606341462046FFF78DFEBFE605F0800045 +:1020500030B106F0800018B1204601F02FF9B5E646 +:1020600005F0400030B106F0400018B1204600F005 +:10207000F9FFABE600BFA9E6E52F000810B504465E +:102080000CB9012010BDA06900B100E000BF94F8B8 +:10209000410028B9002084F84000204600F02AF8CA +:1020A000242084F841002068C06820F40050216892 +:1020B000C860204601F064F82068006920F4904070 +:1020C000216808612068406920F02A002168486181 +:1020D0002068C06840F400502168C8600020606437 +:1020E000202084F8410084F842000020606300BF93 +:1020F000C8E7000010B586B0044628492068884229 +:102100004AD100BF00BF2648806940F0040024493E +:1021100088610846806900F00400019000BF00BF9C +:1021200000BF00BF00BF0846806940F0040088611E +:102130000846806900F00400019000BF00BF00BFA6 +:1021400000BF00BF0846806940F4804088610846AF +:10215000806900F48040019000BF00BF00BF4815B7 +:10216000029002200390012004900320059002A910 +:102170000C48FEF747FF4FF4806002900020039068 +:1021800002A90848FEF73EFF2520FFF740F9032289 +:1021900011462520FFF74BF906B010BD003801406D +:1021A000001002400008014070B504460D46164676 +:1021B00094F8420020280BD105B10EB9012070BD62 +:1021C0000020206332462946204601F057F8F6E702 +:1021D0000220F4E710B504462049206888423BD12C +:1021E0001F48008800F4004088BB1D48008800F4A8 +:1021F000804070B11B4800780A2803D0002018499D +:10220000088024E01648008840F400401449088003 +:102210001DE0144800780D2806D11148008840F4CC +:1022200080400F49088012E00E4800780C49098868 +:10223000C1F30D010C4A505409480088401C08495C +:10224000088008460088C72801DD00200880012298 +:1022500004490648FFF7A8FF10BD00000038014000 +:10226000140000201600002050000020180100205B +:102270002DE9F84F04460E46174699464FF0000ADE +:1022800094F84100202850D106B117B90120BDE8CB +:10229000F88F00206064212084F84100FFF76AF87D +:1022A0008246A784E784A068B0F5805F04D12069E6 +:1022B00010B90025B04602E035464FF000081EE098 +:1022C0005346002280212046CDF8009001F026F8E8 +:1022D00020B1202084F841000320D8E745B9B8F8A0 +:1022E0000000C0F308002168486008F1020803E01C +:1022F0002878216848606D1CE08C401EE084E08CEA +:102300000028DDD15346002240212046CDF8009020 +:1023100001F004F820B1202084F841000320B6E742 +:10232000202084F841000020B1E70220AFE7704789 +:1023300000BFFEE708B5434A811A904241D009DC4C +:102340004149014481B1B1F5806F1CD0B1F5006FF6 +:1023500074D127E0B1F5806F42D0B1F5006F4ED057 +:10236000B1F5406F6AD159E000BF3849896941F041 +:102370000401364A91611146896901F00401009116 +:1023800000BF00BF5BE000BF3049896941F0080130 +:102390002E4A91611146896901F00801009100BF40 +:1023A00000BF4CE000BF2949896941F01001274A6C +:1023B00091611146896901F01001009100BF00BFD1 +:1023C0003DE000BF2149896941F020011F4A916128 +:1023D0001146896901F02001009100BF00BF2EE085 +:1023E00000BF1A49896941F04001184A91611146BC +:1023F000896901F04001009100BF00BF1FE000BFEC +:102400001249896941F08001104A91611146896938 +:1024100001F08001009100BF00BF10E000BF0B4938 +:10242000896941F48071094A91611146896901F411 +:102430008071009100BF00BF01E0FFE700BF00BF57 +:1024400008BD00000014014000F8FEBF001002406B +:1024500010B586B000BF2F48806940F001002D49BB +:1024600088610846806900F00100019000BF00BF4C +:1024700000BF2949486820F0E06040F000704860E3 +:1024800000BF0020029003900490059000243DE0DE +:1024900004EB4401214A02EB81014868FFF74AFF3F +:1024A00004EB44001D4931F8200002900020039005 +:1024B00004900320059004EB4401184A02EB8101CB +:1024C000486802A9FEF79EFD04EB440101EBC4013C +:1024D000134A02EB810023460022124901F086F9DB +:1024E00004EB440101EBC4010D4A02EB81000E4AEA +:1024F000032101F021F804EB440101EBC401084A77 +:1025000002EB810001F0AEF9601CC4B2072CBFD30E +:1025100006B010BD0010024000000140E43B00087E +:10252000DC0100203D3800084D35000810B5044698 +:10253000FDF77CFF0148047010BD0000040000207E +:1025400001490860704700002400002000B585B0F4 +:1025500000BF1A48806940F00800184988610846A1 +:10256000806900F00800009000BF00BF00BF08466F +:10257000806940F0400088610846806900F04000B2 +:10258000009000BF00BF47F601400190012002907B +:1025900003900320049001A90948FEF733FD4FF48E +:1025A0007F4001900120029003900320049001A934 +:1025B0000448FEF727FD05B000BD000000100240F2 +:1025C000000C01400018014010B5E92000F02CFF7C +:1025D0002B2000F029FF242000F026FF812000F0AE +:1025E00023FFBE2000F020FFA42000F01DFFA62046 +:1025F00000F01AFFC02000F017FFA32000F014FF26 +:10260000D12000F011FFD52000F00EFFDA2000F0FD +:102610000BFFF42000F008FF252000F005FFF62056 +:1026200000F002FF5A2000F0FFFEF52000F0FCFE53 +:10263000002000F0F9FEF72000F0F6FE9F2000F0E9 +:10264000F3FEF82000F0F0FE892000F0EDFEAD2052 +:1026500000F0EAFE402000F0E7FE502000F0E4FE2B +:10266000C42000F0E1FE902000F0DEFEFF2000F02C +:10267000DBFE842000F0D8FEF12000F0D5FE9F2084 +:1026800000F0D2FE10BD000010B500BF0122910283 +:102690000E48FEF769FE00BF0A2001F011F900BFE5 +:1026A00000224FF480610948FEF75EFE00BF022061 +:1026B00001F006F900BF012291020448FEF754FE22 +:1026C00000BF962001F0FCF810BD0000000C014096 +:1026D00008B5434A811A904241D009DC414901447E +:1026E00081B1B1F5806F1CD0B1F5006F74D127E0D6 +:1026F000B1F5806F42D0B1F5006F4ED0B1F5406FAB +:102700006AD159E000BF3849896941F00401364A6D +:1027100091611146896901F00401009100BF00BF79 +:102720005BE000BF3049896941F008012E4A9161A0 +:102730001146896901F00801009100BF00BF4CE01B +:1027400000BF2949896941F01001274A916111466A +:10275000896901F01001009100BF00BF3DE000BF9A +:102760002149896941F020011F4A91611146896917 +:1027700001F02001009100BF00BF2EE000BF1A4908 +:10278000896941F04001184A91611146896901F057 +:102790004001009100BF00BF1FE000BF12498969DE +:1027A00041F08001104A91611146896901F0800170 +:1027B000009100BF00BF10E000BF0B49896941F4E0 +:1027C0008071094A91611146896901F48071009113 +:1027D00000BF00BF01E0FFE700BF00BF08BD000071 +:1027E0000014014000F8FEBF001002401FB5002495 +:1027F00047E0274901EB04110868FFF769FF244807 +:1028000000EB04108088009001200190204800EB2C +:102810000410806803901E4800EB0410C06802900A +:102820001B4901EB041108686946FEF7EBFB184BE6 +:1028300003EB0413DA79164B03EB04139988144B5A +:1028400003EB04131868FEF78FFD114800EB04102A +:10285000807950B90E4800EB0410C07908B9012006 +:1028600000E000200B49085509E0094800EB04107E +:10287000C079012800D100E0002006490855601CFD +:10288000C4B2142CB5DB0121002000F06FF81FBD8D +:10289000A43A00088001002070B50446142C00DB27 +:1028A00070BD0C4800EB0410807908B9012500E0E8 +:1028B0000025084A02EB04129188064A02EB041232 +:1028C00010682A46FEF750FD00200349085500BF56 +:1028D000E6E70000A43A00088001002070B5044635 +:1028E000142C00DB70BD0C4800EB0410807908B993 +:1028F000002500E00125084A02EB04129188064AEF +:1029000002EB041210682A46FEF72EFD012003494F +:10291000085500BFE6E70000A43A00088001002047 +:102920002DE9F0410446E0780006A17840EA014034 +:10293000617840EA0120217840EA01060025012162 +:10294000002000F013F801250CE00120A8403040E1 +:1029500008B1012000E000200746E8B2394600F047 +:1029600005F86D1C142DF0D3BDE8F08170B5054657 +:102970000C46012C03D12846FFF7B0FF02E02846A1 +:10298000FFF78AFF70BD000010B5044AD2F8841C1E +:10299000D2F8800CFDF7C4FD10BD00001814002013 +:1029A00010B5FFF7D3FD00BF012211460548FEF721 +:1029B000DBFC00BFFFF768FEFFF706FEFDF780FDBA +:1029C00010BD0000000C014000BFFEE700BFFEE7A5 +:1029D0007047000006480078401C0549087008460A +:1029E000007918B108464079401C487170470000D2 +:1029F0003400002000200449887108714871C871B2 +:102A000001204880704700003400002008B50849C4 +:102A10000968C9084FF47A72B1FBF2F141430091A1 +:102A200000BF00BF00994A1E00920029F9D108BDDD +:102A30000800002000B585B000BF00BF594880697C +:102A400040F00400574988610846806900F004009E +:102A5000009000BF00BF00BF00BF00BF08468069F4 +:102A600040F0040088610846806900F0040000908E +:102A700000BF00BF00BF00BF00BF0846806940F034 +:102A8000040088610846806900F00400009000BFDF +:102A900000BF00BF00BF00BF0846C06940F400305F +:102AA000C8610846C06900F40030009000BF00BF54 +:102AB00000BF00BF0846406940F001004861084679 +:102AC000406900F00100009000BF00BF00200190AD +:102AD00002900390049004200190022002900120B3 +:102AE00003900320049001A92F48FEF78BFA0820D9 +:102AF00001900020029001A92B48FEF783FA0220E2 +:102B000001900120029001A92748FEF77BFA27488F +:102B10002749086000204860002125488160802105 +:102B2000C16000210161416181614FF44051C16187 +:102B3000FEF750F900BF1E481E49C86308461C49ED +:102B4000486200BF1020FEF762FC002211461020F0 +:102B5000FEF76DFC184817490860184848600021C6 +:102B600014488160C160016181610C2141610021D3 +:102B7000C161FFF783FA2620FEF749FC00220121FC +:102B80002620FEF754FC00BF012202210648FEF772 +:102B9000EBFB00BF41F2700209490648FFF7A8F8B5 +:102BA00005B000BD00100240000801406C0002406A +:102BB000D41300208C1300200044004060AE0A00B3 +:102BC0001103002010B504460CB155480470554857 +:102BD0000078002872D000205249087041F270013C +:102BE0005048401CFDF754FC012854D100204E49A8 +:102BF00008604FF448624B49491C4C48FDF71AFBEA +:102C00004B494C4802680A604068486008460079B1 +:102C1000892834D108464079452830D14FF448629C +:102C200042494548FDF74BFB414840784049097807 +:102C300040EA01204049C1F8800C3D48C0783C4939 +:102C4000897840EA01203C49C1F8840CFDF7C6FBB5 +:102C5000FDF7ECFBFDF734FCFFF796FE4FF4FA703E +:102C600000F02EFE4FF4FA7000F02AFE4FF4FA70D6 +:102C700000F026FE4FF4FA7000F022FE16E02F4915 +:102C80002848D0F8810C08600846FFF749FE27481D +:102C900000F0B2F80AE024480068401C22490860AD +:102CA00008460068032801D300200860002024495A +:102CB000887108714871C871012048802048408897 +:102CC00010B91F48807998B11548007838B1144878 +:102CD0000178002000F07AF80020114908701848A7 +:102CE0000078372804DD0E480178012000F06EF8E6 +:102CF00013484079282808DD0120114988710020F7 +:102D000048710846C079401CC8710D48C079052833 +:102D100004DB05200A49C8710120488010BD00006D +:102D20003C000020100300204C000020A0200020C8 +:102D300041000020910F0020181400203D000020C9 +:102D4000340000202DE9FC4104460D4616460027BC +:102D500001208DF800008DF801408DF802508DF8AB +:102D6000036004216846FDF773FB074638128DF8AF +:102D70000400F8B28DF805000621684600F008F856 +:102D8000002002494880BDE8FC810000340000209A +:102D900070B504460D4600BF002202210948FEF727 +:102DA000E3FA00BFAAB24FF47A7321460648FFF750 +:102DB0005FFA00BF012202210248FEF7D5FA00BFE8 +:102DC00070BD0000000801408C13002070B504465F +:102DD0000D462A4621460320FFF7B4FF0020044990 +:102DE00048800870012008710020487170BD000003 +:102DF0003400002070470000F8B5064600BFD5201B +:102E000000F012FB00BF21A00068009000210846DE +:102E100000F03EF8002436E000252DE004EB8401AC +:102E200005EB8101715C6A4602EB9111087800F0B4 +:102E300031FB04EB840105EB8101715CC1F30111ED +:102E40001DF8010000F026FB04EB840105EB810175 +:102E5000715CC1F381011DF8010000F01BFB04EB64 +:102E6000840105EB8101715C01F003011DF8010093 +:102E700000F010FB681C85B2142DCFDB002000F0A1 +:102E800009FB601C84B2A02CC6DBF8BD000FF0FF6C +:102E900070B504460D4604F12500C4B204F00F00DD +:102EA00000F0C2FAC4F3021141F0100000F0BCFAC5 +:102EB00005F00F0141F0600000F0B6FA702141EA20 +:102EC000151000F0B1FA70BD10B5FEF759FA10BD3B +:102ED0007047000010B514480068006900F0010058 +:102EE00000B312480068401C10490860084600689A +:102EF000C821B0FBF1F201FB120010B901200C490E +:102F0000087000F0C9FC00BF01210A48FEF722FA50 +:102F100000BFFDF76FFAFFF75DFD6FF0010002499A +:102F20000968086110BD0000940100200000002025 +:102F3000060000200008014010B50268244B9842AA +:102F40000ED0244B98420BD0B0F1804F08D0224BCA +:102F5000984205D0214B984202D0214B984203D190 +:102F600022F070024B681A43194B98420ED0194B4D +:102F700098420BD0B0F1804F08D0174B984205D043 +:102F8000164B984202D0164B984203D122F440725D +:102F9000CB681A4322F080034C6943EA04020260C2 +:102FA0008B68C3620B688362094B984202D0094B5D +:102FB000984201D10B69036301234361036903F064 +:102FC00001031BB1036923F00103036110BD00007D +:102FD000002C014000340140000400400008004083 +:102FE000000C004070B505466C6A0020E085E08466 +:102FF0002046FEF7CFFE70BD00BF00BF02680C3256 +:1030000052E8002F22F4907102680C3242E800135B +:10301000002BF3D100BF00BF00BF0268143252E89A +:10302000002F22F001010268143242E80013002B45 +:10303000F3D100BF016B01290ED100BF00BF0268B0 +:103040000C3252E8002F22F0100102680C3242E8E4 +:103050000013002BF3D100BF202180F84210002183 +:103060000163704710B504462068C06820F0400036 +:103070002168C860202084F841002046FFF757F9F6 +:10308000002010BDF8B5044694F84200222875D1FE +:10309000A068B0F5805F0CD1206950B90025A66A00 +:1030A00020684068C0F308003080A06A801CA062DD +:1030B00015E0A56A0026A068B0F5805F03D0A0687F +:1030C00028B9206918B920684068287004E0206891 +:1030D000406800F07F002870A06A401CA062E08D6C +:1030E000401E80B2E085002846D12068C06820F0EC +:1030F00020002168C8602068C06820F480702168C2 +:10310000C8602068406920F00100216848612020E3 +:1031100084F8420000206063206B012826D1002043 +:10312000206300BF00BF21680C3151E8001F21F06F +:10313000100021680C3141E80002002AF3D100BFE1 +:103140002068006800F0100010280AD100BF00209D +:10315000009020680068009020684068009000BFE0 +:1031600000BFA18D2046FEF7FDFD02E02046FFF7DF +:1031700031F80020F8BD01E00020FBE70220F9E76C +:1031800070B504462168096921F44051E268114391 +:10319000226811612269A1681143626941EA02054E +:1031A0002168C96841F20C62914329432268D160C9 +:1031B0002168496921F44071A26911432268516173 +:1031C0002D4A2168914202D1FEF782FA01E0FEF712 +:1031D0006FFA00EBC00101EB001162689200B1FBD5 +:1031E000F2F100EBC00202EB001263689B00B2FB3D +:1031F000F3F26423B2FBF3F202EBC20303EB02121D +:10320000A1EB8201322202EB01116422B1FBF2F147 +:1032100001F0F00100EBC00202EB001263689B00BA +:10322000B2FBF3F26423B2FBF3F201EB021200EB08 +:10323000C00101EB001163689B00B1FBF3F100EBEF +:10324000C00303EB00136668B600B3FBF6F3642615 +:10325000B3FBF6F303EBC30606EB0313A1EB830109 +:10326000322303EB01116423B1FBF3F101F00F01F1 +:1032700011442268916070BD0038014010B50346CA +:1032800099629A85DA8500205864222083F84200EA +:10329000186928B11868C06840F480701C68E06044 +:1032A0001868406940F001001C6860611868C068D7 +:1032B00040F020001C68E060002010BD014691F83D +:1032C0004100212828D18868B0F5805F0BD10869BA +:1032D00048B90A6A1088C0F308000B685860086A89 +:1032E000801C086205E00B6A581C086218780B689D +:1032F0005860C88C401E80B2C88458B90868C0683D +:1033000020F080000B68D8600868C06840F040007A +:103310000B68D860002070470220FCE72DE9F843D5 +:1033200004460D4617469846089E31E0701C70B35F +:10333000FEF720F8A0EB0800B04200D816B9032031 +:10334000BDE8F8832068C06800F00400F8B1802D63 +:103350001ED0402D1CD020680068C0F3C000B0B162 +:1033600000BF00200090206800680090206840683E +:10337000009000BF00BF2046FFF73EFE08206064BB +:1033800000BF002084F8400000BF0120D8E7FFE71D +:10339000206800682840A84201D1012000E00020F8 +:1033A000B842C3D00020CBE70021044A1268D1B252 +:1033B00041EA0022014B1A60704700000C180140DE +:1033C00010B50248FEF7E8FC10BD0000180100200F +:1033D00010B50248FEF7E0FC10BD00008C13002081 +:1033E00000BFFEE700B585B000BF00BF0C48806994 +:1033F00040F004000A4988610846806900F0040032 +:10340000009000BF00BF00BF012001900290039018 +:103410000320049001A90348FDF7F4FD05B000BDA9 +:10342000001002400008014010B5044600BF002211 +:103430004FF480411648FDF797FF00BF00BF0122FF +:1034400011031348FDF790FF00BF2046FFF7ACFFC4 +:1034500000BF00224FF400610D48FDF785FF00BF5B +:1034600000BF00224FF400510948FDF77DFF00BF67 +:1034700000BF012251030648FDF776FF00BF00BFE1 +:103480000122D1020248FDF76FFF00BF10BD00000E +:10349000000C014010B5044600BF012291031648FC +:1034A000FDF762FF00BF00BF012211031248FDF7C4 +:1034B0005BFF00BF2046FFF777FF00BF00224FF4FD +:1034C00000610D48FDF750FF00BF00BF00224FF420 +:1034D00000510948FDF748FF00BF00BF012251031A +:1034E0000548FDF741FF00BF00BF0122D10202489D +:1034F000FDF73AFF00BF10BD000C01400248006814 +:10350000C0F30220704700000CED00E010B5002869 +:1035100004DB0A07130E054A135406E00A07140ECB +:10352000034A00F00F031B1FD45410BD00E400E059 +:1035300018ED00E000BF704708B1072900DB7047B5 +:1035400000F10C0343F8212000BFF8E770B50446F2 +:103550007CB10848006860B12579072D08D205EBD9 +:103560004501054A02EB8101087A0249096888474A +:1035700000BF70BD24000020E43B000870B5044685 +:1035800000BF2079A16888470546E07800F0070071 +:10359000002802DD2088401C2080E078B5EBD01F99 +:1035A00013D0E078C008401CE17860F3C501E170F9 +:1035B000C1F3C20003280CDBE07865F3C710E070AC +:1035C000E07820F03800E07003E0E07820F0380088 +:1035D000E070E07800F0070005287DD2DFE800F019 +:1035E000032858AFDB00E078C0F38010E178B0EB3F +:1035F000D11F17D1A07820F0F000A07000BFE068C4 +:1036000010B12046E168884700BF00202080A078E4 +:1036100020F00F00401CA070E07820F00700401C54 +:10362000E07004E0A07820F0F0008030A070DBE0D3 +:10363000E078C0F38010E178B0EBD11F13D0A07810 +:1036400020F0F0001030A07000BF206910B12046BB +:103650002169884700BF00202080E07820F0070023 +:10366000801CE07013E02088C82810DDA07820F0CE +:10367000F0005030A07000BF206A10B12046216ACF +:10368000884700BFE07820F00700001DE070ABE045 +:10369000E078C0F38010E178B0EBD11F25D1A0789D +:1036A00020F0F000A07000BFE06810B12046E16893 +:1036B000884700BFA07800F00F000F2804DAA07838 +:1036C000411C61F30300A07000BF606910B1204687 +:1036D0006169884700BF00E081E000202080E07839 +:1036E00020F00700C01CE07028E020883C2825DD81 +:1036F000A07800F00F0001280BD1A07820F0F00096 +:103700003030A07000BFA06910B12046A169884781 +:1037100010E0A07800F00F0002280BD1A07820F074 +:10372000F0004030A07000BFE06910B12046E169B0 +:10373000884700BFE07820F00700E07054E0E078B0 +:10374000C0F38010E178B0EBD11F1BD0A07820F03F +:10375000F0001030A07000BF206910B12046216930 +:10376000884700BF20883C2807DA00202080E078C6 +:1037700020F00700801CE0700CE0E07820F00700EB +:10378000E07007E020883C2804DDE07820F00700A6 +:10379000401CE07028E0E078C0F38010E178B0EBE6 +:1037A000D11F0BD1A07820F0F0006030A07000BFD6 +:1037B000606A10B12046616A88470FE0A07820F067 +:1037C000F0001030A07000BF206910B120462169C0 +:1037D000884700BFE07820F00700E07004E0E07860 +:1037E00020F00700E07000BF00BF70BD2DE9F04180 +:1037F00004460D4616461F4604B10DB9BDE8F081DA +:103800002C212046FCF78DFDA07820F0F0008030C0 +:10381000A070A5600EB9012000E00020E17860F3FF +:10382000C711E170E07866F38610E0702771E078E8 +:1038300020F00700E07000BFE0E7000070B504462C +:1038400004EB4402064B33F8221004EB440203EB72 +:1038500082025068FDF776FD0546284670BD0000DF +:10386000E43B0008014611B96FF0010070470948B8 +:10387000026805E08A4202D14FF0FF30F6E7926A13 +:10388000002AF7D1034800688862024801600020DE +:10389000ECE700003000002010B50548046803E0A4 +:1038A0002046FFF76BFEA46A002CF9D110BD000082 +:1038B0003000002001490860704700000C00002023 +:1038C00010B504464FF47A7104FB01F000F002F8E1 +:1038D00010BD000070B5034600224FF0E026756968 +:1038E0000D4E366803FB06F44FF0E026B16910E098 +:1038F0004FF0E026B06988420BD0884202D20E1AFF +:10390000324402E02E1A0E4432440146A24200D351 +:1039100000E0EDE700BF70BD0C00002038B50446A4 +:103920000D4600BF00BF1248C06940F001001049B9 +:10393000C8610846C06900F00100009000BF00BFE8 +:1039400000BF88040B49086008464560002181607B +:10395000C460FEF751F9002202211C20FDF767FD2B +:103960001C20FDF754FD0348FEF77AF938BD00002E +:103970000010024094010020FDF70EFD4FF4E0100E +:1039800000F048F84820FFF795FFFEF72FFFFEF7FD +:103990005FFDFFF727FDFFF74DF8FFF701F8FFF791 +:1039A00029F841F61F413120FFF7B8FF1348FEF711 +:1039B000C7FD21E012480078012802D100201049FB +:1039C00008701048007830B10E4800780E49087031 +:1039D00000200C4908700C480078FFF7F3F800202D +:1039E00009490870094800680949884204D9FDF767 +:1039F00071FD002005490860DCE700002D25000866 +:103A00000600002004000020050000200000002027 +:103A100040420F0030B58FB005460124282105A88B +:103A2000FCF77FFC14216846FCF77BFC0120059025 +:103A3000000406900020079002200C90C1030D9115 +:103A40000E9505A8FDF78CFE04460CB100BFFEE7FD +:103A50000F20009002200190002002904FF480601F +:103A600003900020049002216846FDF755FD0446AE +:103A70000CB100BFFEE70FB030BD00000000000039 +:103A8000000001020304060708090000000001020B +:103A9000030402030405060708090A0B0C0D0E0FA8 +:103AA000101001020010014000010001030000009D +:103AB00001000000001001400002000103000000AE +:103AC00001000000000801400002000103000000A6 +:103AD0000100000000080140000800010300000090 +:103AE0000100000000080140008000010300000008 +:103AF0000100000000100140000800010300000068 +:103B0000010000000014014001000001030000005A +:103B10000100000000140140040000010300000047 +:103B2000010000000014014010000001030000002B +:103B300001000000001401404000000103000000EB +:103B4000010000000010014080000001030000009F +:103B50000100000000080140000100010300000016 +:103B60000100000000080140000400010300000003 +:103B700001000000000801400010000103000000E7 +:103B800001000000001001400004000103000000DB +:103B900001000000001001400010000103000000BF +:103BA00001000000001401400200000103000000B9 +:103BB00001000000001401400800000103000000A3 +:103BC000010000000014014020000001030000007B +:103BD000010000000014014080000001030000000B +:103BE000010000000010000000140140010000006E +:103BF0000008000000140140020000000004000062 +:103C000000140140030000000020000000140140E7 +:103C1000070000000001000000140140080000003F +:103C200000800000000C01400400000008000000BB +:103C3000000C01400900000000C1814001C080412A +:103C400001C0804100C1814001C0804100C181406C +:103C500000C1814001C0804101C0804100C181405C +:103C600000C1814001C0804100C1814001C080414C +:103C700001C0804100C1814001C0804100C181403C +:103C800000C1814001C0804100C1814001C080412C +:103C900001C0804100C1814000C1814001C080411C +:103CA00001C0804100C1814001C0804100C181400C +:103CB00000C1814001C0804101C0804100C18140FC +:103CC00000C1814001C0804100C1814001C08041EC +:103CD00001C0804100C1814000C1814001C08041DC +:103CE00001C0804100C1814001C0804100C18140CC +:103CF00000C1814001C0804100C1814001C08041BC +:103D000001C0804100C1814001C0804100C18140AB +:103D100000C1814001C0804101C0804100C181409B +:103D200000C1814001C0804100C1814001C080418B +:103D300001C0804100C1814000C0C101C30302C273 +:103D4000C60607C705C5C404CC0C0DCD0FCFCE0EDB +:103D50000ACACB0BC90908C8D81819D91BDBDA1A4B +:103D60001EDEDF1FDD1D1CDC14D4D515D71716D6BB +:103D7000D21213D311D1D010F03031F133F3F2322B +:103D800036F6F737F53534F43CFCFD3DFF3F3EFE9B +:103D9000FA3A3BFB39F9F83828E8E929EB2B2AEA0B +:103DA000EE2E2FEF2DEDEC2CE42425E527E7E6267B +:103DB00022E2E323E12120E0A06061A163A3A262EB +:103DC00066A6A767A56564A46CACAD6DAF6F6EAE5B +:103DD000AA6A6BAB69A9A86878B8B979BB7B7ABACB +:103DE000BE7E7FBF7DBDBC7CB47475B577B7B6763B +:103DF00072B2B373B17170B05090915193535292AB +:103E000096565797559594549C5C5D9D5F9F9E5E1A +:103E10005A9A9B5B99595898884849894B8B8A4A8A +:103E20004E8E8F4F8D4D4C8C4484854587474686FA +:103E30008242438341818040583E000800000020B8 +:103E4000500000006C010008A83E0008500000204F +:103E5000303300008801000800000000000000006E +:103E60000024F4000000000000000000000000003A +:103E70000000000010000000010000000000000031 +:103E80000000000000000000000000000000000032 +:103E90000000000000000000000000000000000022 +:083EA00000000000000000001A :0400000508000131BD :00000001FF diff --git a/Projects/MDK-ARM/atk_f103.uvguix.wandering b/Projects/MDK-ARM/atk_f103.uvguix.wandering index 67f38b8..dd7ee82 100644 --- a/Projects/MDK-ARM/atk_f103.uvguix.wandering +++ b/Projects/MDK-ARM/atk_f103.uvguix.wandering @@ -6,7 +6,7 @@
### uVision Project, (C) Keil Software
- D:\Code\DTU\程序\LED\Drivers\BSP\160160D + D:\Code\DTU 程序\DTU-LCD\Projects\MDK-ARM @@ -78,11 +78,11 @@ - 0 - 0 + 1 + 1 0 - 50 - 16 + 0 + -1 @@ -93,8 +93,8 @@ 2 3 - -32000 - -32000 + -1 + -1 -1 @@ -110,8 +110,8 @@ 0 - 1500 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000F000000000000000100000025443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C55736572735C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF36443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C313630313630445C313630313630442E430000000009313630313630442E4300000000FFDC7800FFFFFFFF30443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C57444F475C77646F672E63000000000677646F672E6300000000BECEA100FFFFFFFF36443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C313630313630445C313630313630442E680000000009313630313630442E6800000000BCA8E100FFFFFFFF30443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C57444F475C77646F672E68000000000677646F672E68000000009CC1B600FFFFFFFF4E443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C434D5349535C4465766963655C53545C53544D3332463178785C496E636C7564655C73746D3332663178782E68000000000B73746D3332663178782E6800000000F7B88600FFFFFFFF2E443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C4B45595C6B65792E6300000000056B65792E6300000000D9ADC200FFFFFFFF2E443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C4B45595C6B65792E6800000000056B65792E6800000000A5C2D700FFFFFFFF36443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C4B45595C4D756C7469427574746F6E2E63000000000D4D756C7469427574746F6E2E6300000000B3A6BE00FFFFFFFF36443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C4B45595C4D756C7469427574746F6E2E68000000000D4D756C7469427574746F6E2E6800000000F6FA7D00FFFFFFFF4E443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F6770696F2E68000000001473746D3332663178785F68616C5F6770696F2E68000000005FC3CF00FFFFFFFF53443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C4C65676163795C73746D33325F68616C5F6C65676163792E68000000001273746D33325F68616C5F6C65676163792E6800000000C1838300FFFFFFFF51443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F6770696F5F65782E68000000001773746D3332663178785F68616C5F6770696F5F65782E6800000000B5E99D00FFFFFFFF50443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C434D5349535C4465766963655C53545C53544D3332463178785C496E636C7564655C73746D33326631303378652E68000000000D73746D33326631303378652E68000000005FC3CF00FFFFFFFF34443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C4D6964646C6577617265735C4D6F646275735C4D4F444255532E6300000000084D4F444255532E6300000000C1838300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004001000066000000AB06000020030000 + 1121 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000C000000000000000100000025443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C55736572735C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF36443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C313630313630445C313630313630442E430000000009313630313630442E4300000000FFDC7800FFFFFFFF32443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C52533438355C72733438352E63000000000772733438352E6300000000BECEA100FFFFFFFF2E443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C4B45595C6B65792E6300000000056B65792E6300000000F0A0A100FFFFFFFF36443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C313630313630445C313630313630442E680000000009313630313630442E6800000000BCA8E100FFFFFFFF34443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C4D6964646C6577617265735C4D6F646275735C4D4F444255532E6300000000084D4F444255532E63000000009CC1B600FFFFFFFF32443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C52533438355C72733438352E68000000000772733438352E6800000000F7B88600FFFFFFFF2E443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C4C45445C6C65642E6800000000056C65642E6800000000D9ADC200FFFFFFFF3E443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C313630313630445C47726170686963734C6962726172792E68000000001147726170686963734C6962726172792E6800000000A5C2D700FFFFFFFF34443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C4D6964646C6577617265735C4D6F646275735C4D4F444255532E6800000000084D4F444255532E6800000000B3A6BE00FFFFFFFF2E443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C4253505C4B45595C6B65792E6800000000056B65792E6800000000EAD6A300FFFFFFFF4E443A5C436F64655C44545520B3CCD0F25C4454552D4C43445C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F756172742E68000000001473746D3332663178785F68616C5F756172742E6800000000F6FA7D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004001000066000000AB06000020030000 @@ -490,7 +490,7 @@ 0 16 - 0300000024030000A8060000B8030000 + 0000000021030000AB060000D1030000 16 @@ -526,7 +526,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -1160,13 +1160,13 @@ 38007 38007 - 1 + 0 0 0 0 32767 0 - 4096 + 32768 0 16 @@ -1186,7 +1186,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -1246,7 +1246,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -1266,7 +1266,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -1799,14 +1799,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000130100007007000017010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C400000066000000700700002A010000C40000004F00000070070000130100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0600004F000000B0060000F9020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000B0060000660000007007000010030000B00600004F00000070070000F902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF3C0100004F00000040010000090300000100000002000010040000000100000018FEFFFFB8040000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000003C01000020030000000000004F0000003C010000090300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E502000070070000E902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000000003000070070000D803000000000000E902000070070000C103000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E9020000BC030000C103000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000009030000AB0600000D030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000000000000024030000AB060000E8030000000000000D030000AB060000D10300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000130100007007000017010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C400000066000000700700002A010000C40000004F00000070070000130100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0600004F000000B0060000F9020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000B0060000660000007007000010030000B00600004F00000070070000F902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF3C0100004F00000040010000090300000100000002000010040000000100000018FEFFFFB8040000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000003C01000020030000000000004F0000003C010000090300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E502000070070000E902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000000003000070070000D803000000000000E902000070070000C103000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E9020000BC030000C103000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000009030000AB0600000D030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000000000000024030000AB060000E8030000000000000D030000AB060000D10300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2546 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000245729600000000000000010002457200000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 2576 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000000460000000000000000000000000000000001000000010000000180FE880000000000004500000000000000000000000000000000010000000100000001800B810000000000001300000000000000000000000000000000010000000100000001800C810000000000001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001148414C5F554152545F4552524F525F4E45960000000000000001001148414C5F554152545F4552524F525F4E4500000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1838,1748 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 - - - - 0 - 1707 - 1067 - - - - 1 - Debug - - -1 - -1 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 400100004F000000AB060000CC000000 - - - 16 - C400000066000000700700002A010000 - - - - 1005 - 1005 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000039010000D9020000 - - - 16 - A20700003900000062080000D7000000 - - - - 109 - 109 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000003901000028030000 - - - 16 - A2070000390000001E09000049030000 - - - - 1465 - 1465 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000A8060000B8030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 1466 - 1466 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 1467 - 1467 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 1468 - 1468 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 1506 - 1506 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 1913 - 1913 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 4301000066000000E9070000FA000000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 1935 - 1935 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 5D0300000D030000A8060000B8030000 - - - 16 - A20700003900000062080000D7000000 - - - - 1936 - 1936 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A20700003900000062080000D7000000 - - - - 1937 - 1937 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A20700003900000062080000D7000000 - - - - 1939 - 1939 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 1940 - 1940 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 1941 - 1941 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 1942 - 1942 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 195 - 195 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000003901000028030000 - - - 16 - A2070000390000001E09000049030000 - - - - 196 - 196 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000630000003C01000041030000 - - - 16 - A2070000390000001E09000049030000 - - - - 197 - 197 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 0000000021030000AB060000D1030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 198 - 198 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 00000000F602000056030000D1030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 199 - 199 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0300000024030000FD050000B8030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 203 - 203 - 1 - 0 - 0 - 0 - 32767 - 0 - 8192 - 0 - - 16 - 4001000063000000AB060000CC000000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 204 - 204 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 4301000066000000E9070000FA000000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 221 - 221 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000000000000000000000000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 2506 - 2506 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 2507 - 2507 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 343 - 343 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 4301000066000000E9070000FA000000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 346 - 346 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 4301000066000000E9070000FA000000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 35141 - 35141 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 4301000066000000E9070000FA000000 - - - 16 - A20700003900000062080000D7000000 - - - - 35824 - 35824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 4301000066000000E9070000FA000000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 35885 - 35885 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35886 - 35886 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35887 - 35887 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35888 - 35888 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35889 - 35889 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35890 - 35890 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35891 - 35891 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35892 - 35892 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35893 - 35893 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35894 - 35894 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35895 - 35895 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35896 - 35896 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35897 - 35897 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35898 - 35898 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35899 - 35899 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35900 - 35900 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35901 - 35901 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35902 - 35902 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35903 - 35903 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35904 - 35904 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 35905 - 35905 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 38003 - 38003 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000039010000D9020000 - - - 16 - A2070000390000001E09000049030000 - - - - 38007 - 38007 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0300000024030000FD050000B8030000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 436 - 436 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0300000024030000FD050000B8030000 - - - 16 - A2070000390000001E09000049030000 - - - - 437 - 437 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000A8060000B8030000 - - - 16 - A20700003900000062080000D7000000 - - - - 440 - 440 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000A8060000B8030000 - - - 16 - A20700003900000062080000D7000000 - - - - 463 - 463 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0300000024030000FD050000B8030000 - - - 16 - A2070000390000001E09000049030000 - - - - 466 - 466 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0300000024030000FD050000B8030000 - - - 16 - A2070000390000001E09000049030000 - - - - 470 - 470 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 4301000066000000E9070000FA000000 - - - 16 - A2070000390000005A0B0000FD000000 - - - - 50000 - 50000 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50001 - 50001 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50002 - 50002 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50003 - 50003 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50004 - 50004 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50005 - 50005 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50006 - 50006 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50007 - 50007 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50008 - 50008 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50009 - 50009 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50010 - 50010 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50011 - 50011 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50012 - 50012 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50013 - 50013 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50014 - 50014 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50015 - 50015 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50016 - 50016 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50017 - 50017 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50018 - 50018 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 50019 - 50019 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3060000660000006D070000E0020000 - - - 16 - A20700003900000062080000D7000000 - - - - 59392 - 59392 - 1 - 0 - 0 - 0 - 966 - 0 - 8192 - 0 - - 16 - 0000000000000000D10300001C000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59393 - 0 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000D1030000AB060000E4030000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59399 - 59399 - 0 - 0 - 0 - 0 - 476 - 0 - 8192 - 1 - - 16 - 000000001C000000E701000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59400 - 59400 - 1 - 0 - 0 - 0 - 612 - 0 - 8192 - 2 - - 16 - 000000001C0000006F02000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 824 - 824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 5D0300000D030000C70A0000B5030000 - - - 16 - A20700003900000062080000D7000000 - - - - 3312 - 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFF40010000CC000000AB060000D0000000010000000100000004000000010000003EFFFFFFD6010000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000C400000066000000700700002A010000400100004F000000AB060000CC0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0600004F000000B0060000F9020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000B0060000660000007007000010030000B00600004F00000070070000F902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF3C0100004F00000040010000F20200000100000002000010040000000100000018FEFFFFB8040000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000EA01000055020000000000004F0000003C010000F20200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000F2020000AB060000F602000001000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000001000000000000000003000070070000D80300005A030000F6020000AB060000D103000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7301000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727301000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF000000000000000001000000000000000100000001000000FFFFFFFF56030000F60200005A030000D103000001000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000009030000AB0600000D030000000000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000000000000000000059020000000600001D030000000000000D030000AB060000D10300000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 - - - 59392 - File - - 2657 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000009414443526573756C749600000000000000060009414443526573756C740F424C44435F43757272656E742E49620F424C44435F43757272656E742E496113675F66726571526566456E636F6465725131300C4D41585F465245515F5131300B61726D5F73696E5F663332000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 - - - - 59399 - Build - - 976 - 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000004001D000000000000000000000000000000000100000001000000018030800000000004001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000004006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000400000000000000000000000000000000000001000000010000009600000003002050000000000854656D706C617465960000000000000001000854656D706C617465000000000180EB880000000004002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000400230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 - - - - 59400 - Debug - - 2362 - 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -3606,135 +1865,108 @@ 0 ..\..\Users\main.c - 16 - 57 - 73 + 53 + 91 + 111 1 0 ..\..\Drivers\BSP\160160D\160160D.C - 1 - 1629 - 1667 - 1 - - 0 - - - ..\..\Drivers\BSP\WDOG\wdog.c - 32 + 28 1 - 34 + 17 1 0 - ..\..\Drivers\BSP\160160D\160160D.h - 20 - 71 - 92 - 1 - - 0 - - - ..\..\Drivers\BSP\WDOG\wdog.h - 52 - 1 - 9 - 1 - - 0 - - - ..\..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h - 7 - 141 - 152 + ..\..\Drivers\BSP\RS485\rs485.c + 46 + 340 + 392 1 0 ..\..\Drivers\BSP\KEY\key.c - 38 - 107 - 125 + 42 + 47 + 48 1 0 - ..\..\Drivers\BSP\KEY\key.h - 51 - 1 - 34 - 1 - - 0 - - - ..\..\Drivers\BSP\KEY\MultiButton.c - 35 - 118 - 139 - 1 - - 0 - - - ..\..\Drivers\BSP\KEY\MultiButton.h + ..\..\Drivers\BSP\160160D\160160D.h 17 - 1 - 14 - 1 - - 0 - - - ..\..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h - 18 - 71 - 82 - 1 - - 0 - - - ..\..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy/stm32_hal_legacy.h - 0 - 786 - 799 - 1 - - 0 - - - ..\..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h - 0 - 483 - 484 - 1 - - 0 - - - ..\..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xe.h - 0 - 2596 - 2609 + 52 + 70 1 0 ..\..\Middlewares\Modbus\MODBUS.c + 66 + 330 + 351 + 1 + + 0 + + + ..\..\Drivers\BSP\RS485\rs485.h + 26 + 1 + 23 + 1 + + 0 + + + ..\..\Drivers\BSP\LED\led.h + 15 + 6 + 33 + 1 + + 0 + + + ..\..\Drivers\BSP\160160D\GraphicsLibrary.h + 21 + 1172 + 1185 + 1 + + 0 + + + ..\..\Middlewares\Modbus\MODBUS.h + 5 + 17 + 32 + 1 + + 0 + + + ..\..\Drivers\BSP\KEY\key.h + 33 + 29 + 41 + 1 + + 0 + + + ..\..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h 0 - 153 - 188 + 226 + 258 1 0 diff --git a/Projects/MDK-ARM/atk_f103.uvoptx b/Projects/MDK-ARM/atk_f103.uvoptx index d7d7945..e85af11 100644 --- a/Projects/MDK-ARM/atk_f103.uvoptx +++ b/Projects/MDK-ARM/atk_f103.uvoptx @@ -12,7 +12,7 @@ *.lib *.txt; *.h; *.inc; *.md *.plm - *.cpp + *.cpp; *.cc; *.cxx 0 @@ -117,35 +117,15 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F10x_512 -FL080000 -FS08000000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM) - 0 ST-LINKIII-KEIL_SWO - -U12029401190032524B413836 -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(1BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8000 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM) + -U12029401190032524B413836 -O206 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM) 0 - ARMRTXEVENTFLAGS - -L70 -Z18 -C0 -M0 -T1 - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512 -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM)) @@ -154,13 +134,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -223,7 +203,7 @@ User - 1 + 0 0 0 0 @@ -279,7 +259,7 @@ Drivers/SYSTEM - 0 + 1 0 0 0 diff --git a/Projects/MDK-ARM/atk_f103.uvprojx b/Projects/MDK-ARM/atk_f103.uvprojx index 539b19b..4ca9004 100644 --- a/Projects/MDK-ARM/atk_f103.uvprojx +++ b/Projects/MDK-ARM/atk_f103.uvprojx @@ -16,8 +16,8 @@ STM32F103ZE STMicroelectronics - Keil.STM32F1xx_DFP.2.4.1 - https://www.keil.com/pack/ + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ IRAM(0x20000000,0x00010000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE diff --git a/Users/main.c b/Users/main.c index 21893b7..bbfa66a 100644 --- a/Users/main.c +++ b/Users/main.c @@ -18,21 +18,13 @@ #include "main.h" -/* ============================================================================ - * 宏定义 - * ============================================================================ */ -#define TIMER 5 /**< 定时器周期(毫秒) */ -#define LED_TOGGLE_TIME 1000 /**< 系统运行指示灯闪烁周期(毫秒),即 LED 点亮持续时间 */ - /* ============================================================================ * 全局变量定义 * ============================================================================ */ volatile static uint32_t sysRunTime = 0; /**< 系统运行时间计数器(单位:5ms) */ +volatile static KEY_TYPE keyStatus = KEY_NONE; /**< 按键状态指示(当前按键值) */ +volatile static KEY_TYPE keyStatusBack = KEY_NONE; /**< 按键状态指示(当前按键值) */ volatile static uint8_t LED_ToggleFlag = 0; /**< LED 闪烁定时标志位(1=需要翻转) */ -static KEY_TYPE keyStatus = KEY_NONE; /**< 按键状态指示(当前按键值) */ -static uint8_t ConnectFlg = 0; /**< 连接标志:1=已连接,0=未连接 */ -volatile static uint32_t KEY_RUN_Count = 0; /**< 按键按下时 LCD 屏幕显示计时计数器(单位:5ms) */ - /* ============================================================================ * 内部函数实现 * ============================================================================ */ @@ -51,32 +43,8 @@ volatile static uint32_t KEY_RUN_Count = 0; /**< 按键按下时 LCD 屏 static void Key_ProcessCallback(KEY_TYPE key_type) { BackLight_ON(); /**< 任意按键按下,都打开背光 */ - - KeyRun_Disp(1); /**< 有按键按下,LCD 显示按键指示 */ - KEY_RUN_Count = 0; /**< 重置按键显示计时器 */ - keyStatus = key_type; /**< 更新按键状态,供主循环处理 */ } - -/** - * @brief 按键显示自动关闭处理 - * @note 在定时器中断中调用,用于自动关闭按键按下后的 LCD 显示指示 - * 处理逻辑: - * - KEY_RUN_Count 递增(每 5ms 一次) - * - 当计数达到 15(约 75ms)时,关闭按键显示 - * - 计数限制在 15,防止溢出 - * @retval 无 - */ -void KeyRun_Disp_Close(void) -{ - KEY_RUN_Count++; - if (KEY_RUN_Count >= 15) - { - KEY_RUN_Count = 15; /**< 限制最大计数,防止溢出 */ - KeyRun_Disp(0); /**< 关闭按键显示指示 */ - } -} - /* ============================================================================ * 主程序入口 * ============================================================================ */ @@ -128,28 +96,29 @@ int main(void) /* ========== 通信与显示初始化 ========== */ Process_Init(); /**< Modbus 通信任务初始化 */ - NL_LOGO_Printf(); /**< 显示存储的 LOGO(从 Flash 读取) */ /* ========== 定时器与回调注册 ========== */ gtim_timx_int_init(50-1, 7200-1); /**< 定时器初始化:5ms 周期(50×0.1ms,7200 分频) */ Key_RegisterCallback(Key_ProcessCallback); /**< 注册按键回调函数 */ + /* ========== 主循环 ========== */ while (1) { - /* LED 指示灯闪烁控制(仅在已连接状态下闪烁) */ - if (ConnectFlg == 1) + if (LED_ToggleFlag == 1) { - if (LED_ToggleFlag == 1) - { - LED_ToggleFlag = 0; /**< 清除闪烁标志 */ - LED_Toggle(LED_RUN); /**< 翻转运行指示灯 */ - } + LED_ToggleFlag = 0; /**< 清除闪烁标志 */ +// LED_Toggle(15); /**< 翻转运行指示灯 */ + } + /* 快速的处理 keyStatus 的状态,避免与中断处理冲突*/ + if(keyStatus != KEY_NONE) + { + keyStatusBack = keyStatus; + keyStatus = KEY_NONE; } - /* RS485 Modbus 通信处理(包含按键上报) */ - ConnectFlg = RS485_Process(keyStatus, ConnectFlg); - keyStatus = KEY_NONE; /**< 清除按键状态(已处理) */ + RS485_Process(keyStatusBack); + keyStatusBack = KEY_NONE; /* 系统运行时间监控与自动复位保护 */ if (sysRunTime > 1000000) /**< 约 5000 秒(1000000 × 5ms) */ @@ -157,6 +126,7 @@ int main(void) HAL_NVIC_SystemReset(); /**< 系统立即复位(防止长时间运行异常) */ sysRunTime = 0; } + } } @@ -177,7 +147,7 @@ int main(void) * * 定时器配置:5ms 周期 * 中断标志:TIM_FLAG_UPDATE(定时器溢出标志) - * @retval 无 + * @retval 无 */ void GTIM_TIMX_INT_IRQHandler(void) { @@ -185,18 +155,15 @@ void GTIM_TIMX_INT_IRQHandler(void) if (__HAL_TIM_GET_FLAG(&g_timx_handle, TIM_FLAG_UPDATE) != RESET) { sysRunTime++; /**< 系统运行时间计数递增 */ - /* LED 闪烁标志更新:每 200 次中断(1 秒)翻转一次 */ - if (sysRunTime % (LED_TOGGLE_TIME / 5) == 0) + if (sysRunTime % 200 == 0) { LED_ToggleFlag = 1; /**< 设置 LED 闪烁标志 */ } - Button_Ticks(); /**< 按键检测扫描(MultiButton 库) */ Clear_Watchdog(); /**< 看门狗喂狗 */ BackLight_Close(); /**< 背光关闭检测 */ Process_Count(); /**< Modbus 通信轮询计数 */ - KeyRun_Disp_Close(); /**< LCD 屏幕按键指示自动关闭处理 */ __HAL_TIM_CLEAR_IT(&g_timx_handle, TIM_IT_UPDATE); /**< 清除定时器溢出中断标志 */ }