diff --git a/Part1_Sensor_board/Firmware/Application/adc.c b/Part1_Sensor_board/Firmware/Application/adc.c index 667aa42..310f087 100644 --- a/Part1_Sensor_board/Firmware/Application/adc.c +++ b/Part1_Sensor_board/Firmware/Application/adc.c @@ -5,8 +5,6 @@ ADC_HandleTypeDef hadc; /* ADC init function */ void MX_ADC_Init(void) { - ADC_ChannelConfTypeDef sConfig = {0}; - /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) */ hadc.Instance = ADC1; diff --git a/Part1_Sensor_board/Firmware/Application/i2c.c b/Part1_Sensor_board/Firmware/Application/i2c.c index 5d6435b..d877f9a 100644 --- a/Part1_Sensor_board/Firmware/Application/i2c.c +++ b/Part1_Sensor_board/Firmware/Application/i2c.c @@ -1,3 +1,4 @@ +#include "main.h" #include "i2c.h" #include "usart.h" @@ -6,91 +7,80 @@ #define LOGGER_TAG "I2C" #include "logger.h" -/* USER CODE BEGIN 0 */ -#define I2C_BUFF_LEN 30 + +#define I2C_ADDRESS (0x1F << 1) +#define I2C_TIMING 0x20602938 /* 100 kHz with analog Filter ON, Rise Time 400ns, Fall Time 100ns */ +#define I2C_BUFF_LEN 30 + + volatile uint8_t pI2CBuff[I2C_BUFF_LEN] = {0}; volatile uint8_t nBuffPos = 0; I2C_HandleTypeDef hi2c1; + /* I2C1 init function */ void MX_I2C1_Init(void) { + /*##-1- Configure the I2C peripheral ######################################*/ + hi2c1.Instance = I2Cx; + hi2c1.Init.Timing = I2C_TIMING; + hi2c1.Init.OwnAddress1 = I2C_ADDRESS; + hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; + hi2c1.Init.OwnAddress2 = 0xFF; + hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_ENABLE; - hi2c1.Instance = I2C1; - hi2c1.Init.Timing = 0x00707CBB; - hi2c1.Init.OwnAddress1 = 0x32; - hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; - hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; - hi2c1.Init.OwnAddress2 = 0; - hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; - hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; - // hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_ENABLE; - hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; - // hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_ENABLE; - - if (HAL_I2C_Init(&hi2c1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Analogue filter - */ - if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) - { - Error_Handler(); - } - /** Configure Digital filter - */ - if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) - { - Error_Handler(); - } - - while(HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY); - HAL_StatusTypeDef status; - if( (status=HAL_I2C_Slave_Receive_IT(&hi2c1, pI2CBuff, 4)) != HAL_OK) - { - while(1); - } - - - /* I2C1 interrupt Init */ - HAL_NVIC_SetPriority(I2C1_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(I2C1_IRQn); + if(HAL_I2C_Init(&hi2c1) != HAL_OK) + { + /* Initialization Error */ + Error_Handler(); + } + /* Enable the Analog I2C Filter */ + HAL_I2CEx_ConfigAnalogFilter(&hi2c1,I2C_ANALOGFILTER_ENABLE); } -void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) +void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) { + GPIO_InitTypeDef GPIO_InitStruct; + RCC_PeriphCLKInitTypeDef RCC_PeriphCLKInitStruct; + + /*##-1- Configure the I2C clock source. The clock is derived from the SYSCLK #*/ + RCC_PeriphCLKInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2Cx; + RCC_PeriphCLKInitStruct.I2c1ClockSelection = RCC_I2CxCLKSOURCE_SYSCLK; + HAL_RCCEx_PeriphCLKConfig(&RCC_PeriphCLKInitStruct); - GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(i2cHandle->Instance==I2C1) - { - /* USER CODE BEGIN I2C1_MspInit 0 */ + /*##-2- Enable peripherals and GPIO Clocks #################################*/ + /* Enable GPIO TX/RX clock */ + I2Cx_SCL_GPIO_CLK_ENABLE(); + I2Cx_SDA_GPIO_CLK_ENABLE(); + /* Enable I2Cx clock */ + I2Cx_CLK_ENABLE(); - /* USER CODE END I2C1_MspInit 0 */ + /*##-3- Configure peripheral GPIO ##########################################*/ + /* I2C TX GPIO pin configuration */ + GPIO_InitStruct.Pin = I2Cx_SCL_PIN; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = I2Cx_SCL_SDA_AF; + HAL_GPIO_Init(I2Cx_SCL_GPIO_PORT, &GPIO_InitStruct); + + /* I2C RX GPIO pin configuration */ + GPIO_InitStruct.Pin = I2Cx_SDA_PIN; + GPIO_InitStruct.Alternate = I2Cx_SCL_SDA_AF; + HAL_GPIO_Init(I2Cx_SDA_GPIO_PORT, &GPIO_InitStruct); + + /*##-4- Configure the NVIC for I2C ########################################*/ + /* NVIC for I2Cx */ + HAL_NVIC_SetPriority(I2Cx_IRQn, 0, 1); + HAL_NVIC_EnableIRQ(I2Cx_IRQn); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __DSB(); - HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET); - HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_SET); - /**I2C1 GPIO Configuration - PA9 ------> I2C1_SCL - PA10 ------> I2C1_SDA - */ - GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; - GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF1_I2C1; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* I2C1 clock enable */ - __HAL_RCC_I2C1_CLK_ENABLE(); - } } void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle) @@ -98,101 +88,83 @@ void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle) if(i2cHandle->Instance==I2C1) { - /* Peripheral clock disable */ - __HAL_RCC_I2C1_CLK_DISABLE(); + I2Cx_FORCE_RESET(); + I2Cx_RELEASE_RESET(); - /**I2C1 GPIO Configuration - PA9 ------> I2C1_SCL - PA10 ------> I2C1_SDA - */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9); - - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_10); + /*##-2- Disable peripherals and GPIO Clocks #################################*/ + /* Configure I2C Tx as alternate function */ + HAL_GPIO_DeInit(I2Cx_SCL_GPIO_PORT, I2Cx_SCL_PIN); + /* Configure I2C Rx as alternate function */ + HAL_GPIO_DeInit(I2Cx_SDA_GPIO_PORT, I2Cx_SDA_PIN); + /*##-3- Disable the NVIC for I2C ##########################################*/ + HAL_NVIC_DisableIRQ(I2Cx_IRQn); } } -void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) +void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *pI2c_Handle) { - uint8_t msg[] = "Tx\r\n"; - HAL_UART_PutStr(msg, sizeof(msg)); + /** Error_Handler() function is called when error occurs. + * 1- When Slave don't acknowledge it's address, Master restarts communication. + * 2- When Master don't acknowledge the last data transferred, Slave don't care in this example. + */ + if (HAL_I2C_GetError(pI2c_Handle) != HAL_I2C_ERROR_AF) + { + // Error_Handler(); + } } -void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) -{ - uint8_t msg[] = "Rx\r\n"; - HAL_UART_PutStr(msg, sizeof(msg)); - nBuffPos = 4; - - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_TXE); // Transmit data register empty - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_ADDR); // Address matched (slave mode) - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_AF); // Acknowledge failure received flag - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_STOPF); // STOP detection flag - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_BERR); // Bus error - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_ARLO); // Arbitration lost - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_OVR); // Overrun/Underrun - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_PECERR); // PEC error in reception - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_TIMEOUT); // Timeout or Tlow detection flag - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_ALERT); // SMBus alert -} void I2C_GetBuffer(uint8_t **ret_pBuff, uint8_t *pBufferLen) { if(ret_pBuff == NULL || pBufferLen == NULL) { + Logger_ERROR("Invalid argument!"); return; } *ret_pBuff = (uint8_t *)pI2CBuff; - *pBufferLen = nBuffPos; -} - -uint8_t I2C_GetBufferLenght(void) -{ - return nBuffPos; + *pBufferLen = I2C_BUFF_LEN; } void I2C_ClearBuffer(void) { - nBuffPos = 0; + for(uint8_t i=0; i= I2C_BUFF_LEN-1) - // { - // nBuffPos = 0; - // } + HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)pI2CBuff, I2C_BUFF_LEN); } -void I2C_RestartITReceive(void) +bool I2C_DeviceInReadyState(void) { - // HAL_I2C_DisableListen_IT(&hi2c1); - - // __HAL_I2C_ENABLE_IT(&hi2c1, I2C_IT_ERRI); // Errors interrupt enable - // __HAL_I2C_ENABLE_IT(&hi2c1, I2C_IT_TCI); // Transfer complete interrupt enable - // __HAL_I2C_ENABLE_IT(&hi2c1, I2C_IT_STOPI); // STOP detection interrupt enable - // __HAL_I2C_ENABLE_IT(&hi2c1, I2C_IT_NACKI); // NACK received interrupt enable - // __HAL_I2C_ENABLE_IT(&hi2c1, I2C_IT_ADDRI); // Address match interrupt enable - // __HAL_I2C_ENABLE_IT(&hi2c1, I2C_IT_RXI); // RX interrupt enable - // __HAL_I2C_ENABLE_IT(&hi2c1, I2C_IT_TXI); // TX interrupt enable - - // HAL_I2C_Slave_Seq_Receive_IT(&hi2c1, (uint8_t *)&pI2CBuff[nBuffPos], 1, I2C_LAST_FRAME_NO_STOP); //Enable slave interrupt reception - // I2C_ReloadIT(); - // HAL_I2C_EnableListen_IT(&hi2c1); + return (HAL_I2C_GetState(&hi2c1) == HAL_I2C_STATE_READY); } +bool I2C_SendBuffer(uint8_t *pTXBuff, uint8_t nTXBufferLen) +{ + if(pTXBuff == NULL) + { + Logger_ERROR("Invalid pointer!"); + return false; + } + + if (nTXBufferLen >= I2C_BUFF_LEN) + { + Logger_ERROR("nTXBufferLen too big"); + return false; + } + + if(HAL_I2C_Slave_Transmit(&hi2c1, pTXBuff, nTXBufferLen, 0xFFFFF) != HAL_OK) + { + return false; + } + return true; +} diff --git a/Part1_Sensor_board/Firmware/Application/i2c.h b/Part1_Sensor_board/Firmware/Application/i2c.h index 5471021..6dd3c3a 100644 --- a/Part1_Sensor_board/Firmware/Application/i2c.h +++ b/Part1_Sensor_board/Firmware/Application/i2c.h @@ -6,13 +6,13 @@ extern I2C_HandleTypeDef hi2c1; void MX_I2C1_Init(void); -void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c); -void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c); void I2C_GetBuffer(uint8_t **ret_pBuff, uint8_t *pBufferLen); -uint8_t I2C_GetBufferLenght(void); -void I2C_ReloadIT(void); void I2C_ClearBuffer(void); -void I2C_RestartITReceive(void); +void I2C_RestartReceive(void); +bool I2C_DeviceInReadyState(void); +bool I2C_SendBuffer(uint8_t *pTXBuff, uint8_t nTXBufferLen); +void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *I2cHandle); + #endif /*__ i2c_H */ diff --git a/Part1_Sensor_board/Firmware/Application/main.c b/Part1_Sensor_board/Firmware/Application/main.c index c5a3c42..6e463c8 100644 --- a/Part1_Sensor_board/Firmware/Application/main.c +++ b/Part1_Sensor_board/Firmware/Application/main.c @@ -8,158 +8,167 @@ #define LOGGER_TAG "MAIN" #include "logger.h" -uint32_t nTickTarget_PrintDebug = 0; -uint32_t nTickTarget_TakeMeasurement = 0; +#define TX_BUFF_SIZE 10 +static uint8_t pTXBuff[TX_BUFF_SIZE] = {0xFF}; +static uint8_t nTXBufferLen = 0; +uint8_t *pBuff = NULL; +uint8_t nBufferLen = 0; +uint32_t nTickTarget_PrintDebug = 0; +uint32_t nTickTarget_TakeMeasurement = 0; -#define TX_BUFF_SIZE 10 -static uint8_t pTXBuff[TX_BUFF_SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; -static uint8_t nTXBufferLen = 0; +static void PlantSystem_ProcessRequest(void); int main(void) { - BoardInit(); + BoardInit(); + HAL_Delay(500); - Logger_INFO("Hello there!"); - HAL_Delay(1000); + Logger_INFO("PlantSensor v0.1"); + Logger_INFO("Build date: %s %s", __DATE__, __TIME__); - __enable_irq(); - uint8_t *pBuff = NULL; - uint8_t nBufferLen = 0; - HAL_I2C_StateTypeDef status; + I2C_RestartReceive(); - while (1) - { + while (1) + { + // Check if I2C is ready for processing + if(I2C_DeviceInReadyState() == true) + { + I2C_GetBuffer(&pBuff, &nBufferLen); + // Check valid command is received + if(pBuff[0] > CMD_FIRST && pBuff[0] < CMD_LAST) + { + PlantSystem_ProcessRequest(); + } + + // // Clear RX buffer and reset receive + I2C_ClearBuffer(); + while (I2C_DeviceInReadyState() != true) + { + } + I2C_RestartReceive(); + } - // Take soil moisture, temperature and ambient light measurements - if(HAL_GetTick() >= nTickTarget_TakeMeasurement) - { - Sensor_TakeMeasurement(); - nTickTarget_TakeMeasurement = HAL_GetTick() + 500; - } + // Take soil moisture, temperature and ambient light measurements + if(HAL_GetTick() >= nTickTarget_TakeMeasurement) + { + Sensor_TakeMeasurement(); + nTickTarget_TakeMeasurement = HAL_GetTick() + 500; + } - // Print Sensor debug over uart every 1 sec - if(HAL_GetTick() >= nTickTarget_PrintDebug) - { - Sensors_PrintDebug(); - nTickTarget_PrintDebug = HAL_GetTick() + 1000; - } + // Print Sensor debug over uart every 1 sec + if(HAL_GetTick() >= nTickTarget_PrintDebug) + { + Sensors_PrintDebug(); + nTickTarget_PrintDebug = HAL_GetTick() + 1000; + } - // Wait for I2C to be IDLE (HAL_I2C_STATE_READY) - status = HAL_I2C_GetState(&hi2c1); - // if(status == HAL_I2C_STATE_READY) - // { - - // Check if we received enough bytes to start processing - nBufferLen = I2C_GetBufferLenght(); - if(nBufferLen >= PLANTSYSTEM_MIN_HEADER_LENGHT) - { - I2C_GetBuffer(&pBuff, &nBufferLen); - - #if 1 - uint8_t i=0; - for (i=0; i<5; i++) - { - Logger_INFO("0x%02X", pBuff[i]); - } - #endif - - uint8_t cmd=0; - uint8_t dataType=0; - uint8_t dataLength=0; - - if (PlanSystem_ParseBuffer(pBuff, nBufferLen, &cmd, &dataType, &dataLength)) - { - Logger_INFO("Success"); - - switch(cmd) - { - // Get device information - case CMD_GET_DEVICE_INFO: - { - nTXBufferLen=0; - Logger_INFO("I"); - } - break; - - // Read temperature - case CMD_GET_TEMPERATURE: - { - pTXBuff[0] = CMD_GET_TEMPERATURE; - pTXBuff[1] = DATATYPE_SINGLE_VALUE; - pTXBuff[2] = 2; - Sensors_GetTemperatureReading(&pTXBuff[3], &pTXBuff[4]); - nTXBufferLen = 5; - Logger_INFO("T"); - } - break; - - // Read soil moisture - case CMD_GET_SOILMOISTURE: - { - pTXBuff[0] = CMD_GET_SOILMOISTURE; - pTXBuff[1] = DATATYPE_SINGLE_VALUE; - pTXBuff[2] = 4; - Sensors_GetSoilMoistureReading(&pTXBuff[3], &pTXBuff[4], &pTXBuff[5], &pTXBuff[6]); - nTXBufferLen = 7; - Logger_INFO("M"); - } - break; - - // Read ambient light - case CMD_GET_AMBIENTLIGHT: - { - pTXBuff[0] = CMD_GET_AMBIENTLIGHT; - pTXBuff[1] = DATATYPE_SINGLE_VALUE; - pTXBuff[2] = 4; - Sensors_GetAmbientLightReading(&pTXBuff[3], &pTXBuff[4], &pTXBuff[5], &pTXBuff[6]); - nTXBufferLen = 7; - Logger_INFO("A"); - } - break; - - default: - nTXBufferLen=0; - Logger_INFO("D"); - break; - } - } - // PlanSystem_ParseBuffer returned false - else - { - nTXBufferLen=0; - Logger_INFO("FF"); - } - - // Setup response if necessary - // -- Check TX length - if(nTXBufferLen>= TX_BUFF_SIZE-1) - { - nTXBufferLen = TX_BUFF_SIZE; - } - // -- Send data - if(nTXBufferLen > 0) - { - while(HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY); - if(HAL_I2C_Slave_Transmit(&hi2c1, pTXBuff, nTXBufferLen, 0xFFFF) != HAL_OK) - { - while(1); - } - // HAL_I2C_Slave_Transmit_IT(&hi2c1, pTXBuff, nTXBufferLen); - } - - - // Reset I2C state machine - I2C_ClearBuffer(); - I2C_ReloadIT(); - } - - - // } - - } + } } +static void PlantSystem_ProcessRequest(void) +{ + uint8_t cmd=0; + uint8_t dataType=0; + uint8_t dataLength=0; + + I2C_GetBuffer(&pBuff, &nBufferLen); + + if (PlanSystem_ParseBuffer(pBuff, nBufferLen, &cmd, &dataType, &dataLength)) + { + Logger_INFO("Success"); + + switch(cmd) + { + // Get device information + case CMD_GET_DEVICE_INFO: + { + pTXBuff[0] = CMD_GET_DEVICE_INFO; + pTXBuff[1] = DATATYPE_SINGLE_VALUE; + pTXBuff[2] = 0; // Upper byte of data length + pTXBuff[3] = 4; // Lower byte of data length + pTXBuff[4] = DEVICETYPE_SENSOR_V1; + pTXBuff[5] = 'T'; // Optional bytes to indicate capabilities (temp, humid, light) + pTXBuff[6] = 'H'; // Optional bytes to indicate capabilities (temp, humid, light) + pTXBuff[7] = 'L'; // Optional bytes to indicate capabilities (temp, humid, light) + nTXBufferLen = 8; + Logger_INFO("I"); + } + break; + + // Read temperature + case CMD_GET_TEMPERATURE: + { + pTXBuff[0] = CMD_GET_TEMPERATURE; + pTXBuff[1] = DATATYPE_SINGLE_VALUE; + pTXBuff[2] = 2; + Sensors_GetTemperatureReading(&pTXBuff[3], &pTXBuff[4]); + nTXBufferLen = 5; + Logger_INFO("T"); + } + break; + + // Read soil moisture + case CMD_GET_SOILMOISTURE: + { + pTXBuff[0] = CMD_GET_SOILMOISTURE; + pTXBuff[1] = DATATYPE_SINGLE_VALUE; + pTXBuff[2] = 4; + Sensors_GetSoilMoistureReading(&pTXBuff[3], &pTXBuff[4], &pTXBuff[5], &pTXBuff[6]); + nTXBufferLen = 7; + Logger_INFO("M"); + } + break; + + // Read ambient light + case CMD_GET_AMBIENTLIGHT: + { + pTXBuff[0] = CMD_GET_AMBIENTLIGHT; + pTXBuff[1] = DATATYPE_SINGLE_VALUE; + pTXBuff[2] = 4; + Sensors_GetAmbientLightReading(&pTXBuff[3], &pTXBuff[4], &pTXBuff[5], &pTXBuff[6]); + nTXBufferLen = 7; + Logger_INFO("A"); + } + break; + + default: + nTXBufferLen=0; + Logger_INFO("D"); + break; + } + } + // PlanSystem_ParseBuffer returned false + else + { + nTXBufferLen=0; + Logger_INFO("FF"); + } + + // Setup response if necessary + // -- Check TX length + if(nTXBufferLen>= TX_BUFF_SIZE-1) + { + nTXBufferLen = TX_BUFF_SIZE; + } + // -- Send data + if(nTXBufferLen > 0) + { + Logger_DEBUG("TX"); + + uint32_t timeout = HAL_GetTick() + 5000; + I2C_SendBuffer(pTXBuff, nTXBufferLen); + while (I2C_DeviceInReadyState() != true) + { + if(HAL_GetTick() > timeout) + { + Logger_ERROR("TX timeout"); + return; + } + } + Logger_DEBUG("TX end"); + } +} diff --git a/Part1_Sensor_board/Firmware/Application/main.h b/Part1_Sensor_board/Firmware/Application/main.h index f92357e..31bfd9b 100644 --- a/Part1_Sensor_board/Firmware/Application/main.h +++ b/Part1_Sensor_board/Firmware/Application/main.h @@ -6,19 +6,41 @@ void Error_Handler(void); -#define VCP_TX_Pin GPIO_PIN_2 -#define VCP_TX_GPIO_Port GPIOA -#define TMS_Pin GPIO_PIN_13 -#define TMS_GPIO_Port GPIOA -#define TCK_Pin GPIO_PIN_14 -#define TCK_GPIO_Port GPIOA -#define VCP_RX_Pin GPIO_PIN_15 -#define VCP_RX_GPIO_Port GPIOA -#define LD3_Pin GPIO_PIN_3 -#define LD3_GPIO_Port GPIOB -#define TEMP_ALERT_Pin GPIO_PIN_6 -#define TEMP_ALERT_GPIO_Port GPIOB +#define VCP_TX_Pin GPIO_PIN_2 +#define VCP_TX_GPIO_Port GPIOA +#define TMS_Pin GPIO_PIN_13 +#define TMS_GPIO_Port GPIOA +#define TCK_Pin GPIO_PIN_14 +#define TCK_GPIO_Port GPIOA +#define VCP_RX_Pin GPIO_PIN_15 +#define VCP_RX_GPIO_Port GPIOA +#define LD3_Pin GPIO_PIN_3 +#define LD3_GPIO_Port GPIOB +#define TEMP_ALERT_Pin GPIO_PIN_6 +#define TEMP_ALERT_GPIO_Port GPIOB +/* Definition for I2Cx */ +#define I2Cx I2C1 +#define RCC_PERIPHCLK_I2Cx RCC_PERIPHCLK_I2C1 +#define RCC_I2CxCLKSOURCE_SYSCLK RCC_I2C1CLKSOURCE_SYSCLK +#define I2Cx_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE() +#define I2Cx_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define I2Cx_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() + +#define I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET() +#define I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET() + +/* Definition for I2Cx Pins */ +#define I2Cx_SCL_PIN GPIO_PIN_9 +#define I2Cx_SCL_GPIO_PORT GPIOA +#define I2Cx_SDA_PIN GPIO_PIN_10 +#define I2Cx_SDA_GPIO_PORT GPIOA +#define I2Cx_SCL_SDA_AF GPIO_AF1_I2C1 + +/* Definition for I2Cx's NVIC */ +#define I2Cx_IRQn I2C1_IRQn +#define I2Cx_IRQHandler I2C1_IRQHandler + #endif diff --git a/Part1_Sensor_board/Firmware/Application/stm32l0xx_it.c b/Part1_Sensor_board/Firmware/Application/stm32l0xx_it.c index 1f0520f..4f82af3 100644 --- a/Part1_Sensor_board/Firmware/Application/stm32l0xx_it.c +++ b/Part1_Sensor_board/Firmware/Application/stm32l0xx_it.c @@ -5,7 +5,6 @@ extern I2C_HandleTypeDef hi2c1; - /******************************************************************************/ /* Cortex-M0+ Processor Interruption and Exception Handlers */ /******************************************************************************/ @@ -60,29 +59,8 @@ void SysTick_Handler(void) */ void I2C1_IRQHandler(void) { - if (hi2c1.Instance->ISR & (I2C_FLAG_BERR | I2C_FLAG_ARLO | I2C_FLAG_OVR)) { HAL_I2C_ER_IRQHandler(&hi2c1); - - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_TXE); // Transmit data register empty - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_ADDR); // Address matched (slave mode) - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_AF); // Acknowledge failure received flag - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_STOPF); // STOP detection flag - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_BERR); // Bus error - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_ARLO); // Arbitration lost - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_OVR); // Overrun/Underrun - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_PECERR); // PEC error in reception - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_TIMEOUT); // Timeout or Tlow detection flag - __HAL_I2C_CLEAR_FLAG(&hi2c1, I2C_FLAG_ALERT); // SMBus alert - - } - else { HAL_I2C_EV_IRQHandler(&hi2c1); - // I2C_ReloadIT(); - } - - HAL_NVIC_ClearPendingIRQ(I2C1_IRQn); - - } diff --git a/Part1_Sensor_board/Firmware/Lib/Communication/PlantSystem.c b/Part1_Sensor_board/Firmware/Lib/Communication/PlantSystem.c index f2a91af..025b5b2 100644 --- a/Part1_Sensor_board/Firmware/Lib/Communication/PlantSystem.c +++ b/Part1_Sensor_board/Firmware/Lib/Communication/PlantSystem.c @@ -1,6 +1,9 @@ #include "main.h" #include "PlantSystem.h" +#define MIN_LOG_LEVEL_ERROR +#define LOGGER_TAG "PS" +#include "logger.h" bool PlanSystem_ParseBuffer(uint8_t *pBuffer, uint8_t nBufferLen, uint8_t *cmd, uint8_t *dataType, uint8_t *dataLength) @@ -8,12 +11,14 @@ bool PlanSystem_ParseBuffer(uint8_t *pBuffer, uint8_t nBufferLen, uint8_t *cmd, // Check for null pointers if( (pBuffer==NULL) || (cmd==NULL) || (dataType==NULL) || (dataLength==NULL)) { + Logger_ERROR("Invalid call argument!"); return false; } // Check buffer length if(nBufferLen < PLANTSYSTEM_MIN_HEADER_LENGHT) { + Logger_DEBUG("Buffer length too short"); return false; } @@ -25,12 +30,14 @@ bool PlanSystem_ParseBuffer(uint8_t *pBuffer, uint8_t nBufferLen, uint8_t *cmd, // Check command if((*cmd<=CMD_FIRST) || (*cmd>=CMD_LAST)) { + Logger_DEBUG("Unsupported command"); return false; } // Check datatype if((*dataType<=DATATYPE_FIRST) || (*dataType>=DATATYPE_LAST)) { + Logger_DEBUG("Unsupported data type"); return false; } diff --git a/Part1_Sensor_board/Firmware/Lib/Communication/PlantSystem.h b/Part1_Sensor_board/Firmware/Lib/Communication/PlantSystem.h index 8a08934..bc25775 100644 --- a/Part1_Sensor_board/Firmware/Lib/Communication/PlantSystem.h +++ b/Part1_Sensor_board/Firmware/Lib/Communication/PlantSystem.h @@ -24,7 +24,16 @@ typedef enum DATATYPE_SINGLE_VALUE, DATATYPE_KEY_VALUE_PAIR, DATATYPE_LAST -} plant_datatype_t; +} plant_dataType_t; + + +typedef enum +{ + DEVICETYPE_FIRST = 0x00, + DEVICETYPE_SENSOR_V1, + DEVICETYPE_SOLENOID_V1, + DEVICETYPE_LAST +} plant_deviceType_t; bool PlanSystem_ParseBuffer(uint8_t *pBuffer, uint8_t nBufferLen, uint8_t *cmd, uint8_t *dataType, uint8_t *dataLength); diff --git a/Part1_Sensor_board/Firmware/Makefile b/Part1_Sensor_board/Firmware/Makefile index 63d4429..e2b952c 100644 --- a/Part1_Sensor_board/Firmware/Makefile +++ b/Part1_Sensor_board/Firmware/Makefile @@ -210,6 +210,9 @@ flash: jlink: JLink.exe -if swd flash.jlink +reset: + JLink.exe -if swd reset.jlink + size: py -3 size.py -p 16KB -r 2KB -f build/$(TARGET).elf diff --git a/Part1_Sensor_board/Firmware/build/PlantSensorL011.bin b/Part1_Sensor_board/Firmware/build/PlantSensorL011.bin index aca580a..3cd7552 100644 Binary files a/Part1_Sensor_board/Firmware/build/PlantSensorL011.bin and b/Part1_Sensor_board/Firmware/build/PlantSensorL011.bin differ diff --git a/Part1_Sensor_board/Firmware/build/PlantSensorL011.elf b/Part1_Sensor_board/Firmware/build/PlantSensorL011.elf index 33b8609..7695f39 100644 Binary files a/Part1_Sensor_board/Firmware/build/PlantSensorL011.elf and b/Part1_Sensor_board/Firmware/build/PlantSensorL011.elf differ diff --git a/Part1_Sensor_board/Firmware/build/PlantSensorL011.hex b/Part1_Sensor_board/Firmware/build/PlantSensorL011.hex index 7c38162..c5444b1 100644 --- a/Part1_Sensor_board/Firmware/build/PlantSensorL011.hex +++ b/Part1_Sensor_board/Firmware/build/PlantSensorL011.hex @@ -1,21 +1,21 @@ :020000040800F2 -:1000000000080020F53C0008C90C0008CB0C0008D3 +:1000000000080020313C0008950C0008970C0008FF :1000100000000000000000000000000000000000E0 -:10002000000000000000000000000000CD0C0008EF -:100030000000000000000000CF0C0008D10C0008F8 -:10004000753D0008753D0008753D0008753D0008C8 -:10005000753D0008753D0008753D0008753D0008B8 -:1000600000000000753D0008753D0008753D000862 -:10007000753D0008753D000800000000753D000852 +:10002000000000000000000000000000990C000823 +:1000300000000000000000009B0C00089D0C000860 +:10004000B13C0008B13C0008B13C0008B13C0008DC +:10005000B13C0008B13C0008B13C0008B13C0008CC +:1000600000000000B13C0008B13C0008B13C0008B1 +:10007000B13C0008B13C000800000000B13C0008A1 :100080000000000000000000000000000000000070 -:10009000753D00080000000000000000D90C0008B9 -:1000A00000000000753D0008000000000000000096 -:1000B000753D0008753D00080000000000000000CC +:10009000B13C00080000000000000000A50C0008B2 +:1000A00000000000B13C000800000000000000005B +:1000B000B13C0008B13C0008000000000000000056 :1000C00010B5064C2378002B07D1054B002B02D02E :1000D000044800E000BF0123237010BD1800002079 -:1000E00000000000E43D0008044B10B5002B03D0D5 +:1000E00000000000203D0008044B10B5002B03D099 :1000F0000349044800E000BF10BDC04600000000F6 -:100100001C000020E43D000802B471464908490083 +:100100001C000020203D000802B471464908490047 :10011000095649008E4402BC7047C04602B471467D :1001200049084900095C49008E4402BC7047C0463A :10013000002243088B4274D303098B425FD3030A26 @@ -70,941 +70,937 @@ :1004400001D3000C10391B0A984201D3000A083965 :100450001B09984201D30009043902A2105C40181C :100460007047C046040302020101010100000000C0 -:1004700000000000F0B585B000F028F95B4C0221C7 -:100480005B4A200003F01AFAFA20800001F0E6FD32 -:1004900062B6002302AE0393337001F0D9FD554DCF -:1004A0002B68984206D300F063F901F0D1FDF530D6 -:1004B000FF30286001F0CCFD4F4D2B68984207D3E8 -:1004C00000F070F901F0C4FDFA239B00C018286009 -:1004D0004A4801F02BFD00F0CDFA30700328DCD93A -:1004E000310003A800F0B8FA0025039B02215B5DF0 -:1004F0002000434A013503F0E1F9052DF5D100272D -:100500006B460B225F720A236A446B441770317882 -:100510001F700092092203986A4403F0CAFB394D08 -:10052000B84259D002212000374A03F0C7F96B4680 -:10053000587A013803284CD8FFF7F0FD021D2A3BFA -:100540000023324A2B700221200003F0B7F92B78E8 -:10055000082B44D90A232B70284F380001F0E6FC01 -:100560002028F9D138002A78294B2A4900F080FF49 -:10057000002836D0FEE702272648077047708770AC -:10058000011D033000F02EF90523234A2B70DAE712 -:10059000032302271F48037001338370421D831D0C -:1005A0004770011D033000F02DF907231B4A2B7003 -:1005B000C9E704230227174803708370421D831D77 -:1005C0004770011D033000F035F90723144A2B70E2 -:1005D000B9E7144A2F70B6E7134A2870B3E7002B27 -:1005E000BAD100F04DFA00F051FA56E70C3E00087F -:1005F000FF3D00083C00002038000020AC00002037 -:10060000113E000834000020183E0008203E00087B -:10061000FFFF000000000020223E0008243E0008EA -:10062000263E0008283E00082A3E000810B598B073 -:10063000202200210CA803F0CCFB142200216846E4 -:1006400003F0C7FB1822002105A803F0C2FB1D49D7 -:100650001D4A0B6801241A4080231B0113430B60C1 -:1006600002230B931493002315938023DB0216932C -:1006700080231022DB030BA80E940F92179301F036 -:100680003FFD002800D0FEE70F2302900093039067 -:100690000C3B049021006846019301F07DFF002887 -:1006A00000D0FEE70A230593063B0793802305A8A5 -:1006B0005B01099302F04EF8002800D0FEE718B065 -:1006C00010BDC04600700040FFE7FFFF10B501F00D -:1006D0009FFCFFF7ABFF00F0C5F800F069FB00F0EE -:1006E00037FA00F091FA00F0F5F800F011FC012360 -:1006F000064C2268200011680B43136002F09EFA3A -:100700000021200002F0C8FA10BDC046F800002009 -:10071000FEE70000F0B5022500260400134F85B067 -:100720002A00019102A8390003F04AFB02AB5B19D1 -:100730002A00390003A81E7003F042FB02AB02A995 -:10074000012290209E7100F0BAFC2A0003A990209B -:1007500000F0D2FC02AB1B79237002AB5A7905235F -:10076000D2095343019A137005B0F0BDFC3D000857 -:1007700010B507490748FFF7CDFF012000F086FBC1 -:10078000054B1860054800F081FB054B186010BD53 -:1007900049000020480000204400002000020024FE -:1007A000400000201FB5094A094B12681B780292CD -:1007B000084A022112685BB20192074A0748127880 -:1007C0000092074A03F07AF805B000BD400000200F -:1007D000480000204400002049000020463E000858 -:1007E0002D3E0008002807D0002905D0034B1B78B8 -:1007F0000370034B1B780B707047C0464800002005 -:100800004900002030B5002811D000290FD0002A5F -:100810000DD0002B0BD0064C25681D7023681B0AD9 -:10082000137023681B0C0B7023681B0E037030BD04 -:100830004400002030B5002811D000290FD0002A34 -:100840000DD0002B0BD0064C25681D7023681B0AA9 -:10085000137023681B0C0B7023681B0E037030BDD4 -:100860004000002030B5012489B01422002103A8E3 -:1008700003F0AFFA0221154BDA6A2243DA62DA6A30 -:1008800022400192019ADA6A0A43DA62DB6A0B407B -:100890000293029BBFF34F8F0D4D002228000631BB -:1008A00002F0C2F8082304940024280003A903934B -:1008B0000594069402F00AF84023280003A9039344 -:1008C0000494059402F002F809B030BD0010024013 -:1008D0000004005010B51D4B1D4C23601D4B200023 -:1008E00063603223A360313BE360002323616361D3 -:1008F000A361E361236200F065FD002801D0FFF7EA -:1009000007FF0021200001F015FB002801D0FFF7B0 -:10091000FFFE0021200001F033FB002801D0FFF78B -:10092000F7FE200001F002FB2028FAD10A49042238 -:10093000200000F045FE011E00D0FEE70200172057 -:1009400002F0A2F8172002F0C9F810BD00540040D0 -:10095000AC000020BB7C70004B00002030B50400D0 -:1009600087B01422002101A803F033FA184B226843 -:100970009A422BD10124174DEB6A2343EB62EB6AB9 -:1009800023400093009BBFF34F8F8021A0202200C3 -:100990008900C00502F048F88021A0202200C9008B -:1009A000C00502F041F8C023DB000193A020122310 -:1009B00001A90293C0050F3B04930394059401F031 -:1009C00085FF8023AA6B9B031343AB6307B030BD45 -:1009D000005400400010024013B505246846220070 -:1009E000034903F0EDF92100684600F069F913BDF1 -:1009F0004B3E000813B5052468462200134903F056 -:100A0000DFF92100684600F05BF90422104B1A70F0 -:100A1000104B033A1B6899690A439A610822DA610C -:100A20009218DA611032DA61E032DA610132FF32B3 -:100A3000DA618022D200DA6180221201DA6180223A -:100A40005201DA6180229201DA6113BD503E000842 -:100A50004A000020AC000020002806D0002904D065 -:100A6000024B0360024B1B780B7070474B00002059 -:100A70004A000020014B1878C0B270474A0000209D -:100A80000022014B1A7070474A00002001221148D1 -:100A900010B5036899690A439A610822DA619218CD -:100AA000DA611032DA61E032DA610132FF32DA61A2 -:100AB0008022D200DA6180221201DA6180225201A2 -:100AC000DA6180229201DA610349042200F078FDA4 -:100AD00010BDC046AC0000204B00002080230268FF -:100AE000DB059A4206D10123034A916B0B439363C2 -:100AF000BFF34F8F7047C0460010024010B504008E -:100B000086B01422002101A803F063F98023226833 -:100B1000DB059A4217D101200C4AD16A0143D16208 -:100B2000D36A01A903400093009B202301931E3B3D -:100B300002930023A020039303330493C0050233E0 -:100B4000059301F0C3FE06B010BDC0460010024080 -:100B500010B58AB01022002102A803F03AF9082249 -:100B60000021684603F035F91022002106A803F0A1 -:100B700030F98023234CDB050A2223600023200068 -:100B80006360A360E2602361636102F03CF80028C7 -:100B900001D0FFF7BDFD802320005B0102A9029375 -:100BA00002F0E8F8002801D0FFF7B2FD200002F0C3 -:100BB00058F8002801D0FFF7ABFD0023694620005C -:100BC0000093019302F076F9002801D0FFF7A0FD11 -:100BD00030230022069320002B3B06A9079308929E -:100BE000099202F06BF8002801D0FFF791FD08236D -:100BF0002268200091690B439361FFF77FFF0AB0E1 -:100C000010BDC046F80000200B480C4B10B5036027 -:100C1000E1235B020C224360002342618360C360D6 -:100C200003618361C3610362436202F0BBFB00287E -:100C300001D0FFF76DFD10BD3401002000440040DD -:100C400010B5040086B01422002101A803F0C1F8F9 -:100C5000124B22689A421ED18022114B9202996B4C -:100C60000A4301219A63DA6A0A43DA62DB6A0B40BB -:100C70000093009BBFF34F8F0A4BA02001930223E8 -:100C800002930023039303330493C0055B1801A967 -:100C9000059301F01BFE06B010BDC04600440040A5 -:100CA000001002400480000010B58AB2024B01001F -:100CB000024802F0D9FA10BDFFFFFF013401002005 -:100CC00010B5FFF7F1FF10BD7047FEE770477047A2 -:100CD00010B501F0B1F910BD10B5164C2368200015 -:100CE0009A69E023DB001A4221D001F0DFF80122EB -:100CF000236899690A439A610822DA619218DA61D5 -:100D00001032DA61E032DA610132FF32DA618022D8 -:100D1000D200DA6180221201DA6180225201DA61A6 -:100D200080229201DA61172001F0FCFE10BD00F074 -:100D300075FCF8E7AC0000200122054B596B0A4313 -:100D40005A638022996B52050A439A637047C046E2 -:100D5000001002408022104B520019680A431A60AA -:100D6000DA680E490A40DA601A680D490A40012122 -:100D70001A609A688A439A601A680A490A401A6097 -:100D8000DA6809490A40DA6000221A618022074BBA -:100D900012059A607047C046001002400C40FF8860 -:100DA000F6FFF6FEFFFFFBFFFFFF02FF00ED00E096 -:100DB000072210B5154C0023A263C222FF326262E3 -:100DC00022002C321370124A2000226090229203DB -:100DD00062600122238422610332E363A3622363FE -:100DE0006363A360E3606261A361E36102F05AFBA5 -:100DF000002801D0FFF78CFC0021200002F00EFD3E -:100E0000002801D0FFF784FC10BDC046B4010020CB -:100E10000024014070B5040088B01422002103A80A -:100E200002F0D7FF164B22689A4226D18022154B3A -:100E30009200596B02240A435A630122A020032620 -:100E40000025D96AC0051143D962D96A11400191C0 -:100E50000199D96A2143D962DB6A03A9234002932D -:100E6000029B03920496059501F030FD064803A904 -:100E700003940496059501F029FD08B070BDC046A5 -:100E8000002401400010024000040050802313B5EC -:100E9000094C5B01694600902000019302F06AFC56 -:100EA000200002F0D9FB01212000494202F000FCA1 -:100EB000200002F05BFC16BDB401002010B510212B -:100EC000034801F0ABFD013843425841C0B210BDA8 -:100ED0000004005010B52021034801F09FFD0138A7 -:100EE00043425841C0B210BD0004005010B501F09B -:100EF0000BFC06490524FFF71BF944432300013C82 -:100F0000002B00D110BDC046C046F7E740420F009D -:100F100030B5144C87B01422002101A802F059FF0B -:100F200020000122102101F07FFD0122200020215C -:100F300001F07AFD3023012501931F3B200002932D -:100F400001A90E3B0493039501F0C0FC2A00200088 -:100F5000202101F069FD2A001021200001F064FD2C -:100F600007B030BD0004005010B5134C2378002B9F -:100F700011D001222021114801F056FDFFF7B6FFE4 -:100F8000012210210D4801F04FFDFFF797FF0028C7 -:100F9000FBD0FFF7ABFFFFF79DFF002220210748A2 -:100FA00001F042FDFFF7A2FF00221021034801F0EB -:100FB0003BFD0123237010BD690000200004005098 -:100FC000002220210E4810B501F02EFDFFF78EFF04 -:100FD000012210210A4801F027FDFFF76FFF0028CA -:100FE000FBD0FFF783FF01222021054801F01CFD03 -:100FF000FFF77CFFFFF76EFF0022024B1A7010BD57 -:10100000000400506900002010B50122041E00D128 -:10101000020020210C4801F007FDFFF767FF0122C5 -:101020001021094801F000FDFFF760FFFFF746FFC0 -:101030000028FBD0002C01D0FFF74CFF002210212C -:10104000014801F0F1FC10BD0004005001222021F4 -:101050000D4810B501F0E8FCFFF748FF0122102110 -:10106000094801F0E1FCFFF729FF0028FBD0FFF75A -:101070003DFFFFF72FFF040000221021024801F07E -:10108000D3FC200010BDC0460004005070B50D0018 -:101090001400002801D0FFF767FF0826E009013E91 -:1010A0006400FFF7B1FFE4B2002EF7D1FFF7CEFFE7 -:1010B0000400002D01D0FFF783FF200070BD70B544 -:1010C0000C001600002102000120FFF7DFFF0025C1 -:1010D000731E9D4208DBA419013C012122780020E7 -:1010E000FFF7D4FF012070BD0021625D08000135CB -:1010F000FFF7CCFFEDB2EBE7F7B501230192020059 -:101100000F00180000211A43FFF7C0FF0025019BC4 -:10111000591E8D4213DB082500247F18FFF796FF28 -:101120006400013D0443EDB2E4B2002DF6D101208C -:10113000FFF76AFFFFF744FF01203C70FEBD082661 -:1011400000247B190093FFF781FF6400013E0443F4 -:10115000F6B2E4B2002EF6D13000FFF755FF009B47 -:1011600001351C70EDB2D2E703689A69920701D588 -:1011700000229A6201229969114202D199690A43B7 -:101180009A61704730B5039C1204006822431A43E9 -:10119000054B45688905640D890D1C43A5430A4329 -:1011A0002A43426030BDC046FF63FF0310B5436B66 -:1011B000144C0AB2A34202D0134CA3420ED1002A0F -:1011C0000ADB9023102917D0303B202914D00023AC -:1011D000402911D10B430FE0B823F9E700239A42CD -:1011E00000DAB833CA0701D5F22213438A0701D5C2 -:1011F000F42213432029EDD001680A6813430B60E1 -:1012000010BDC0468D1D0008811C0008002310B5CC -:10121000CA0708D5030041331A7828231A401A3325 -:10122000282A00D0B0338A0708D50200282441328A -:1012300012782240A2420BD14422134309B2002962 -:1012400001DAB822134301680A689A430A6010BDA4 -:10125000F422F2E7F8B5036816009A690400102337 -:1012600010000D00202718401A4218D1F8BD6A1C42 -:1012700016D000F0EDFE801BA84201D8002D0ED143 -:101280002022636C13436364230041331A702200ED -:10129000002342324034137001202370E6E72368B4 -:1012A0009A693A42E3D010222000DA61DF61FFF749 -:1012B0005BFF2268054953680B4053600423626C4E -:1012C00013436364230041331F70E0E700E800FE2E -:1012D000F8B504000D001600202723689B693B42E7 -:1012E00001D00020F8BD320029002000FFF7B2FF36 -:1012F000002813D100F0ACFE801BA84201D8002DBD -:10130000EBD12022636C13436364230041331A70D2 -:101310002200002342324034137023700120E1E7A1 -:10132000F8B504000E0017001D00226893693340D1 -:101330009B1B59424B41BB4201D0002017E06B1C64 -:10134000F4D000F085FE069BC01AA84201D8002DFB -:10135000EBD12022636C01201343636423004133EB -:101360001A70220000234232403413702370F8BDFB -:10137000F8B504000D001600022723689B693B4264 -:1013800001D00020F8BD320029002000FFF762FFE5 -:10139000002815D16B1CF0D000F05AFE801BA8422B -:1013A00001D8002DE9D12022636C1343636423002C -:1013B00041331A70220000234232403413702370EC -:1013C0000120DFE770B504000120002C3FD025008C -:1013D00041352B78DAB2002B05D1230040332000B1 -:1013E0001A70FFF7BBFA242301212B702368E068F1 -:1013F0001A68A6688A431A6061681A4A0A401A6124 -:101400009968194A11409960012821D18021090267 -:10141000314399605868154901435960D9680020E3 -:101420000A40DA60616922690A43A16909020A4334 -:10143000DA60216AE2690A431A60012219680A43E4 -:101440001A60202360642B7020634234207070BDCA -:1014500084210902314399600228DBD180210901EE -:101460005960D7E7FFFFFFF0FF7FFFFF008000021A -:10147000F0B51D00030087B04133049103931B783E -:101480001600DAB2040005920220202B07D10029B1 -:1014900001D0002E05D180239B006364012007B09A -:1014A000F0BD230040331A780220012AF7D0012230 -:1014B0001A7000F0CDFD2123039A0700137023005A -:1014C000059A42331A7000222168049B6264668583 -:1014D00063623A484B68626303404B6020002B0014 -:1014E00008210097FFF71CFF2368021E05D0802209 -:1014F000596812020A435A60D0E70826DE61E368A1 -:10150000022B09D12B00310020000097FFF708FFC4 -:1015100023680028EBD1DE6180212B00002220000F -:1015200000974902FFF7FCFE002814D022688023B0 -:1015300051681B020B435360B0E7FFF719FF2268A5 -:101540000028F4D1636A1978013391626362638D74 -:10155000013B9BB26385638D3A00290020009EB257 -:10156000002BEAD1FFF7B4FE236800280AD08022BE -:10157000596812020A435A60626C0120042A00D0A2 -:101580008DE76664802620223602DA6131002B0066 -:101590001F3A20000097FFF7C3FE23685A681643DE -:1015A0005E60002800D079E72022039B1A70230098 -:1015B000403442331870207071E7C046FF7FFFFF50 -:1015C000F8B5030041331D780224EEB2202D1AD164 -:1015D000050040352F78012F15D020341C700024D1 -:1015E0005E70066844647368084F3B4073604285D0 -:1015F000438D41620385064B0649C362064B436334 -:101600002C70FFF7D3FD2000F8BDC046FF7FFFFF21 -:101610000000FFFF028000006D1A0008036810B58B -:1016200099691A68436B002B00D0984710BD70472A -:101630007047030070B500252022060042331D705C -:10164000013B1978040040361A7021290AD1112370 -:10165000456303632039FFF7D9FD20003570FFF79C -:10166000E6FF70BD1223456303630221FFF7CEFD41 -:1016700020003570FFF7DCFFF3E70000010003688E -:1016800010B5040000201A6842310870012150048E -:1016900018D51A6818490A401A60230041331A788D -:1016A000292A15D1013A1A70212320002363012130 -:1016B000FFF7ACFD23000022403320001A70FFF733 -:1016C0008BF910BDD20B0A42E7D01A680B49E2E74A -:1016D0001A782A2AF5D1023A1A70222320002363AD -:1016E0000221FFF793FD23000022403320001A70EF -:1016F000FFF780F9E5E7C046FFBFFFFFFF7FFFFF71 -:1017000070470300F7B5282241331B7804000168B5 -:10171000134093423CD1FE278D698E698B68CA685D -:10172000ED030192C268360CED0F3E40022A25D12E -:101730009B059A0D5B0F5E403000062318401E4249 -:1017400010D1A36C0133A364A36C022B09D106331F -:10175000A064CB6123004033187029002000FFF7FC -:10176000CFFFF7BD802120000902FFF74FFD2300C6 -:10177000002240331A70019A3A40EEE780210902B4 -:10178000FFF744FD2300002240331A703200E4E7E3 -:101790000823CB61002340342370E2E77047000048 -:1017A000184B10B5C362002302000363040020201D -:1017B00041321070537063634B0713D52368626A1C -:1017C0005B6A1370636A01336362238D002B09D057 -:1017D000013B2385638D013B9BB263850423626CCF -:1017E0001343636420000849FFF710FD10222368AB -:1017F0002000DA612300002240331A70FFF7CEFF89 -:1018000010BDC0460000FFFF038000007047704716 -:10181000704770470100020010B541310C78002379 -:101820004032602C06D1403C0C7003631370FFF70C -:10183000F0FF10BD03631370FFF7EAFFF9E7000044 -:1018400070B50200050004000020423241352B78BB -:101850001070324A283BE2626085626C0A4362641F -:10186000022B2BD803212000FFF7D0FC28232B705C -:101870002B4BA06B6363236B00282ED01A00102122 -:10188000113A8A4329D123681A68520403D51A6889 -:1018900024490A401A6001F0F2F8012819D0A06B1F -:1018A000214B00228363230040331A7001F0C2F8F9 -:1018B000002811D0A06B836B98470DE020001B49D6 -:1018C000FFF7A4FC2B78602B01D020232B70002382 -:1018D000CFE72000FFF79EFF70BDE06B0028F8D037 -:1018E0001022123B9343F4D123681A68120403D5E3 -:1018F0001A680F490A401A6001F0C1F80128E8D0BF -:10190000E06B094B00228363230040331A7001F01F -:1019100091F80028E0D0E06BCDE7C0460000FFFF63 -:101920006D1A0008FFBFFFFF0F1F000803800000B3 -:10193000FF7FFFFFF7B5036806001A684136019282 -:1019400020223578DA61082304000F009D43212D01 -:1019500050D140492000FFF759FC256380222368BD -:101960001202596820000A435A605A683A490A40EC -:101970005A60FFF7F9FB019B01225B043ED5226808 -:10198000364913680B401360A36B002B03D01B6810 -:101990005B689BB263857B0711D504239F43236853 -:1019A000626A5B6A1370636A01336362238D002B82 -:1019B00005D0013B2385638D013B9BB26385638D1D -:1019C000002B03D00423626C1343636423000022C2 -:1019D00042331A70656C626395421AD02000616CC4 -:1019E000FFF72EFF3378282B03D139002000FFF7B3 -:1019F000D7FEF7BD222DB1D11949ABE7019BDB0B17 -:101A00001342C8D02268174913680B401360E36B78 -:101A1000BBE72700E36A144A403793420CD020000A -:101A2000FFF72CFE2023104A2000E262337025636A -:101A30003D70FFF7B3FEDCE72023327820003370DF -:101A400025633D70222A02D1FEF7D4FFD1E7FEF7CD -:101A5000C3FFCEE70180000000E800FEFFBFFFFFEC -:101A600002800000FF7FFFFF0000FFFF0300F7B5CB -:101A7000403301931B780400C76A0E001500022052 -:101A8000012B24D00123019A13704A091A4205D070 -:101A90006A091A4202D02000FFF74CFF0123F20628 -:101AA00035D52A091A4232D0638D002B20D123006C -:101AB00041331A78282A0BD180229204974207D109 -:101AC00031002000FFF76CFE0020019B1870FEBD66 -:101AD000102219782368DA612929F5D12D498F421E -:101AE000F2D02000FFF740FB2000FFF7C7FDEBE737 -:101AF00010222368DA610423626C13436364264B6B -:101B00001F42E1D12000616CFFF79AFEDCE7012360 -:101B100072071AD5AA081A4217D0638D002B0DD070 -:101B20002368626A5B6A1370636A01336362238DA0 -:101B3000013B2385638D013B9BB26385638D002B45 -:101B4000C2D1144B9F42BFD0CEE70123320706D546 -:101B5000EA081A4203D02000FFF7D3FDB4E70123BF -:101B6000B207B1D5DD401D42AED0638D002B0DD044 -:101B7000636A22681978013391626362638D013B65 -:101B80009BB26385238D013B23859DE7024B1F425A -:101B9000AAD099E70000FFFFFFFFFFFE73B52022E8 -:101BA000050003684135DA612B7804000E00212B13 -:101BB0002CD10121FFF72AFB1123236323682E492F -:101BC0005A680A405A60002262632C4AE262F206B6 -:101BD00005D51022DA61616C0C3A0A4362642A78F6 -:101BE000602A05D1720703D55B6ADBB20193019BC2 -:101BF0002000FFF7B9FA636C2A78602A01D0002B25 -:101C00000CD02000616CFFF71BFE73BD2B78222BDC -:101C1000D4D10221FFF7FAFA1223CEE72A78212A3B -:101C200013D1013A2A702200210023634232107836 -:101C3000403113700B70402803D12000FFF7E6FD00 -:101C4000E3E72000FFF7F3FCDFE72A78222ADCD164 -:101C5000023A2A7022002100236342321078403178 -:101C600013700B70402803D12000FFF7D0FDCCE7A4 -:101C70002000FFF7DDFCC8E700E800FE0000FFFFE2 -:101C80000300F7B5403301931B780400C76A0E00C8 -:101C900015000220012B3CD00123019A13704A0940 -:101CA0001A4205D06A091A4202D02000FFF742FE0C -:101CB0000120F3065BD52B09034258D0AA0B130071 -:101CC000ED0B2B4303424ED0E36B191E06D00021CF -:101CD000054203D01B6859684B4259412300A06B51 -:101CE0004133002805D0D20703D502685268002A84 -:101CF00001D001291ED11A78282A0BD18022920402 -:101D0000974207D131002000FFF74AFD0020019BD8 -:101D10001870FEBD102219782368DA612929F5D1DF -:101D200018498F42F2D02000FFF71EFA2000FFF77B -:101D3000A5FCEBE710212268D1610422616C0A4303 -:101D400062641B78104ADBB21742DFD1082293434A -:101D5000212B01D1236301E0222BFBD02000616CF9 -:101D6000FFF76EFDD2E710222368DA61CEE7012388 -:101D70003207CBD5ED081D42C8D02000FFF7C1FCCB -:101D8000C4E7C0460000FFFFFFFFFFFE37B50500B8 -:101D900040352B7804000220012B17D001230809BD -:101DA0002B70184213D01009184210D0102223684B -:101DB0002000DA610423626C202113436364FFF77F -:101DC000F5F92000FFF7D0F9002028703EBD01236F -:101DD000080646D59009184243D0402123681A6866 -:101DE0008A431A60628D002A2FD05968638D890555 -:101DF000890DFF2B1BD9FF23238580235B04002043 -:101E0000228D0090D2B22000FFF7BCF9638D228DA5 -:101E10009B1A9BB26385230041331A7823681968A3 -:101E2000222A0FD1802212020A431A60CCE7638D66 -:101E3000E26A23851C4B9A4201D0E36ADFE78023E4 -:101E40009B04DCE78022D201EEE75B689B0103D4B0 -:101E50002000FFF7EEFBB7E740212000FFF7F0FC82 -:101E6000B2E70123480613D59009184210D0638DBC -:101E7000002BF1D123685A689201A5D4E16A0A4A7D -:101E80009142E5D180225968D2010A435A609BE70A -:101E90000123880600D497E752091A4200D193E73C -:101EA0002000FFF77BFE8FE70000FFFF036870B59F -:101EB0009C6901211A68E50508D5D5090D4205D0B0 -:101EC000456C2943416480214900D96101216505A0 -:101ED00009D5D5090D4206D0456C07312943416427 -:101EE0008021C900D9610121A40509D5D2090A427E -:101EF00006D00222416C0A43426480229200DA61D9 -:101F00000B23416C194201D0FFF79AFC70BD806A27 -:101F100010B5836B002B01D000229A63C36B002B9A -:101F200001D000229A63FFF775FC10BD41300078A4 -:101F3000C0B27047F0B504004134227803000F00AE -:101F40000220D6B2202A18D11D0040352A78012A55 -:101F500013D0242222701B68233A19680748914342 -:101F60001960196801400020196019683943196027 -:101F700019680A431A6026702870F0BDFFEFFFFF52 -:101F80000200F0B5413214780300E5B20220202CA3 -:101F900017D11C0040342678012E12D02230107048 -:101FA0001B6823381E68074F86431E601E6809029F -:101FB0003E403143196019680843186000201570CD -:101FC0002070F0BDFFF0FFFF70B50500FA200D4B4B -:101FD00080001978FEF7ACF80B4B01001868FEF78B -:101FE000A7F800F085FD04000120002C09D1032D85 -:101FF00007D802382200290000F046FD2000034BDC -:102000001D6070BD100000200C0000201400002096 -:102010004023084A10B5116800200B431360FFF7F6 -:10202000D3FF041E03D1FEF787FE200010BD01245C -:10203000FBE7C04600200240034A044B11681B78AE -:102040005B1813607047C04610020020100000208B -:10205000014B18687047C0461002002070B504009C -:10206000FFF7F6FF0500631C02D0044B1B78E41851 -:10207000FFF7EEFF401BA042FAD370BD1000002016 -:102080000C22194B10B5D9680A40082A29D00C2A0D -:1020900009D0042A1DD11868144BC006C017184077 -:1020A000134BC01810BD13488A02120F825C09023C -:1020B000D868890F0131C00304D50F485043FEF79B -:1020C00037F8EFE71B68DB0601D50C48F6E7084850 -:1020D000F4E780205B6800021B045B0F013398402B -:1020E000E0E70548DEE7C0460010024000E548FF93 -:1020F0000024F4006D3E000800127A0000093D0043 -:10210000F0B5050087B0002854D00C23C04C0268FD -:10211000E668E7681E4080235B021F40D2073DD47B -:102120002B689B0700D586E02B68DB0628D5002EA0 -:1021300000D0DEE023689B0502D5AB69002B39D0C7 -:102140006268B4492B6A0A401A4362606168EA69AE -:102150000902090A12060A43626080225B0B0133FE -:1021600012029A401300E16800200A06AA49120FE1 -:102170008A5CD340A94A1360FFF726FF002830D1BC -:102180002B681B0700D5EBE02B685B0700D50DE142 -:102190006B6A002B00D092E1002022E0082E03D0D1 -:1021A0000C2E09D1002F07D023689B03B8D56B688C -:1021B000002BB5D1012014E06A689A4213D122683D -:1021C00013432360FFF744FF0190802223689202AB -:1021D0001342A5D1FFF73CFF019BC01A6428F4D934 -:1021E000032007B0F0BDA021C9028A4205D1802298 -:1021F0002168D2020A432260E1E721688848014051 -:10220000216021680B400593059B864923680B409C -:102210002360002AD6D1FFF71BFF0190802223689C -:102220009202134200D17BE7FFF712FF019BC01A15 -:102230006428F3D9D4E72022EB68134203D0216845 -:10224000934311432160042E03D00C2E23D1002F81 -:1022500021D12268520701D5002BABD061682A69D1 -:102260007148120201400A430921626022688A43D0 -:1022700013432360FFF704FFE368674A1B061B0F45 -:10228000D35CD840654B18600020FFF79DFE002806 -:1022900000D149E7A5E7002B19D0092122688A431C -:1022A00013432360FFF7D4FE070004222368134280 -:1022B00007D062682B695C491B020A4013436360C4 -:1022C00032E7FFF7C5FEC01B0228EED988E70122DE -:1022D000236893432360FFF7BBFE070004222368B3 -:1022E000134200D120E7FFF7B3FEC01B0228F5D947 -:1022F00076E7AB69002B20D0802322685B00134374 -:102300002360FFF7A5FE0700802223689200134296 -:102310000DD063683F4A13402A6A134363606268C2 -:10232000EB6912021B06120A1343636028E7FFF7EA -:102330008FFEC01B0228E7D952E723683B4A1340AF -:102340002360FFF785FE0700802223689200134276 -:1023500000D115E7FFF77CFEC01B0228F4D93FE748 -:102360006A690123002A10D0226D13432365FFF709 -:102370006FFE07000222236D134200D004E7FFF72F -:1023800067FEC01B0228F5D92AE7226D9A43226511 -:10239000FFF75EFE07000222236D134200D1F3E631 -:1023A000FFF756FEC01B0228F5D919E7802300214C -:1023B000A26B5B0501911A4204D1A26B1343A36384 -:1023C0000123019380221A4F52003B68134208D028 -:1023D0008022AB68520093422CD1226D13432365B7 -:1023E0004DE080223B68520013433B60FFF730FE14 -:1023F00080235B00029003933B68039A1342E7D16A -:10240000FFF726FE029BC01A6428F5D9E8E6C0460D -:1024100000100240FF1FFFFF553E00080C00002087 -:10242000FFFFFEFFFFFFFBFFFFE0FFFFFFFEFFFFE1 -:1024300000700040002B16D1236D514A13402365D4 -:10244000236D504A13402365FFF702FE07008022E8 -:10245000236D920013421AD0FFF7FAFD4A4BC01BBE -:102460009842F4D9BCE6A021C9008B4218D1802340 -:10247000216DDB000B432365236D1A432265FFF7B3 -:10248000E7FD07008022236D9200134210D0019BCC -:10249000012B00D07CE6A36B3C4A1340A36377E694 -:1024A000236D374A13402365236D364A134096E760 -:1024B000FFF7CEFD344BC01B9842E3D990E60C2EBB -:1024C00043D0334A022B2ED1236880271340236048 -:1024D000FFF7BEFD0600BF0423683B421DD1E96A39 -:1024E000AB6AE2680B432B4980260A4013432A6BF0 -:1024F000B6041343E360802322685B041343236024 -:10250000FFF7A6FD05002368334200D044E6FFF73D -:102510009FFD401B0228F6D962E6FFF799FD801B5C -:102520000228D9D95CE62368802613402360FFF790 -:102530008FFD0500B6042368334200D12CE6FFF777 -:1025400087FD401B0228F6D94AE61800012B00D16E -:1025500047E68022E368A96A52021A408A4200D004 -:1025600028E6F022E96A92031A408A4200D021E666 -:10257000C022120413402A6B934200D10CE619E6E4 -:10258000FFFEFFFFFFFBFFFF88130000FFFFFFEFD1 -:10259000FFFFFFFEFFFF02FFF7B5041E019101D10F -:1025A0000120FEBD0122514D01992B6813408B4241 -:1025B00027D3226893072FD4D30735D401232A6861 -:1025C00001991A408A4200D981E02268484D530798 -:1025D00000D584E0130706D5EA6823694549DB0086 -:1025E0000A401343EB60FFF74BFDEB68424A1B06C2 -:1025F0001B0FD35CD840414B18600020FFF7E4FC70 -:10260000CFE72B68019993430B432B602B68134052 -:10261000019A9342C4D1CCE7F0203549CB6883437B -:10262000A0680343CB60C7E7314E62683368022A73 -:1026300019D19B03B4D50321F3688B431343F36093 -:10264000FFF706FD63680700022B19D10C22F3681F -:102650001340082BB2D0FFF7FBFC294BC01B98425C -:10266000F4D903209DE7032A02D19B01E3D497E725 -:10267000012A02D15B07DED492E79B05DBD48FE70A -:10268000032B0BD10C22F3681340934296D0FFF733 -:10269000DFFC1B4BC01B9842F4D9E2E7012B10D0A2 -:1026A0000C22F368134289D0FFF7D2FC144BC01BF5 -:1026B0009842F5D9D5E7FFF7CBFC114BC01B9842E8 -:1026C000CFD80C22F3681340042BF4D176E72A68A4 -:1026D0009A432A602A681A4200D176E760E7EB68DD -:1026E00008490B40E1680B43EB6073E700200240B0 -:1026F00000100240FFC7FFFF553E00080C000020FD -:1027000088130000FFF8FFFF014B18687047C046B0 -:102710000C000020044B054ADB685B055B0FD35CB3 -:10272000034A1068D840704700100240653E000818 -:102730000C000020044B054ADB689B045B0FD35C54 -:10274000034A1068D840704700100240653E0008F8 -:102750000C0000200368F7B505009B063DD58023DB -:102760000021504C5B05A26B00911A4204D1A26B70 -:102770001343A3630123009380274B4E7F003368EC -:102780003B4251D06B68C022C0201E0021689202DB -:10279000800317001640034001408B4255D1236D42 -:1027A0001A003A403B4257D16968C0230A009B0295 -:1027B0001A409A4207D123683C480340C020800356 -:1027C00001400B432360236D1A43009B2265012BBC -:1027D00003D1A36B364A1340A3632A68930706D537 -:1027E0000C203049CB6C8343A8680343CB64530768 -:1027F00006D52C492F48CB6C0340E8680343CB64D3 -:10280000130706D527492C48CB6C0340286903439E -:10281000CB640020130617D5224A2849D36C0B40FD -:1028200069690B43D3640FE033683B433360FFF7C0 -:102830000FFC019033683B42A4D1FFF709FC019BD8 -:10284000C01A6428F6D90320FEBD9642A7D123689A -:1028500001209B03A3D5F7E7B242A5D02B689B06C6 -:10286000A2D58022216D206D120302432265226DC4 -:10287000134B14480B40024022652365CB0500D45E -:1028800092E7FFF7E5FB80270600BF00236D3B4280 -:1028900000D089E7FFF7DCFB0B4B801B9842F5D992 -:1028A000D1E7C0460010024000700040FFFFCFFF9C -:1028B000FFFFFFEFFFF3FFFFFFCFFFFFFFFFF3FF80 -:1028C000FFFFFCFFFFFFF7FF881300000023F0B5B8 -:1028D00085B00A681400DC4001D105B0F0BD0124C8 -:1028E00015009C4025400295224200D189E0102528 -:1028F0004A685E000192AA430D3DB5409446013AF4 -:10290000ED43012A0FD8CA688768B2402F403A4386 -:10291000012782604268A2431400019A12093A40DA -:102920009A40224342608A68C468B2402C402243E5 -:10293000C2606246022A0FD1DA0807249200821888 -:10294000176A03920F221C40A400A24097430A6911 -:10295000A2401743039A1762032402681540019AA4 -:102960002240B24080241543019A6405056022424A -:1029700047D001250F27244C626B2A4302351D40A6 -:10298000AD00AF406263214A9C08A400A418A66869 -:102990000022BE43A027FF05B84208D01C4F0132D9 -:1029A000B84204D01B4F0132B84200D00432AA40D2 -:1029B0003243A260184A029C1668029D019FE443BC -:1029C0003543FF0301D43500254015605668029D4C -:1029D000019F3543BF0301D43500254055609668FB -:1029E000029D019F3543FF0201D4350025409560CB -:1029F000D568029E019F2E43BF0201D425402E00C0 -:102A0000D660013365E7C046001002400000014077 -:102A10000004005000080050000401400069084014 -:102A2000411E8841C0B27047002A01D081617047C1 -:102A30008162FCE770B5841DE37F022B04D0042380 -:102A4000C363033B180070BD0E210368456C1A6810 -:102A50008A431A6001221968914319601C232B4094 -:102A600015009D40016C431D4D60E2770024DC772A -:102A7000826B1300A242E5D090472300E2E70630C4 -:102A8000C07FC0B27047000030B5FF2503242A0084 -:102A90000440E400A24089012940D243A140C3B2CE -:102AA00000280BDA0F200340083B0A489B089B00D4 -:102AB0001B18D86902401143D96130BD064B80080C -:102AC0008000C018C0239B00C45822401143C1504D -:102AD000F3E7C04600ED00E000E100E01F231840EE -:102AE0001E3B8340014A13607047C04600E100E08E -:102AF0008022431E5204012093420DD2C021074A76 -:102B000007485360036A09061B021B0A0B43036252 -:102B100000200723906013607047C04610E000E07B -:102B200000ED00E01F23C02218401E3B83400249F5 -:102B300052008B507047C04600E100E0802210B583 -:102B40000368D205904202D00D4CA0420CD17024F3 -:102B5000A3434C682343904202D0094A904203D1D8 -:102B6000084A1340CA681343802293430A691343F7 -:102B700003608B68C3620B6883620123436110BDED -:102B800000080140FFFCFFFF012230B57325036AF6 -:102B900093430362036A44688269AA430D682A4327 -:102BA0000225AB438D68446082614A682B434263CF -:102BB000036230BD1022036A30B593430362036A97 -:102BC000094C4568826914400A6812022243202495 -:102BD000A3431C008B6845601B0182614A68234344 -:102BE0008263036230BDC046FF8CFFFF1F2310B518 -:102BF000012419408C408A40036AA3430362036A9C -:102C00001A43026210BD70B504000120002C14D0DC -:102C1000250039352B78DAB2002B05D12300383363 -:102C200020001A70FDF75AFF02232B702068211D27 -:102C3000FFF784FF012300202B7070BD01000223E9 -:102C400039310B70036807209A680240062A03D0C6 -:102C50000122186802431A60012300200B7070479C -:102C6000704770B504000120002C14D025003935C0 -:102C70002B78DAB2002B05D12300383320001A70EC -:102C8000FFF7EEFF02232B702068211DFFF756FF90 -:102C9000012300202B7070BD10B5040001220068D4 -:102CA000FFF7A4FF072123689A680A40062A03D089 -:102CB000012219680A431A60002010BDF8B504000B -:102CC00002263834257803003000012D0FD01D0076 -:102CD0000138393520702E70082A2AD008D8002AE9 -:102CE0001FD0042A21D0012300202B702070F8BDB2 -:102CF0000C2AF8D11B681A481A6A1A4E02401A6246 -:102D00001A6A5F68D86930400E6836023043164E42 -:102D100016408A68496812035F603243D8611964BB -:102D20001CE01868FFF730FFDDE71868FFF742FF87 -:102D3000D9E773261B680D481A6A02401A621A6A9C -:102D40005F68D869B0430E683043094E16408A6800 -:102D5000496812025F603243D861D9631A62C2E7E0 -:102D6000FFEFFFFFFF8CFFFFFFDFFFFFFFFEFFFF17 -:102D7000FFFDFFFFF0B50400022238342578030080 -:102D80001000012D24D01D000126393526702A702F -:102D90001B6845489A6802409A600A68602A55D0C4 -:102DA0002FD8402A00D169E013D8202A04D009D8AE -:102DB00010211000884307D17020996881430A438D -:102DC000072140E0302AF7D0012300202B7020702B -:102DD000F0BD502AF8D14868CA68196A1F6A120102 -:102DE000B7431F62F0279E69BE4332430A26B143B0 -:102DF00001439A61196270219A688A43110057222F -:102E000021E0702A12D0802080018242DCD19A68B1 -:102E100026484E6810408A68C968324309020A434E -:102E200002439A6080229968D2010CE09A681F4898 -:102E30004E6810408A68C968324309020A43024357 -:102E40009A60772299680A439A60BDE71026186A4B -:102E50004A68B043C96818629E69154F09033E402D -:102E60003143A026186A99617021B04312010243D0 -:102E70001A629A688A4311006722E4E74868CA68C0 -:102E8000196A1F6A1201B7431F62F0279E69BE4389 -:102E900032430A26B14301439A61196270219A684C -:102EA0008A4311004722CEE78800FFFFFF00FFFFA3 -:102EB000FF0FFFFF70B504000222383425780300AD -:102EC0001000012D13D018007026393002701D68D3 -:102ED0006A68AB68B2430E68496832438026B343E0 -:102EE0000B436A60AB60012303700020207070BD4B -:102EF000F8B505002C69AA68036822436C69C169AA -:102F0000224318687E4C0A43204002431A605A68E4 -:102F10007C487D4C0240E86802435A60A869A3429D -:102F200001D02A6A10439A68784E324002439A6070 -:102F3000774A934215D10C20764BDA6C02407648E2 -:102F4000845C80221202914200D095E0082C00D9C6 -:102F50008FE02000FDF7E2F8526B738D858D8D8D2B -:102F60008800A34200D0C4E0C0218020694A090142 -:102F7000D36C00010B40834217D007D8002B0AD036 -:102F80008022D200934236D0012409E08B42FBD14B -:102F90008020000213E0FFF7BDFB0024A0420ED109 -:102FA000002320002B666B66F8BD102310681840C4 -:102FB00043425841594B40421840594BC0180323D3 -:102FC0006A6853438342DFD813038342DCD300276C -:102FD0005608040E03029B197C41180021003B0097 -:102FE000FDF732F94F4BC2184F4B9A42CCD82B68A1 -:102FF0003C00D860D4E7FFF743F8CEE7FFF78AFB41 -:103000006B6840005B086968C018FDF791F880B2F2 -:103010000300464A103B9342B6D80F2302009A435E -:10302000130000072A68400F1843D060B8E7FFF785 -:1030300081FB6B6840005B086968C01809E01A688A -:103040001023140069681C4048081A4206D0384B07 -:10305000C018FDF76DF8002480B2D9E7354BC018D1 -:10306000D3E7FFF70DF8E4E76B68580880235B02AD -:10307000E2E701240020CBE7082C3ED82000FDF732 -:103080004DF8050F163C303C3C3C3300FFF742FB4B -:103090006B6869685B081818FDF74AF880B214E09D -:1030A000FFF748FB6B685B086968C01809E01A689D -:1030B0001023140069681C4048081A420ED0184BAF -:1030C000C018FDF735F8002480B20300174A103B02 -:1030D000934200D958E72B68D86061E7164BC018B7 -:1030E000DAE7FEF7CDFFDDE76B68580880231B02A7 -:1030F000DAE780231B029942BBD001240020E4E7D9 -:10310000F369FFEFFFCFFFFF00480040FFF4FFFF30 -:103110000044004000100240763E0008001BB7004B -:1031200000093D0000FDFFFFFFFC0F00EFFF000066 -:1031300000127A000048E8010024F400436A30B528 -:10314000DA0706D50168284C4A682240846A22437F -:103150004A609A0706D50168244C4A682240C46A2E -:1031600022434A605A0706D50168214C4A6822402A -:10317000046B22434A601A0706D501681D4C4A6851 -:103180002240446B22434A60DA0606D501681A4C95 -:103190008A682240846B22438A609A0606D50168B9 -:1031A000164C8A682240C46B22438A605A0610D5A6 -:1031B0000168134D4A68046C2A4022434A60802209 -:1031C0005203944205D14A680E4C2240446C22437B -:1031D0004A601B0606D502680B4953680B40816C98 -:1031E0000B43536030BDC046FFFFFDFFFFFFFEFFF6 -:1031F000FFFFFBFFFF7FFFFFFFEFFFFFFFDFFFFF93 -:10320000FFFFEFFFFFFF9FFFFFFFF7FFF8B5040091 -:103210000D0017001E002268D3692B405B1B59422A -:103220004B41BB4201D000201BE0069B0133F3D091 -:10323000FEF70EFF069B801B984201D8002BEAD1B7 -:10324000236808491A6803200A401A609A68A33163 -:10325000FF318A439A6020236367A3670023703499 -:103260002370F8BD5FFEFFFFF0B585B00393436F99 -:1032700004000D0016000220202B4DD1013800293A -:103280004AD0002A48D08023A2685B019A4204D128 -:103290002369002B01D101423ED1230070331A78FB -:1032A0000220012A38D001221A700023E36721335B -:1032B0006367FEF7CDFE230050331E8002331E806D -:1032C00002938023A268070000265B019A4204D182 -:1032D0002369B34201D12E001D00230052331B8805 -:1032E0009AB2002B0DD1039B4021009320003B009C -:1032F000FFF78CFF00280ED120237034636020700C -:103300000AE0039B0022009380213B002000FFF78E -:103310007DFF002802D0032005B0F0BD2268002DFB -:103320000BD133880236DB05DB0D9362029B029AD8 -:103330001B88013B9BB21380CFE72B78013593624A -:10334000F4E7000073B500260400C667FEF780FEB0 -:10335000236805001B681B0715D423681B685B07DF -:103360000AD580210E4B0022009320002B00C903B8 -:10337000FFF74CFF002811D1202300206367A367CB -:10338000703420700BE08021054B320000938903DC -:1033900003002000FFF73AFF0028DED0032076BDAF -:1033A000FFFFFF0110B5041E01D1012010BD436FC6 -:1033B000002B04D1020070321370FDF741FC24236E -:1033C000012122686367136820008B431360FFF7B5 -:1033D0008FFD0128E9D0636A002B02D02000FFF79F -:1033E000ADFE236807495A6820000A402A215A6026 -:1033F0009A688A439A60012219680A431A60FFF7A3 -:10340000A1FFD3E7FFB7FFFF084B13B5040008493E -:103410001868FCF78DFE44430194019B002B00D1FA -:1034200013BD019B013B0193F7E7C0460C00002050 -:1034300040420F000321036870B59A6804000A40F7 -:10344000012A04D11968114201D0002070BD996889 -:10345000134A114208D010230120626D13436365A3 -:10346000A36D0343A365F1E701259A6828002A4369 -:103470009A60FFF7C9FFFEF7EBFD060023681B68A3 -:103480002B42E2D1FEF7E4FD801B0A28F6D9102377 -:10349000626D012013436365A36D1D43A565D5E7E8 -:1034A0001700008070B504000120002C1BD0636D54 -:1034B000002B06D122005032A36520001370FDF7C7 -:1034C000A9FC636DDB0606D4236804229968080012 -:1034D0001040114208D01023626D01201343636530 -:1034E00000235034237070BD626D55491140022293 -:1034F0000A436265032299681140524A012902D1A8 -:103500001D680D4219D180266168F6054D006D08D1 -:10351000B54203D080252D06A94276D11D69AD00A4 -:10352000AD081D611D69294319611825D968A94392 -:10353000D960D968A5682943D9601168424D2940EE -:103540001160616B156849062943116080229968F2 -:103550005205114202D199680A439A60DA683B49E0 -:103560000A402169DA60DD68E268022900D104209E -:10357000266B611C32432A43A569C97FAD032A43E8 -:10358000E569ED032A434D032A4325002C352D78A8 -:103590006D002A430243C220DA60626AFF30824231 -:1035A00004D0A56AD8682A430243DA60A21CD27FFD -:1035B000012A06D1002934D18022D96852020A4357 -:1035C000DA60E16B1A69012933D12148656C024048 -:1035D0001A61226C18692A43A56C2A4302431A61B6 -:1035E0001A691143196107215A6900208A435A61F7 -:1035F0005A69A16B0A435A610322A065636D934324 -:103600001A000123134363656DE71D69114EAD0078 -:10361000AD081D61156835401560156829431160B6 -:1036200083E72021606D01436165A16D0A43A265B6 -:10363000C7E701210A42D6D01A698A431A61D2E744 -:10364000FDFEFFFF08270140FFFFFFFD1902FEFFFF -:1036500003FCFFFFFFFFC3FF036870B59B68040016 -:1036600002205B071AD4250050352B78012B15D08A -:1036700001232B70E369012B11D1636D0B4A0020EC -:103680001A4080235B0013431C226365A0652870E9 -:1036900023681A609968183A0A439A6070BD20003E -:1036A000FFF7C8FE0028E8D0F8E7C046FEF0FFFFAD -:1036B000F8B5466904000D00082E0DD003680120FE -:1036C000DB680C26034207D02023626D503413437D -:1036D000636000232370F8BDFEF7BAFC070023687F -:1036E0001A68164224D08022616D92000A436265F6 -:1036F000C022D9681201114213D1621CD27F002A64 -:103700000FD11A6812070CD59A68520723D40C21DE -:103710005A688A435A60626D1349114001220A4374 -:1037200062650020A2698242D5D10C221A60D2E7DC -:103730006A1CD5D0002D08D10423626D5034134388 -:103740006360002303202370C5E7FEF781FCC01BE4 -:10375000A842C4D9F0E72022616D0A4362650122C4 -:10376000A16D0A43A265DCE7FEFEFFFF0368186C4B -:1037700070470000F8B504005034227803000D00B3 -:103780000220012A0BD0013820701A68916849077D -:1037900006D52022596D0A435A6500232370F8BDCF -:1037A00080232868194E6F684103DB02490B0340F0 -:1037B000B74219D0906A01439162002B08D0802350 -:1037C000134A1B0411680A200B431360FFF71CFE09 -:1037D0002B689B0305D580230D4ADB0311680B433F -:1037E000136000202070DAE7956A8D439562002B04 -:1037F00004D0074A074913680B4013608303F0D5D0 -:10380000034A054913680B40EAE7C046011000006F -:1038100008270140FFFF7FFFFFFFBFFFF8B505004E -:1038200050352B7804000220012B44D001230322C1 -:103830002B70236898681040012809D11A68024249 -:1038400006D02023626D1343636500232B7032E0A2 -:10385000626D1949114002220A4303216265DE6844 -:10386000DA688A43DA608022996812060A439A600D -:10387000FEF7EEFB070023689A68002A0CDB0322A0 -:10388000D96816400E43DE60636D002093431A0032 -:10389000012313436365D8E7FEF7DAFBC01B0A2850 -:1038A000E9D91222636D012093431A0010231343B8 -:1038B000636500232B70F8BDFDFEFFFF0CB4F0B56F -:1038C00087B00CAE08CE1A4D03931A4B1A4A5B5CB4 -:1038D00000903F21280000F0E1F9C3430400DB170A -:1038E000FF271C4040232740039AD91BE8193300C7 -:1038F000059600F0B9F9C2B20300101E13D0FF21E3 -:103900000B40DB19BF393F2B01DC1419E1B20D2349 -:103910000A226B544B1C02312800DBB2C9B2EA54B4 -:10392000FDF7CEF9012007B0F0BC08BC02B0184783 -:103930006A0000208C3E0008833E0008F0B50500B8 -:103940000E0001240B6985B0CF6801932100280087 -:10395000FCF7EEFBB84206D20027002C05D1019BF4 -:103960001C7005B0F0BD7C43F0E728002100FCF797 -:1039700065FCF3680D000290190020000393FCF72A -:10398000D7FB002F07D1029B002B04DC039BA34233 -:1039900014D80400E1E7029A3023092A05DD042146 -:1039A000327807330A4200D12033029A01379B183C -:1039B000019A1370130001330193EAE73023F4E70F -:1039C000F7B5060015005468136901911B1962428E -:1039D0009A5C002A01D0002C38DC2B7A5A1E9341C5 -:1039E0002A78E41A930703D5EB68102B30D1023CF8 -:1039F000092327001A4235D0297A002902D0300045 -:103A0000019B98472B789B070ED5EB68102B31D183 -:103A10003021019B300098472B7858215B0700D458 -:103A200020313000019B98472B782700DB072AD4F0 -:103A30002F6901377B1E197800292CD109222B7898 -:103A40001340082B01D1002C29DCF7BD013CBEE757 -:103A5000083B59424B41E41ACAE720213000019B40 -:103A60009847013F002FF8DCE343DB17621E1C4040 -:103A7000141BC1E7082BD7D13021D2E73021300009 -:103A8000019B9847013F002FF8DCE343DB17621EE0 -:103A90001C40141BCCE73000019B9847C9E720214C -:103AA0003000019B9847013CCDE783680268934250 -:103AB00001D24268D1548368013383607047F0B506 -:103AC00005000E008BB01C0002AB09931178531C4B -:103AD0000093002901D10BB0F0BD252902D02800A8 -:103AE000B04775E000230B2005AA117806938143A7 -:103AF000180011700099137201934A1C09789446BA -:103B00000092002904D1002810D005AF3A780AE0CD -:103B10002D2921D0302922D0232923D0002805D0D7 -:103B200005AF38780200082010433870019A002A47 -:103B300004D0012705AA107838431070002B04D058 -:103B4000022305AA1078034313700B00303B092BA6 -:103B500023D800220A200DE001206146CDE7012292 -:103B60000192FAE70123F8E742439A18634619786D -:103B700001239C44634600930B00303BDFB2092FC6 -:103B8000F2D9313B052B03D80A330A2BECD003E0E2 -:103B90000B00413B052BF7D906922E290DD105AA22 -:103BA00013782D390B43137063461A0011780133D3 -:103BB0000A00303A0093092AF7D969290ED01FD894 -:103BC00058292ED006D8002900D184E7252986D08F -:103BD000009A7BE7632939D06429F9D10A2301CC03 -:103BE00005AFFB60002802DA233340423B72390004 -:103BF000FFF7A4FE3A0031002800FFF7E1FEE7E7F7 -:103C000008006F38C3B2092BE2D80928E0D8FCF7C6 -:103C10007BFA1BDFDFDF20DF05DFDF080A230893E5 -:103C20000CE01023583908934B42594102AA8B00EB -:103C3000117B04229143194302AB197301CC05A9EE -:103C4000FFF77CFE05AAD6E70823E8E702CCC9B255 -:103C500045E708CC3100280005AA0993FFF7B0FE1C -:103C600002AB0993B4E700001FB50024A1420ED0B7 -:103C700001390290019101A807490394FFF71FFF42 -:103C80000399019B029A994204D25454039C200048 -:103C900004B010BDD454F9E7AB3A00080CB407B532 -:103CA00004AB04CB0193FFF7DFFF03B008BC02B005 -:103CB000184710B5029C002801D1002010BD002A31 -:103CC000FBD0002BF9D0002CF7D00329F5D90178CF -:103CD000117041781970C17821701278013A032A65 -:103CE000EBD8002002221B78013BDBB29A42404114 -:103CF000C0B2E3E71348854613480168090E134A2A -:103D0000914205D1124813490160134813490160DB -:103D1000002103E0124B5B58435004311148124B11 -:103D200042189A42F6D3114A02E00023136004328B -:103D30000F4B9A42F9D3FDF70DF800F01DF8FCF790 -:103D400099FBFEE700080020040000001F000000AF -:103D5000341002400100000000000140000000009B -:103D6000A43E0008000000201800002018000020D9 -:103D700014020020FEE7000070B500260C4D0D4C2B -:103D8000641BA410A64209D1002600F02BF80A4DAE -:103D90000A4C641BA410A64205D170BDB300EB58B9 -:103DA00098470136EEE7B300EB5898470136F2E743 -:103DB0009C3E00089C3E00089C3E0008A03E000877 -:103DC000002310B59A4200D110BDCC5CC45401331D -:103DD000F8E703008218934200D17047197001334D -:103DE000F9E70000F8B5C046F8BC08BC9E4670472D -:0C3DF000F8B5C046F8BC08BC9E46704701 -:103DFC0000000048656C6C6F20746865726521006A -:103E0C004D41494E0030782530325800537563636C -:103E1C0065737300490054004D0041004400464650 -:103E2C0000543A25642E256443202D204D3A20253C -:103E3C0064202D204C3A2025640053454E530054E9 -:103E4C00780D0A0052780D0A0000000000000000F6 -:103E5C000001020304060708090000000001020328 -:103E6C0004030406080C1018203000101010041065 -:103E7C00101002101010085B25635D5B25735D004C -:083E8C005444495745464F001C -:083E9400F4C3FF7F01000000F0 -:043E9C00E900000831 -:043EA000C100000855 -:103EA40000010203040506070809000000002000C1 -:083EB400010000000400000001 -:0400000508003CF5BE +:1004700000000000F0B585B000F04AF9FA20400015 +:1004800001F08CFD664C0221664A200003F0AAF9B7 +:10049000654B0221654A00932000654B03F0A2F9E9 +:1004A00000F0C8FA00F0D2FA002800D19AE0614DBD +:1004B000614E2800310000F09DFA2B681B78013B4B +:1004C000032B00D986E06B460027280031005F73BC +:1004D0009F73DF7300F08EFA0F236B4431780D2287 +:1004E00000930E2328686B446A4403F077FB534D56 +:1004F000B8426AD002212000514A03F073F96B46DA +:10050000587B013803285DD802234E4EFFF706FEC4 +:1005100002323D4C737000230122B3700433F37038 +:10052000503373710C3BB371043332703271F37119 +:10053000454A443B2B700221200003F053F92B78ED +:10054000082B45D90A232B7001F022FD3F4B297857 +:10055000C6183C4800F086FA00F078FA002839D135 +:1005600001F016FD8642F7D204212000384A03F03C +:1005700039F92FE0311DF01C33707370B37000F047 +:1005800053F90523334A2B70D5E7032273700423F4 +:100590003270B370721DB31D311DF01C00F054F9A0 +:1005A00007232D4A2B70C6E7042273703270B27095 +:1005B000B31D721D311DF01C00F05EF90723274AA0 +:1005C0002B70B8E7264A2F70B5E7264A2870B2E7A5 +:1005D000002BB9D100F024FA00F038FA0028FBD043 +:1005E00000F028FA01F0D4FC1F4D2B68984206D386 +:1005F00000F0E0F801F0CCFCF530FF30286001F0AD +:10060000C7FC1A4D2B68984200D24BE700F0ECF87B +:1006100001F0BEFCFA239B00C018286042E7C046E8 +:100620004C3D00083B3D00086F3D00085D3D000863 +:10063000513D00084000002034000020350000201B +:10064000783D000800000020803D0008881300006D +:100650008D3D0008823D0008843D0008863D00086D +:10066000883D00088A3D00083C000020380000203A +:1006700010B598B0202200210CA803F048FB1422EA +:100680000021684603F043FB1822002105A803F06F +:100690003EFB1D491D4A0B6801241A4080231B01A3 +:1006A00013430B6002230B931493002315938023B1 +:1006B000DB02169380231022DB030BA80E940F920B +:1006C000179301F0BDFC002800D0FEE70F23029035 +:1006D000009303900C3B049021006846019301F0C5 +:1006E000FBFE002800D0FEE70A230593063B079394 +:1006F000802305A85B01099301F0CCFF002800D0FE +:10070000FEE718B010BDC04600700040FFE7FFFFD5 +:1007100010B501F01DFCFFF7ABFF00F0C5F800F0CD +:1007200009FB00F0FBF900F055FA00F0F5F800F0D5 +:10073000B1FB0123064C2268200011680B431360B3 +:1007400002F010FA0021200002F03AFA10BDC04673 +:10075000FC000020FEE70000F0B5022500260400A2 +:10076000134F85B02A00019102A8390003F0C6FAA0 +:1007700002AB5B192A00390003A81E7003F0BEFA11 +:1007800002AB02A9012290209E7100F05AFC2A00BF +:1007900003A9902000F072FC02AB1B79237002AB1E +:1007A0005A790523D2095343019A137005B0F0BD5D +:1007B000383D000810B507490748FFF7CDFF012075 +:1007C00000F026FB054B1860054800F021FB054BA7 +:1007D000186010BD4D0000204C0000204800002093 +:1007E00000020024440000201FB5094A094B12688A +:1007F0001B780292084A022112685BB20192074AF2 +:10080000074812780092074A02F0ECFF05B000BDDD +:10081000440000204C000020480000204D00002033 +:10082000B13D0008983D0008002807D0002905D0F8 +:10083000034B1B780370034B1B780B707047C0464B +:100840004C0000204D00002030B5002811D00029B8 +:100850000FD0002A0DD0002B0BD0064C25681D7040 +:1008600023681B0A137023681B0C0B7023681B0E74 +:10087000037030BD4800002030B5002811D0002999 +:100880000FD0002A0DD0002B0BD0064C25681D7010 +:1008900023681B0A137023681B0C0B7023681B0E44 +:1008A000037030BD4400002030B5012489B014220B +:1008B000002103A803F02BFA0221154BDA6A224328 +:1008C000DA62DA6A22400192019ADA6A0A43DA624B +:1008D000DB6A0B400293029BBFF34F8F0D4D00224A +:1008E0002800063102F040F8082304940024280070 +:1008F00003A903930594069401F088FF4023280080 +:1009000003A903930494059401F080FF09B030BD5E +:10091000001002400004005010B50F4B0F4CFF2296 +:1009200023600F4B200063603E23A3603D3BE360E8 +:1009300000232361A361E36180239B026261236240 +:1009400000F002FD002801D0FFF704FF0021200085 +:1009500001F0B4FA10BDC04600540040B0000020C1 +:1009600038296020082330B58FB00893802308A869 +:100970005B010C9301F08EFE02221B4BA025D96A6D +:1009800001241143D962D96AED0511400191019901 +:10099000D96A28001143D962D96A0A400292029AA0 +:1009A0008022996B92030A439A6380239B000393EE +:1009B000EF3BFF3B049303A90F3B06930594079479 +:1009C00001F024FF80232800DB0003A90393079490 +:1009D00001F01CFF22000021172001F0F5FF172075 +:1009E00002F01CF80FB030BD0010024010B501F04D +:1009F00063FA10BD10B5002801D0002905D10421EB +:100A0000044A054802F0EEFE10BD044B03601E23AD +:100A10000B70F9E7B63D0008C83D00084E00002005 +:100A200000231900024AD15401331E2BFBD1704719 +:100A30004E00002010B51E220249034800F082FD3E +:100A400010BDC0464E000020B000002010B5044884 +:100A500001F02EFA203843425841C0B210BDC046C2 +:100A6000B000002010B50B4A002802D01D2906D97D +:100A7000094A0421094802F0B5FE002010BD8AB2DF +:100A8000074B0100074800F0B5FC44426041C0B28A +:100A9000F4E7C046CC3D0008DD3D0008C83D000835 +:100AA000FFFF0F00B000002080230268DB059A42A0 +:100AB00006D10123034A916B0B439363BFF34F8F1E +:100AC0007047C0460010024010B5040086B01422E2 +:100AD000002101A803F01BF980232268DB059A425C +:100AE00017D101200C4AD16A0143D162D36A01A90E +:100AF00003400093009B202301931E3B029300239D +:100B0000A020039303330493C0050233059301F03F +:100B10007DFE06B010BDC0460010024010B58AB080 +:100B20001022002102A803F0F2F8082200216846F2 +:100B300003F0EDF81022002106A803F0E8F8802366 +:100B4000234CDB050A222360002320006360A3609E +:100B5000E2602361636101F0EAFF002801D0FFF742 +:100B6000F9FD802320005B0102A9029302F096F8B0 +:100B7000002801D0FFF7EEFD200002F006F8002863 +:100B800001D0FFF7E7FD00236946200000930193A1 +:100B900002F024F9002801D0FFF7DCFD3023002209 +:100BA000069320002B3B06A907930892099202F0B6 +:100BB00019F8002801D0FFF7CDFD08232268200096 +:100BC00091690B439361FFF77FFF0AB010BDC046E8 +:100BD000FC0000200B480C4B10B50360E1235B02C6 +:100BE0000C224360002342618360C3600361836120 +:100BF000C3610362436202F069FB002801D0FFF782 +:100C0000A9FD10BD380100200044004010B50400CB +:100C100086B01422002101A803F079F8124B226853 +:100C20009A421ED18022114B9202996B0A430121F4 +:100C30009A63DA6A0A43DA62DB6A0B400093009B2C +:100C4000BFF34F8F0A4BA02001930223029300238E +:100C5000039303330493C0055B1801A9059301F0C6 +:100C6000D5FD06B010BDC046004400400010024053 +:100C70000480000010B58AB2024B0100024802F065 +:100C800087FA10BDFFFFFF013801002010B5FFF704 +:100C9000F1FF10BD7047FEE77047704710B501F0D7 +:100CA0006BF910BD10B5044C200001F0C1F8200014 +:100CB00000F076FC10BDC046B00000200122054BBC +:100CC000596B0A435A638022996B52050A439A630F +:100CD0007047C046001002408022104B5200196835 +:100CE0000A431A60DA680E490A40DA601A680D4948 +:100CF0000A4001211A609A688A439A601A680A4970 +:100D00000A401A60DA6809490A40DA6000221A616A +:100D10008022074B12059A607047C04600100240BF +:100D20000C40FF88F6FFF6FEFFFFFBFFFFFF02FF10 +:100D300000ED00E0072210B5154C0023A263C2228B +:100D4000FF32626222002C321370124A20002260AD +:100D50009022920362600122238422610332E363C2 +:100D6000A36223636363A360E3606261A361E361E1 +:100D700002F02CFB002801D0FFF7ECFC0021200042 +:100D800002F0E0FC002801D0FFF7E4FC10BDC046F3 +:100D9000B80100200024014070B5040088B014227E +:100DA000002103A802F0B3FF164B22689A4226D115 +:100DB0008022154B9200596B02240A435A63012288 +:100DC000A02003260025D96AC0051143D962D96A3B +:100DD000114001910199D96A2143D962DB6A03A9C3 +:100DE00023400293029B03920496059501F00EFDA9 +:100DF000064803A903940496059501F007FD08B081 +:100E000070BDC046002401400010024000040050A4 +:100E1000802313B5094C5B016946009020000193C3 +:100E200002F03CFC200002F0ABFB01212000494213 +:100E300002F0D2FB200002F02DFC16BDB80100200C +:100E400010B51021034801F089FD01384342584193 +:100E5000C0B210BD0004005010B52021034801F0BD +:100E60007DFD013843425841C0B210BD000400501E +:100E700010B501F0E9FB06490524FFF759F9444391 +:100E80002300013C002B00D110BDC046C046F7E74F +:100E900040420F0030B5144C87B01422002101A845 +:100EA00002F035FF20000122102101F05DFD01223A +:100EB0002000202101F058FD3023012501931F3B24 +:100EC0002000029301A90E3B0493039501F09EFCC0 +:100ED0002A002000202101F047FD2A0010212000D7 +:100EE00001F042FD07B030BD0004005010B5134CB6 +:100EF0002378002B11D001222021114801F034FD6C +:100F0000FFF7B6FF012210210D4801F02DFDFFF77C +:100F100097FF0028FBD0FFF7ABFFFFF79DFF0022F4 +:100F20002021074801F020FDFFF7A2FF0022102139 +:100F3000034801F019FD0123237010BD6C0000204F +:100F400000040050002220210E4810B501F00CFDD5 +:100F5000FFF78EFF012210210A4801F005FDFFF77F +:100F60006FFF0028FBD0FFF783FF012220210548F7 +:100F700001F0FAFCFFF77CFFFFF76EFF0022024B47 +:100F80001A7010BD000400506C00002010B5012242 +:100F9000041E00D1020020210C4801F0E5FCFFF7FF +:100FA00067FF01221021094801F0DEFCFFF760FF16 +:100FB000FFF746FF0028FBD0002C01D0FFF74CFFC5 +:100FC00000221021014801F0CFFC10BD00040050A8 +:100FD000012220210D4810B501F0C6FCFFF748FFA3 +:100FE00001221021094801F0BFFCFFF729FF00286A +:100FF000FBD0FFF73DFFFFF72FFF04000022102179 +:10100000024801F0B1FC200010BDC04600040050B1 +:1010100070B50D001400002801D0FFF767FF082607 +:10102000E009013E6400FFF7B1FFE4B2002EF7D102 +:10103000FFF7CEFF0400002D01D0FFF783FF200053 +:1010400070BD70B50C001600002102000120FFF7F2 +:10105000DFFF0025731E9D4208DBA419013C01211E +:1010600022780020FFF7D4FF012070BD0021625DCF +:1010700008000135FFF7CCFFEDB2EBE7F7B5012330 +:10108000019202000F00180000211A43FFF7C0FF71 +:101090000025019B591E8D4213DB082500247F1873 +:1010A000FFF796FF6400013D0443EDB2E4B2002D6A +:1010B000F6D10120FFF76AFFFFF744FF01203C70E3 +:1010C000FEBD082600247B190093FFF781FF640012 +:1010D000013E0443F6B2E4B2002EF6D13000FFF731 +:1010E00055FF009B01351C70EDB2D2E703689A6989 +:1010F000920701D500229A6201229969114202D118 +:1011000099690A439A61704730B5039C12040068DC +:1011100022431A43054B45688905640D890D1C431C +:10112000A5430A432A43426030BDC046FF63FF0324 +:1011300010B5436B144C0AB2A34202D0134CA34225 +:101140000ED1002A0ADB9023102917D0303B20292A +:1011500014D00023402911D10B430FE0B823F9E745 +:1011600000239A4200DAB833CA0701D5F2221343AA +:101170008A0701D5F42213432029EDD001680A68BB +:1011800013430B6010BDC046111D0008051C00086C +:10119000002310B5CA0708D5030041331A78282365 +:1011A0001A401A33282A00D0B0338A0708D5020023 +:1011B0002824413212782240A2420BD14422134308 +:1011C00009B2002901DAB822134301680A689A4378 +:1011D0000A6010BDF422F2E7F8B5036816009A69B8 +:1011E0000400102310000D00202718401A4218D1C7 +:1011F000F8BD6A1C16D000F0CBFE801BA84201D8B7 +:10120000002D0ED12022636C13436364230041330D +:101210001A702200002342324034137001202370E0 +:10122000E6E723689A693A42E3D010222000DA61A7 +:10123000DF61FFF75BFF2268054953680B4053608D +:101240000423626C13436364230041331F70E0E79F +:1012500000E800FEF8B504000D0016002027236802 +:101260009B693B4201D00020F8BD320029002000DC +:10127000FFF7B2FF002813D100F08AFE801BA842BE +:1012800001D8002DEBD12022636C1343636423004B +:1012900041331A702200002342324034137023700D +:1012A0000120E1E7F8B504000E0017001D002268D8 +:1012B000936933409B1B59424B41BB4201D00020F4 +:1012C00017E06B1CF4D000F063FE069BC01AA84226 +:1012D00001D8002DEBD12022636C012013436364FD +:1012E000230041331A70220000234232403413702D +:1012F0002370F8BDF8B504000D001600022723681E +:101300009B693B4201D00020F8BD3200290020003B +:10131000FFF762FF002815D16B1CF0D000F038FEFB +:10132000801BA84201D8002DE9D12022636C134311 +:101330006364230041331A70220000234232403498 +:10134000137023700120DFE770B504000120002C2A +:101350003FD0250041352B78DAB2002B05D1230090 +:10136000403320001A70FFF7FDFA242301212B706F +:101370002368E0681A68A6688A431A6061681A4A96 +:101380000A401A619968194A11409960012821D1CF +:101390008021090231439960586815490143596019 +:1013A000D96800200A40DA60616922690A43A169AC +:1013B00009020A43DA60216AE2690A431A600122DB +:1013C00019680A431A60202360642B70206342343A +:1013D000207070BD84210902314399600228DBD15D +:1013E000802109015960D7E7FFFFFFF0FF7FFFFF72 +:1013F00000800002F0B51D00030087B04133049166 +:1014000003931B781600DAB2040005920220202B09 +:1014100007D1002901D0002E05D180239B006364F1 +:10142000012007B0F0BD230040331A780220012AC2 +:10143000F7D001221A7000F0ABFD2123039A0700B8 +:1014400013702300059A42331A7000222168049B0E +:101450006264668563623A484B68626303404B602E +:1014600020002B0008210097FFF71CFF2368021EB5 +:1014700005D08022596812020A435A60D0E7082634 +:10148000DE61E368022B09D12B00310020000097B8 +:10149000FFF708FF23680028EBD1DE6180212B00D5 +:1014A0000022200000974902FFF7FCFE002814D01C +:1014B0002268802351681B020B435360B0E7FFF79B +:1014C00019FF22680028F4D1636A19780133916208 +:1014D0006362638D013B9BB26385638D3A00290093 +:1014E00020009EB2002BEAD1FFF7B4FE236800284B +:1014F0000AD08022596812020A435A60626C0120A5 +:10150000042A00D08DE76664802620223602DA6144 +:1015100031002B001F3A20000097FFF7C3FE23681D +:101520005A6816435E60002800D079E72022039BAA +:101530001A702300403442331870207071E7C0469F +:10154000FF7FFFFFF8B5030041331D780224EEB2A0 +:10155000202D1AD1050040352F78012F15D02034C9 +:101560001C7000245E70066844647368084F3B403A +:1015700073604285438D41620385064B0649C36211 +:10158000064B43632C70FFF7D3FD2000F8BDC04627 +:10159000FF7FFFFF0000FFFF02800000F11900083D +:1015A000036810B599691A68436B002B00D09847FF +:1015B00010BD70477047030070B50025202206005B +:1015C00042331D70013B1978040040361A702129FE +:1015D0000AD11123456303632039FFF7D9FD2000A9 +:1015E0003570FFF7E6FF70BD1223456303630221E8 +:1015F000FFF7CEFD20003570FFF7DCFFF3E7704703 +:10160000704700000100036810B5040000201A684C +:10161000423108700121500418D51A6818490A404F +:101620001A60230041331A78292A15D1013A1A7019 +:101630002123200023630121FFF7AAFD23000022BC +:10164000403320001A70FFF7DAFF10BDD20B0A42B8 +:10165000E7D01A680B49E2E71A782A2AF5D1023A4C +:101660001A702223200023630221FFF791FD23003B +:101670000022403320001A70FFF7C2FFE5E7C046A2 +:10168000FFBFFFFFFF7FFFFF70470300F7B5282272 +:1016900041331B7804000168134093423CD1FE277C +:1016A0008D698E698B68CA68ED030192C268360C39 +:1016B000ED0F3E40022A25D19B059A0D5B0F5E403F +:1016C0003000062318401E4210D1A36C0133A364DE +:1016D000A36C022B09D10633A064CB6123004033F5 +:1016E000187029002000FFF7CFFFF7BD80212000F0 +:1016F0000902FFF74DFD2300002240331A70019AC2 +:101700003A40EEE780210902FFF742FD2300002264 +:1017100040331A703200E4E70823CB6100234034E1 +:101720002370E2E770470000184B10B5C362002336 +:101730000200036304002020413210705370636381 +:101740004B0713D52368626A5B6A1370636A0133BF +:101750006362238D002B09D0013B2385638D013B00 +:101760009BB263850423626C1343636420000849C1 +:10177000FFF70EFD102223682000DA61230000220B +:1017800040331A70FFF7CEFF10BDC0460000FFFFC8 +:10179000038000007047704770470100020010B5D9 +:1017A00041310C7800234032602C06D1403C0C7053 +:1017B00003631370FFF7F0FF10BD03631370FFF7AF +:1017C00015F9F9E770B50200050004000020423267 +:1017D00041352B781070324A283BE2626085626C9A +:1017E0000A436264022B2BD803212000FFF7D0FCB0 +:1017F00028232B702B4BA06B6363236B00282ED008 +:101800001A001021113A8A4329D123681A68520418 +:1018100003D51A6824490A401A6001F0D0F801285B +:1018200019D0A06B214B00228363230040331A7030 +:1018300001F0A0F8002811D0A06B836B98470DE051 +:1018400020001B49FFF7A4FC2B78602B01D020233C +:101850002B700023CFE72000FFF79FFF70BDE06BE8 +:101860000028F8D01022123B9343F4D123681A6861 +:10187000120403D51A680F490A401A6001F09FF854 +:101880000128E8D0E06B094B00228363230040333A +:101890001A7001F06FF80028E0D0E06BCDE7C04689 +:1018A0000000FFFFF1190008FFBFFFFF931E0008B3 +:1018B00003800000FF7FFFFFF7B5036806001A688A +:1018C0004136019220223578DA61082304000F00A6 +:1018D0009D43212D50D140492000FFF759FC25633D +:1018E000802223681202596820000A435A605A680D +:1018F0003A490A405A60FFF7F9FB019B01225B0459 +:101900003ED52268364913680B401360A36B002B49 +:1019100003D01B685B689BB263857B0711D50423EA +:101920009F432368626A5B6A1370636A0133636270 +:10193000238D002B05D0013B2385638D013B9BB29A +:101940006385638D002B03D00423626C13436364AF +:101950002300002242331A70656C626395421AD0EC +:101960002000616CFFF72EFF3378282B03D139005C +:101970002000FFF7D9FEF7BD222DB1D11949ABE701 +:10198000019BDB0B1342C8D02268174913680B4038 +:101990001360E36BBBE72700E36A144A40379342C6 +:1019A0000CD02000FFF72EFE2023104A2000E26218 +:1019B000337025633D70FFF7B5FEDCE720233278F6 +:1019C0002000337025633D70222A02D1FFF718FEF4 +:1019D000D1E7FFF714FECEE70180000000E800FE2B +:1019E000FFBFFFFF02800000FF7FFFFF0000FFFF3F +:1019F0000300F7B5403301931B780400C76A0E005B +:101A000015000220012B24D00123019A13704A09EA +:101A10001A4205D06A091A4202D02000FFF74CFF93 +:101A20000123F20635D52A091A4232D0638D002BE4 +:101A300020D1230041331A78282A0BD18022920426 +:101A4000974207D131002000FFF76EFE0020019B76 +:101A50001870FEBD102219782368DA612929F5D1A2 +:101A60002D498F42F2D02000FFF740FB2000FFF706 +:101A7000C9FDEBE710222368DA610423626C13438B +:101A80006364264B1F42E1D12000616CFFF79AFE90 +:101A9000DCE7012372071AD5AA081A4217D0638D12 +:101AA000002B0DD02368626A5B6A1370636A01338E +:101AB0006362238D013B2385638D013B9BB263856C +:101AC000638D002BC2D1144B9F42BFD0CEE70123C0 +:101AD000320706D5EA081A4203D02000FFF7D5FDE9 +:101AE000B4E70123B207B1D5DD401D42AED0638D0E +:101AF000002B0DD0636A226819780133916263620A +:101B0000638D013B9BB26385238D013B23859DE75C +:101B1000024B1F42AAD099E70000FFFFFFFFFFFE24 +:101B200073B52022050003684135DA612B78040083 +:101B30000E00212B2CD10121FFF72AFB1123236357 +:101B400023682E495A680A405A60002262632C4A70 +:101B5000E262F20605D51022DA61616C0C3A0A43A2 +:101B600062642A78602A05D1720703D55B6ADBB20A +:101B70000193019B2000FFF7B9FA636C2A78602A71 +:101B800001D0002B0CD02000616CFFF71BFE73BD51 +:101B90002B78222BD4D10221FFF7FAFA1223CEE7B9 +:101BA0002A78212A13D1013A2A70220021002363C6 +:101BB00042321078403113700B70402803D120005E +:101BC000FFF7E8FDE3E72000FFF7F3FCDFE72A7803 +:101BD000222ADCD1023A2A702200210023634232F9 +:101BE0001078403113700B70402803D12000FFF7AC +:101BF000D2FDCCE72000FFF7DDFCC8E700E800FEDF +:101C00000000FFFF0300F7B5403301931B78040089 +:101C1000C76A0E0015000220012B3CD00123019A57 +:101C200013704A091A4205D06A091A4202D02000EC +:101C3000FFF742FE0120F3065BD52B09034258D083 +:101C4000AA0B1300ED0B2B4303424ED0E36B191E7E +:101C500006D00021054203D01B6859684B42594108 +:101C60002300A06B4133002805D0D20703D50268BA +:101C70005268002A01D001291ED11A78282A0BD1D6 +:101C800080229204974207D131002000FFF74CFDDB +:101C90000020019B1870FEBD102219782368DA61BC +:101CA0002929F5D118498F42F2D02000FFF71EFAFA +:101CB0002000FFF7A7FCEBE710212268D161042286 +:101CC000616C0A4362641B78104ADBB21742DFD1B1 +:101CD00008229343212B01D1236301E0222BFBD067 +:101CE0002000616CFFF76EFDD2E710222368DA61F5 +:101CF000CEE701233207CBD5ED081D42C8D0200026 +:101D0000FFF7C3FCC4E7C0460000FFFFFFFFFFFE74 +:101D100037B5050040352B7804000220012B17D081 +:101D2000012308092B70184213D01009184210D053 +:101D3000102223682000DA610423626C20211343FF +:101D40006364FFF7F5F92000FFF7D0F90020287051 +:101D50003EBD0123080646D59009184243D04021D4 +:101D600023681A688A431A60628D002A2FD0596846 +:101D7000638D8905890DFF2B1BD9FF2323858023C4 +:101D80005B040020228D0090D2B22000FFF7BCF946 +:101D9000638D228D9B1A9BB26385230041331A7891 +:101DA00023681968222A0FD1802212020A431A607E +:101DB000CCE7638DE26A23851C4B9A4201D0E36A2B +:101DC000DFE780239B04DCE78022D201EEE75B683B +:101DD0009B0103D42000FFF7EEFBB7E74021200072 +:101DE000FFF7F0FCB2E70123480613D5900918422B +:101DF00010D0638D002BF1D123685A689201A5D4CD +:101E0000E16A0A4A9142E5D180225968D2010A4327 +:101E10005A609BE70123880600D497E752091A42CB +:101E200000D193E72000FFF77BFE8FE70000FFFF64 +:101E3000036870B59C6901211A68E50508D5D509C4 +:101E40000D4205D0456C2943416480214900D96188 +:101E50000121650509D5D5090D4206D0456C07312C +:101E6000294341648021C900D9610121A40509D514 +:101E7000D2090A4206D00222416C0A4342648022FF +:101E80009200DA610B23416C194201D0FFF79AFCF2 +:101E900070BD806A10B5836B002B01D000229A635D +:101EA000C36B002B01D000229A63FFF776FC10BDB4 +:101EB00041300078C0B27047406C7047F0B5040004 +:101EC0004134227803000F000220D6B2202A18D114 +:101ED0001D0040352A78012A13D0242222701B6865 +:101EE000233A196807489143196019680140002096 +:101EF000196019683943196019680A431A60267015 +:101F00002870F0BDFFEFFFFF70B50500FA200D4B04 +:101F100080001978FEF70CF90B4B01001868FEF7EA +:101F200007F900F085FD04000120002C09D1032DE4 +:101F300007D802382200290000F046FD2000034B9C +:101F40001D6070BD100000200C0000201400002057 +:101F50004023084A10B5116800200B431360FFF7B7 +:101F6000D3FF041E03D1FEF7A9FE200010BD0124FB +:101F7000FBE7C04600200240034A044B11681B786F +:101F80005B1813607047C046140200201000002048 +:101F9000014B18687047C0461402002070B5040059 +:101FA000FFF7F6FF0500631C02D0044B1B78E41812 +:101FB000FFF7EEFF401BA042FAD370BD10000020D7 +:101FC0000C22194B10B5D9680A40082A29D00C2ACE +:101FD00009D0042A1DD11868144BC006C017184038 +:101FE000134BC01810BD13488A02120F825C0902FD +:101FF000D868890F0131C00304D50F485043FEF75C +:1020000097F8EFE71B68DB0601D50C48F6E70848B0 +:10201000F4E780205B6800021B045B0F01339840EB +:10202000E0E70548DEE7C0460010024000E548FF53 +:102030000024F4000A3E000800127A0000093D0066 +:10204000F0B5050087B0002854D00C23C04C0268BE +:10205000E668E7681E4080235B021F40D2073DD43C +:102060002B689B0700D586E02B68DB0628D5002E61 +:1020700000D0DEE023689B0502D5AB69002B39D088 +:102080006268B4492B6A0A401A4362606168EA696F +:102090000902090A12060A43626080225B0B0133BF +:1020A00012029A401300E16800200A06AA49120FA2 +:1020B0008A5CD340A94A1360FFF726FF002830D17D +:1020C0002B681B0700D5EBE02B685B0700D50DE103 +:1020D0006B6A002B00D092E1002022E0082E03D092 +:1020E0000C2E09D1002F07D023689B03B8D56B684D +:1020F000002BB5D1012014E06A689A4213D12268FE +:1021000013432360FFF744FF01908022236892026B +:102110001342A5D1FFF73CFF019BC01A6428F4D9F4 +:10212000032007B0F0BDA021C9028A4205D1802258 +:102130002168D2020A432260E1E721688848014011 +:10214000216021680B400593059B864923680B405D +:102150002360002AD6D1FFF71BFF0190802223685D +:102160009202134200D17BE7FFF712FF019BC01AD6 +:102170006428F3D9D4E72022EB68134203D0216806 +:10218000934311432160042E03D00C2E23D1002F42 +:1021900021D12268520701D5002BABD061682A6992 +:1021A0007148120201400A430921626022688A4391 +:1021B00013432360FFF704FFE368674A1B061B0F06 +:1021C000D35CD840654B18600020FFF79DFE0028C7 +:1021D00000D149E7A5E7002B19D0092122688A43DD +:1021E00013432360FFF7D4FE070004222368134241 +:1021F00007D062682B695C491B020A401343636085 +:1022000032E7FFF7C5FEC01B0228EED988E701229E +:10221000236893432360FFF7BBFE07000422236873 +:10222000134200D120E7FFF7B3FEC01B0228F5D907 +:1022300076E7AB69002B20D0802322685B00134334 +:102240002360FFF7A5FE0700802223689200134257 +:102250000DD063683F4A13402A6A13436360626883 +:10226000EB6912021B06120A1343636028E7FFF7AB +:102270008FFEC01B0228E7D952E723683B4A134070 +:102280002360FFF785FE0700802223689200134237 +:1022900000D115E7FFF77CFEC01B0228F4D93FE709 +:1022A0006A690123002A10D0226D13432365FFF7CA +:1022B0006FFE07000222236D134200D004E7FFF7F0 +:1022C00067FEC01B0228F5D92AE7226D9A432265D2 +:1022D000FFF75EFE07000222236D134200D1F3E6F2 +:1022E000FFF756FEC01B0228F5D919E7802300210D +:1022F000A26B5B0501911A4204D1A26B1343A36345 +:102300000123019380221A4F52003B68134208D0E8 +:102310008022AB68520093422CD1226D1343236577 +:102320004DE080223B68520013433B60FFF730FED4 +:1023300080235B00029003933B68039A1342E7D12A +:10234000FFF726FE029BC01A6428F5D9E8E6C046CE +:1023500000100240FF1FFFFFF23D00080C000020AC +:10236000FFFFFEFFFFFFFBFFFFE0FFFFFFFEFFFFA2 +:1023700000700040002B16D1236D514A1340236595 +:10238000236D504A13402365FFF702FE07008022A9 +:10239000236D920013421AD0FFF7FAFD4A4BC01B7F +:1023A0009842F4D9BCE6A021C9008B4218D1802301 +:1023B000216DDB000B432365236D1A432265FFF774 +:1023C000E7FD07008022236D9200134210D0019B8D +:1023D000012B00D07CE6A36B3C4A1340A36377E655 +:1023E000236D374A13402365236D364A134096E721 +:1023F000FFF7CEFD344BC01B9842E3D990E60C2E7C +:1024000043D0334A022B2ED1236880271340236008 +:10241000FFF7BEFD0600BF0423683B421DD1E96AF9 +:10242000AB6AE2680B432B4980260A4013432A6BB0 +:10243000B6041343E360802322685B0413432360E4 +:10244000FFF7A6FD05002368334200D044E6FFF7FE +:102450009FFD401B0228F6D962E6FFF799FD801B1D +:102460000228D9D95CE62368802613402360FFF751 +:102470008FFD0500B6042368334200D12CE6FFF738 +:1024800087FD401B0228F6D94AE61800012B00D12F +:1024900047E68022E368A96A52021A408A4200D0C5 +:1024A00028E6F022E96A92031A408A4200D021E627 +:1024B000C022120413402A6B934200D10CE619E6A5 +:1024C000FFFEFFFFFFFBFFFF88130000FFFFFFEF92 +:1024D000FFFFFFFEFFFF02FFF7B5041E019101D1D0 +:1024E0000120FEBD0122514D01992B6813408B4202 +:1024F00027D3226893072FD4D30735D401232A6822 +:1025000001991A408A4200D981E02268484D530758 +:1025100000D584E0130706D5EA6823694549DB0046 +:102520000A401343EB60FFF74BFDEB68424A1B0682 +:102530001B0FD35CD840414B18600020FFF7E4FC30 +:10254000CFE72B68019993430B432B602B68134013 +:10255000019A9342C4D1CCE7F0203549CB6883433C +:10256000A0680343CB60C7E7314E62683368022A34 +:1025700019D19B03B4D50321F3688B431343F36054 +:10258000FFF706FD63680700022B19D10C22F368E0 +:102590001340082BB2D0FFF7FBFC294BC01B98421D +:1025A000F4D903209DE7032A02D19B01E3D497E7E6 +:1025B000012A02D15B07DED492E79B05DBD48FE7CB +:1025C000032B0BD10C22F3681340934296D0FFF7F4 +:1025D000DFFC1B4BC01B9842F4D9E2E7012B10D063 +:1025E0000C22F368134289D0FFF7D2FC144BC01BB6 +:1025F0009842F5D9D5E7FFF7CBFC114BC01B9842A9 +:10260000CFD80C22F3681340042BF4D176E72A6864 +:102610009A432A602A681A4200D176E760E7EB689D +:1026200008490B40E1680B43EB6073E70020024070 +:1026300000100240FFC7FFFFF23D00080C00002021 +:1026400088130000FFF8FFFF014B18687047C04671 +:102650000C000020044B054ADB685B055B0FD35C74 +:10266000034A1068D840704700100240023E00083C +:102670000C000020044B054ADB689B045B0FD35C15 +:10268000034A1068D840704700100240023E00081C +:102690000C0000200368F7B505009B063DD580239C +:1026A0000021504C5B05A26B00911A4204D1A26B31 +:1026B0001343A3630123009380274B4E7F003368AD +:1026C0003B4251D06B68C022C0201E00216892029C +:1026D000800317001640034001408B4255D1236D03 +:1026E0001A003A403B4257D16968C0230A009B0256 +:1026F0001A409A4207D123683C480340C020800317 +:1027000001400B432360236D1A43009B2265012B7C +:1027100003D1A36B364A1340A3632A68930706D5F7 +:102720000C203049CB6C8343A8680343CB64530728 +:1027300006D52C492F48CB6C0340E8680343CB6493 +:10274000130706D527492C48CB6C0340286903435F +:10275000CB640020130617D5224A2849D36C0B40BE +:1027600069690B43D3640FE033683B433360FFF781 +:102770000FFC019033683B42A4D1FFF709FC019B99 +:10278000C01A6428F6D90320FEBD9642A7D123685B +:1027900001209B03A3D5F7E7B242A5D02B689B0687 +:1027A000A2D58022216D206D120302432265226D85 +:1027B000134B14480B40024022652365CB0500D41F +:1027C00092E7FFF7E5FB80270600BF00236D3B4241 +:1027D00000D089E7FFF7DCFB0B4B801B9842F5D953 +:1027E000D1E7C0460010024000700040FFFFCFFF5D +:1027F000FFFFFFEFFFF3FFFFFFCFFFFFFFFFF3FF41 +:10280000FFFFFCFFFFFFF7FF881300000023F0B578 +:1028100085B00A681400DC4001D105B0F0BD012488 +:1028200015009C4025400295224200D189E01025E8 +:102830004A685E000192AA430D3DB5409446013AB4 +:10284000ED43012A0FD8CA688768B2402F403A4347 +:10285000012782604268A2431400019A12093A409B +:102860009A40224342608A68C468B2402C402243A6 +:10287000C2606246022A0FD1DA0807249200821849 +:10288000176A03920F221C40A400A24097430A69D2 +:10289000A2401743039A1762032402681540019A65 +:1028A0002240B24080241543019A6405056022420B +:1028B00047D001250F27244C626B2A4302351D4067 +:1028C000AD00AF406263214A9C08A400A418A6682A +:1028D0000022BE43A027FF05B84208D01C4F01329A +:1028E000B84204D01B4F0132B84200D00432AA4093 +:1028F0003243A260184A029C1668029D019FE4437D +:102900003543FF0301D43500254015605668029D0C +:10291000019F3543BF0301D43500254055609668BB +:10292000029D019F3543FF0201D43500254095608B +:10293000D568029E019F2E43BF0201D425402E0080 +:10294000D660013365E7C046001002400000014038 +:1029500000040050000800500004014000690840D5 +:10296000411E8841C0B27047002A01D08161704782 +:102970008162FCE770B5841DE37F022B04D0042341 +:10298000C363033B180070BD0E210368456C1A68D1 +:102990008A431A6001221968914319601C232B4055 +:1029A00015009D40016C431D4D60E2770024DC77EB +:1029B000826B1300A242E5D090472300E2E7063085 +:1029C000C07FC0B27047000030B5FF2503242A0045 +:1029D0000440E400A24089012940D243A140C3B28F +:1029E00000280BDA0F200340083B0A489B089B0095 +:1029F0001B18D86902401143D96130BD064B8008CD +:102A00008000C018C0239B00C45822401143C1500D +:102A1000F3E7C04600ED00E000E100E01F231840AE +:102A20001E3B8340014A13607047C04600E100E04E +:102A30008022431E5204012093420DD2C021074A36 +:102A400007485360036A09061B021B0A0B43036213 +:102A500000200723906013607047C04610E000E03C +:102A600000ED00E0802210B50368D205904202D04C +:102A70000D4CA0420CD17024A3434C6823439042D8 +:102A800002D0094A904203D1084A1340CA6813434E +:102A9000802293430A69134303608B68C3620B6807 +:102AA00083620123436110BD00080140FFFCFFFF6A +:102AB000012230B57325036A93430362036A4468B5 +:102AC0008269AA430D682A430225AB438D6844609E +:102AD00082614A682B434263036230BD1022036A5D +:102AE00030B593430362036A094C45688269144018 +:102AF0000A68120222432024A3431C008B6845600D +:102B00001B0182614A6823438263036230BDC04671 +:102B1000FF8CFFFF1F2310B5012419408C408A4011 +:102B2000036AA3430362036A1A43026210BD70B5CD +:102B300004000120002C14D0250039352B78DAB29E +:102B4000002B05D12300383320001A70FDF7ACFFAD +:102B500002232B702068211DFFF784FF0123002032 +:102B60002B7070BD0100022339310B700368072000 +:102B70009A680240062A03D00122186802431A60AC +:102B8000012300200B707047704770B504000120CE +:102B9000002C14D0250039352B78DAB2002B05D162 +:102BA0002300383320001A70FFF7EEFF02232B704A +:102BB0002068211DFFF756FF012300202B7070BDF8 +:102BC00010B5040001220068FFF7A4FF0721236865 +:102BD0009A680A40062A03D0012219680A431A603B +:102BE000002010BDF8B50400022638342578030013 +:102BF0003000012D0FD01D000138393520702E70A6 +:102C0000082A2AD008D8002A1FD0042A21D001235C +:102C100000202B702070F8BD0C2AF8D11B681A48D0 +:102C20001A6A1A4E02401A621A6A5F68D8693040FE +:102C30000E6836023043164E16408A684968120301 +:102C40005F603243D86119641CE01868FFF730FFF9 +:102C5000DDE71868FFF742FFD9E773261B680D48C8 +:102C60001A6A02401A621A6A5F68D869B0430E682D +:102C70003043094E16408A68496812025F60324349 +:102C8000D861D9631A62C2E7FFEFFFFFFF8CFFFF35 +:102C9000FFDFFFFFFFFEFFFFFFFDFFFFF0B50400BA +:102CA00002223834257803001000012D24D01D00A5 +:102CB0000126393526702A701B6845489A680240FB +:102CC0009A600A68602A55D02FD8402A00D169E05E +:102CD00013D8202A04D009D810211000884307D126 +:102CE0007020996881430A43072140E0302AF7D0D9 +:102CF000012300202B702070F0BD502AF8D14868C5 +:102D0000CA68196A1F6A1201B7431F62F0279E69D9 +:102D1000BE4332430A26B14301439A6119627021CE +:102D20009A688A431100572221E0702A12D080202D +:102D300080018242DCD19A6826484E6810408A6839 +:102D4000C968324309020A4302439A6080229968A3 +:102D5000D2010CE09A681F484E6810408A68C96822 +:102D6000324309020A4302439A60772299680A4370 +:102D70009A60BDE71026186A4A68B043C9681862AD +:102D80009E69154F09033E403143A026186A996198 +:102D90007021B043120102431A629A688A431100FB +:102DA0006722E4E74868CA68196A1F6A1201B743D4 +:102DB0001F62F0279E69BE4332430A26B143014396 +:102DC0009A61196270219A688A4311004722CEE7FE +:102DD0008800FFFFFF00FFFFFF0FFFFF70B504003B +:102DE00002223834257803001000012D13D018007A +:102DF0007026393002701D686A68AB68B2430E688D +:102E0000496832438026B3430B436A60AB600123B9 +:102E100003700020207070BDF8B505002C69AA6809 +:102E2000036822436C69C169224318687E4C0A43D7 +:102E3000204002431A605A687C487D4C0240E86892 +:102E400002435A60A869A34201D02A6A10439A68D3 +:102E5000784E324002439A60774A934215D10C2053 +:102E6000764BDA6C02407648845C802212029142F2 +:102E700000D095E0082C00D98FE02000FDF74EF936 +:102E8000526B738D858D8D8D8800A34200D0C4E078 +:102E9000C0218020694A0901D36C00010B408342A4 +:102EA00017D007D8002B0AD08022D200934236D008 +:102EB000012409E08B42FBD18020000213E0FFF7E0 +:102EC000C9FB0024A0420ED1002320002B666B66B4 +:102ED000F8BD10231068184043425841594B4042F6 +:102EE0001840594BC01803236A6853438342DFD804 +:102EF00013038342DCD300275608040E03029B19F8 +:102F00007C41180021003B00FDF79EF94F4BC21891 +:102F10004F4B9A42CCD82B683C00D860D4E7FFF7DF +:102F20004FF8CEE7FFF796FB6B6840005B086968D7 +:102F3000C018FDF7FDF880B20300464A103B9342EB +:102F4000B6D80F2302009A43130000072A68400FE7 +:102F50001843D060B8E7FFF78DFB6B6840005B0853 +:102F60006968C01809E01A681023140069681C40D9 +:102F700048081A4206D0384BC018FDF7D9F800248B +:102F800080B2D9E7354BC018D3E7FFF719F8E4E76B +:102F90006B68580880235B02E2E701240020CBE73E +:102FA000082C3ED82000FDF7B9F8050F163C303C40 +:102FB0003C3C3300FFF74EFB6B6869685B081818F0 +:102FC000FDF7B6F880B214E0FFF754FB6B685B08BE +:102FD0006968C01809E01A681023140069681C4069 +:102FE00048081A420ED0184BC018FDF7A1F800246B +:102FF00080B20300174A103B934200D958E72B6870 +:10300000D86061E7164BC018DAE7FEF7D9FFDDE7B5 +:103010006B68580880231B02DAE780231B02994261 +:10302000BBD001240020E4E7F369FFEFFFCFFFFFEF +:1030300000480040FFF4FFFF004400400010024041 +:10304000133E0008001BB70000093D0000FDFFFF14 +:10305000FFFC0F00EFFF000000127A000048E801BB +:103060000024F400436A30B5DA0706D50168284C1D +:103070004A682240846A22434A609A0706D501685A +:10308000244C4A682240C46A22434A605A0706D543 +:103090000168214C4A682240046B22434A601A07A7 +:1030A00006D501681D4C4A682240446B22434A60A1 +:1030B000DA0606D501681A4C8A682240846B2243DE +:1030C0008A609A0606D50168164C8A682240C46B4D +:1030D00022438A605A0610D50168134D4A68046C71 +:1030E0002A4022434A6080225203944205D14A6812 +:1030F0000E4C2240446C22434A601B0606D50268EF +:103100000B4953680B40816C0B43536030BDC04684 +:10311000FFFFFDFFFFFFFEFFFFFFFBFFFF7FFFFF46 +:10312000FFEFFFFFFFDFFFFFFFFFEFFFFFFF9FFF4F +:10313000FFFFF7FFF8B504000D0017001E0022681E +:10314000D3692B405B1B59424B41BB4201D000204D +:103150001BE0069B0133F3D0FEF71AFF069B801B92 +:10316000984201D8002BEAD1236808491A68032045 +:103170000A401A609A68A331FF318A439A6020237B +:103180006367A367002370342370F8BD5FFEFFFF01 +:10319000F0B585B00393436F04000D0016000220C4 +:1031A000202B4DD1013800294AD0002A48D0802355 +:1031B000A2685B019A4204D12369002B01D101422C +:1031C0003ED1230070331A780220012A38D0012220 +:1031D0001A700023E36721336367FEF7D9FE2300EB +:1031E00050331E8002331E8002938023A2680700A2 +:1031F00000265B019A4204D12369B34201D12E001B +:103200001D00230052331B889AB2002B0DD1039B63 +:103210004021009320003B00FFF78CFF00280ED1D7 +:1032200020237034636020700AE0039B0022009327 +:1032300080213B002000FFF77DFF002802D0032003 +:1032400005B0F0BD2268002D0BD133880236DB05B6 +:10325000DB0D9362029B029A1B88013B9BB2138099 +:10326000CFE72B7801359362F4E7000073B50026B1 +:103270000400C667FEF78CFE236805001B681B0769 +:1032800015D423681B685B070AD580210E4B0022EA +:10329000009320002B00C903FFF74CFF002811D139 +:1032A000202300206367A367703420700BE0802127 +:1032B000054B32000093890303002000FFF73AFF1B +:1032C0000028DED0032076BDFFFFFF0110B5041EED +:1032D00001D1012010BD436F002B04D102007032D8 +:1032E0001370FDF793FC24230121226863671368A0 +:1032F00020008B431360FFF78FFD0128E9D0636A3C +:10330000002B02D02000FFF7ADFE236807495A6862 +:1033100020000A402A215A609A688A439A60012252 +:1033200019680A431A60FFF7A1FFD3E7FFB7FFFF51 +:10333000084B13B5040008491868FCF7F9FE44432C +:103340000194019B002B00D113BD019B013B019314 +:10335000F7E7C0460C00002040420F00032103683D +:1033600070B59A6804000A40012A04D11968114214 +:1033700001D0002070BD9968134A114208D0102373 +:103380000120626D13436365A36D0343A365F1E7F9 +:1033900001259A6828002A439A60FFF7C9FFFEF7C3 +:1033A000F7FD060023681B682B42E2D1FEF7F0FD13 +:1033B000801B0A28F6D91023626D01201343636530 +:1033C000A36D1D43A565D5E71700008070B5040007 +:1033D0000120002C1BD0636D002B06D1220050323F +:1033E000A36520001370FDF7D7FC636DDB0606D4E0 +:1033F00023680422996808001040114208D0102365 +:10340000626D01201343636500235034237070BD47 +:10341000626D5549114002220A4362650322996890 +:103420001140524A012902D11D680D4219D180264E +:103430006168F6054D006D08B54203D080252D0664 +:10344000A94276D11D69AD00AD081D611D692943F2 +:1034500019611825D968A943D960D968A568294395 +:10346000D9601168424D29401160616B15684906A9 +:1034700029431160802299685205114202D199684E +:103480000A439A60DA683B490A402169DA60DD68DC +:10349000E268022900D10420266B611C32432A43D2 +:1034A000A569C97FAD032A43E569ED032A434D03AE +:1034B0002A4325002C352D786D002A430243C22073 +:1034C000DA60626AFF30824204D0A56AD8682A4373 +:1034D0000243DA60A21CD27F012A06D1002934D12E +:1034E0008022D96852020A43DA60E16B1A69012925 +:1034F00033D12148656C02401A61226C18692A4355 +:10350000A56C2A4302431A611A6911431961072104 +:103510005A6900208A435A615A69A16B0A435A6169 +:103520000322A065636D93431A000123134363656F +:103530006DE71D69114EAD00AD081D611568354080 +:10354000156015682943116083E72021606D0143F0 +:103550006165A16D0A43A265C7E701210A42D6D081 +:103560001A698A431A61D2E7FDFEFFFF082701406E +:10357000FFFFFFFD1902FEFF03FCFFFFFFFFC3FF7C +:10358000036870B59B68040002205B071AD425000D +:1035900050352B78012B15D001232B70E369012BBB +:1035A00011D1636D0B4A00201A4080235B00134346 +:1035B0001C226365A065287023681A609968183A10 +:1035C0000A439A6070BD2000FFF7C8FE0028E8D0CB +:1035D000F8E7C046FEF0FFFFF8B5466904000D00AD +:1035E000082E0DD003680120DB680C26034207D0AB +:1035F0002023626D50341343636000232370F8BDB1 +:10360000FEF7C6FC070023681A68164224D0802201 +:10361000616D92000A436265C022D96812011142AD +:1036200013D1621CD27F002A0FD11A6812070CD561 +:103630009A68520723D40C215A688A435A60626DF3 +:103640001349114001220A4362650020A2698242A7 +:10365000D5D10C221A60D2E76A1CD5D0002D08D132 +:103660000423626D503413436360002303202370EE +:10367000C5E7FEF78DFCC01BA842C4D9F0E72022A5 +:10368000616D0A4362650122A16D0A43A265DCE710 +:10369000FEFEFFFF0368186C70470000F8B50400D9 +:1036A0005034227803000D000220012A0BD001388B +:1036B00020701A689168490706D52022596D0A437F +:1036C0005A6500232370F8BD80232868194E6F685F +:1036D0004103DB02490B0340B74219D0906A014312 +:1036E0009162002B08D08023134A1B0411680A2022 +:1036F0000B431360FFF71CFE2B689B0305D580234B +:103700000D4ADB0311680B43136000202070DAE7D9 +:10371000956A8D439562002B04D0074A07491368C8 +:103720000B4013608303F0D5034A054913680B402F +:10373000EAE7C0460110000008270140FFFF7FFFB5 +:10374000FFFFBFFFF8B5050050352B7804000220BD +:10375000012B44D0012303222B702368986810406A +:10376000012809D11A68024206D02023626D134352 +:10377000636500232B7032E0626D1949114002220B +:103780000A4303216265DE68DA688A43DA608022D0 +:10379000996812060A439A60FEF7FAFB070023684D +:1037A0009A68002A0CDB0322D96816400E43DE60BB +:1037B000636D002093431A00012313436365D8E728 +:1037C000FEF7E6FBC01B0A28E9D91222636D01202F +:1037D00093431A0010231343636500232B70F8BD35 +:1037E000FDFEFFFF0CB4F0B587B00CAE08CE1A4D4D +:1037F00003931A4B1A4A5B5C00903F21280000F0AB +:10380000E1F9C3430400DB17FF271C404023274096 +:10381000039AD91BE8193300059600F0B9F9C2B232 +:103820000300101E13D0FF210B40DB19BF393F2BC3 +:1038300001DC1419E1B20D230A226B544B1C023136 +:103840002800DBB2C9B2EA54FDF720FA012007B024 +:10385000F0BC08BC02B018476D000020293E0008EB +:10386000203E0008F0B505000E0001240B6985B06C +:10387000CF68019321002800FCF75AFCB84206D219 +:103880000027002C05D1019B1C7005B0F0BD7C43C6 +:10389000F0E728002100FCF7D1FCF3680D0002904E +:1038A000190020000393FCF743FC002F07D1029B73 +:1038B000002B04DC039BA34214D80400E1E7029A26 +:1038C0003023092A05DD0421327807330A4200D16A +:1038D0002033029A01379B18019A137013000133A9 +:1038E0000193EAE73023F4E7F7B5060015005468C2 +:1038F000136901911B1962429A5C002A01D0002CC5 +:1039000038DC2B7A5A1E93412A78E41A930703D5A0 +:10391000EB68102B30D1023C092327001A4235D026 +:10392000297A002902D03000019B98472B789B0709 +:103930000ED5EB68102B31D13021019B3000984718 +:103940002B7858215B0700D420313000019B984729 +:103950002B782700DB072AD42F6901377B1E1978C3 +:1039600000292CD109222B781340082B01D1002CDF +:1039700029DCF7BD013CBEE7083B59424B41E41A44 +:10398000CAE720213000019B9847013F002FF8DC57 +:10399000E343DB17621E1C40141BC1E7082BD7D181 +:1039A0003021D2E730213000019B9847013F002FA2 +:1039B000F8DCE343DB17621E1C40141BCCE730002D +:1039C000019B9847C9E720213000019B9847013CA3 +:1039D000CDE783680268934201D24268D15483687C +:1039E000013383607047F0B505000E008BB01C00FA +:1039F00002AB09931178531C0093002901D10BB03D +:103A0000F0BD252902D02800B04775E000230B2027 +:103A100005AA11780693814318001170009913725A +:103A200001934A1C097894460092002904D1002889 +:103A300010D005AF3A780AE02D2921D0302922D0C4 +:103A4000232923D0002805D005AF387802000820AC +:103A500010433870019A002A04D0012705AA107873 +:103A600038431070002B04D0022305AA10780343BA +:103A700013700B00303B092B23D800220A200DE0E5 +:103A800001206146CDE701220192FAE70123F8E720 +:103A900042439A186346197801239C446346009375 +:103AA0000B00303BDFB2092FF2D9313B052B03D895 +:103AB0000A330A2BECD003E00B00413B052BF7D96E +:103AC00006922E290DD105AA13782D390B431370B8 +:103AD00063461A00117801330A00303A0093092A2C +:103AE000F7D969290ED01FD858292ED006D8002919 +:103AF00000D184E7252986D0009A7BE7632939D055 +:103B00006429F9D10A2301CC05AFFB60002802DA51 +:103B1000233340423B723900FFF7A4FE3A003100E4 +:103B20002800FFF7E1FEE7E708006F38C3B2092B72 +:103B3000E2D80928E0D8FCF7E7FA1BDFDFDF20DF57 +:103B400005DFDF080A2308930CE010235839089397 +:103B50004B42594102AA8B00117B04229143194325 +:103B600002AB197301CC05A9FFF77CFE05AAD6E7C5 +:103B70000823E8E702CCC9B245E708CC31002800A9 +:103B800005AA0993FFF7B0FE02AB0993B4E7000062 +:103B90001FB50024A1420ED001390290019101A865 +:103BA00007490394FFF71FFF0399019B029A99426B +:103BB00004D25454039C200004B010BDD454F9E73F +:103BC000D33900080CB407B504AB04CB0193FFF75D +:103BD000DFFF03B008BC02B01847000010B5029C1C +:103BE000002805D0002A03D0002B01D0002C06D1DC +:103BF00004210D4A0D48FFF7F5FD002010BD0329F3 +:103C0000FBD90178117041781970C1782170127850 +:103C1000013A032AF1D8002002221B78013BDBB2D3 +:103C20009A424041C0B2E9E7303E0008473E0008F2 +:103C30001348854613480168090E134A914205D17D +:103C4000124813490160134813490160002103E041 +:103C5000124B5B58435004311148124B42189A42A0 +:103C6000F6D3114A02E00023136004320F4B9A424C +:103C7000F9D3FDF731F800F01DF8FCF7FBFBFEE788 +:103C800000080020040000001F0000003410024063 +:103C90000100000000000140000000005C3E000840 +:103CA000000000201800002018000020180200204A +:103CB000FEE7000070B500260C4D0D4C641BA410EF +:103CC000A64209D1002600F02BF80A4D0A4C641BCD +:103CD000A410A64205D170BDB300EB589847013639 +:103CE000EEE7B300EB5898470136F2E7543E000880 +:103CF000543E0008543E0008583E0008002310B50A +:103D00009A4200D110BDCC5CC4540133F8E70300E3 +:103D10008218934200D1704719700133F9E700000F +:103D2000F8B5C046F8BC08BC9E467047F8B5C0461A +:083D3000F8BC08BC9E46704778 +:103D3800000000506C616E7453656E736F7220766C +:103D4800302E31004D41494E0041707220313220F1 +:103D580032303231004275696C6420646174653AAE +:103D68002025732025730031323A35393A3038002E +:103D78005375636365737300490054004D00410037 +:103D8800440046460054582074696D656F75740088 +:103D9800543A25642E256443202D204D3A2025646D +:103DA800202D204C3A2025640053454E5300496E7F +:103DB80076616C696420617267756D656E74210047 +:103DC80049324300496E76616C696420706F696E90 +:103DD80074657221006E54584275666665724C654A +:103DE8006E20746F6F206269670000000000000099 +:103DF8000000010203040607080900000000010290 +:103E08000304030406080C101820300010101004D6 +:103E180010101002101010085B25635D5B25735DA0 +:103E2800005444495745464F496E76616C69642091 +:103E380063616C6C20617267756D656E74210050EA +:043E48005300000023 +:083E4C003CC4FF7F01000000EF +:043E5400E900000879 +:043E5800C10000089D +:103E5C00FF00000000000000000000000000200037 +:083E6C00010000000400000049 +:0400000508003C3182 :00000001FF diff --git a/Part1_Sensor_board/Firmware/reset.jlink b/Part1_Sensor_board/Firmware/reset.jlink new file mode 100644 index 0000000..211e138 --- /dev/null +++ b/Part1_Sensor_board/Firmware/reset.jlink @@ -0,0 +1,5 @@ +device stm32l011k4 +tif swd +speed 4000 +rnh +exit \ No newline at end of file