diff --git a/.mxproject b/.mxproject
index b4e7714..de7e5f8 100644
--- a/.mxproject
+++ b/.mxproject
@@ -1,31 +1,33 @@
[PreviousLibFiles]
-LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_utils.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usart.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h;
+LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_spi.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_spi.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_utils.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usart.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_spi.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h;
[PreviousUsedKeilFiles]
-SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\dma.c;..\Core\Src\tim.c;..\Core\Src\usart.c;..\Core\Src\stm32f1xx_it.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_utils.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_utils.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;;;
+SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\dma.c;..\Core\Src\spi.c;..\Core\Src\tim.c;..\Core\Src\usart.c;..\Core\Src\stm32f1xx_it.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_spi.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_utils.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_spi.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_utils.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;;;
HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Core\Inc;
CDefines=USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;HSI_VALUE:8000000;LSI_VALUE:40000;VDD_VALUE:3300;PREFETCH_ENABLE:1;STM32F103xB;USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;HSI_VALUE:8000000;LSI_VALUE:40000;VDD_VALUE:3300;PREFETCH_ENABLE:1;
[PreviousGenFiles]
AdvancedFolderStructure=true
-HeaderFileListSize=7
+HeaderFileListSize=8
HeaderFiles#0=..\Core\Inc\gpio.h
HeaderFiles#1=..\Core\Inc\dma.h
-HeaderFiles#2=..\Core\Inc\tim.h
-HeaderFiles#3=..\Core\Inc\usart.h
-HeaderFiles#4=..\Core\Inc\stm32f1xx_it.h
-HeaderFiles#5=..\Core\Inc\stm32_assert.h
-HeaderFiles#6=..\Core\Inc\main.h
+HeaderFiles#2=..\Core\Inc\spi.h
+HeaderFiles#3=..\Core\Inc\tim.h
+HeaderFiles#4=..\Core\Inc\usart.h
+HeaderFiles#5=..\Core\Inc\stm32f1xx_it.h
+HeaderFiles#6=..\Core\Inc\stm32_assert.h
+HeaderFiles#7=..\Core\Inc\main.h
HeaderFolderListSize=1
HeaderPath#0=..\Core\Inc
HeaderFiles=;
-SourceFileListSize=6
+SourceFileListSize=7
SourceFiles#0=..\Core\Src\gpio.c
SourceFiles#1=..\Core\Src\dma.c
-SourceFiles#2=..\Core\Src\tim.c
-SourceFiles#3=..\Core\Src\usart.c
-SourceFiles#4=..\Core\Src\stm32f1xx_it.c
-SourceFiles#5=..\Core\Src\main.c
+SourceFiles#2=..\Core\Src\spi.c
+SourceFiles#3=..\Core\Src\tim.c
+SourceFiles#4=..\Core\Src\usart.c
+SourceFiles#5=..\Core\Src\stm32f1xx_it.c
+SourceFiles#6=..\Core\Src\main.c
SourceFolderListSize=1
SourcePath#0=..\Core\Src
SourceFiles=;
diff --git a/Core/Inc/main.h b/Core/Inc/main.h
index abf11be..59be19d 100644
--- a/Core/Inc/main.h
+++ b/Core/Inc/main.h
@@ -36,6 +36,7 @@ extern "C" {
#include "stm32f1xx_ll_cortex.h"
#include "stm32f1xx_ll_utils.h"
#include "stm32f1xx_ll_pwr.h"
+#include "stm32f1xx_ll_spi.h"
#include "stm32f1xx_ll_tim.h"
#include "stm32f1xx_ll_usart.h"
#include "stm32f1xx_ll_gpio.h"
@@ -78,6 +79,16 @@ void Error_Handler(void);
/* Private defines -----------------------------------------------------------*/
#define LED_BLUE_Pin LL_GPIO_PIN_13
#define LED_BLUE_GPIO_Port GPIOC
+#define TMC2240_EN_Pin LL_GPIO_PIN_3
+#define TMC2240_EN_GPIO_Port GPIOA
+#define TMC2240_CS_Pin LL_GPIO_PIN_4
+#define TMC2240_CS_GPIO_Port GPIOA
+#define TMC2240_SCK_Pin LL_GPIO_PIN_5
+#define TMC2240_SCK_GPIO_Port GPIOA
+#define TMC2240_MISO_Pin LL_GPIO_PIN_6
+#define TMC2240_MISO_GPIO_Port GPIOA
+#define TMC2240_MOSI_Pin LL_GPIO_PIN_7
+#define TMC2240_MOSI_GPIO_Port GPIOA
#define OLED_SDA_Pin LL_GPIO_PIN_12
#define OLED_SDA_GPIO_Port GPIOB
#define OLDE_SCK_Pin LL_GPIO_PIN_13
diff --git a/Core/Inc/spi.h b/Core/Inc/spi.h
new file mode 100644
index 0000000..913f44b
--- /dev/null
+++ b/Core/Inc/spi.h
@@ -0,0 +1,50 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file spi.h
+ * @brief This file contains all the function prototypes for
+ * the spi.c file
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2024 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __SPI_H__
+#define __SPI_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_SPI1_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SPI_H__ */
+
diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c
index 7d058ef..46a4128 100644
--- a/Core/Src/gpio.c
+++ b/Core/Src/gpio.c
@@ -33,14 +33,14 @@
/* USER CODE END 1 */
/** Configure pins as
- * Analog
- * Input
- * Output
- * EVENT_OUT
- * EXTI
- * Free pins are configured automatically as Analog (this feature is enabled through
- * the Code Generation settings)
- */
+ * Analog
+ * Input
+ * Output
+ * EVENT_OUT
+ * EXTI
+ * Free pins are configured automatically as Analog (this feature is enabled through
+ * the Code Generation settings)
+*/
void MX_GPIO_Init(void)
{
@@ -56,7 +56,10 @@ void MX_GPIO_Init(void)
LL_GPIO_ResetOutputPin(LED_BLUE_GPIO_Port, LED_BLUE_Pin);
/**/
- LL_GPIO_ResetOutputPin(GPIOB, OLED_SDA_Pin | OLDE_SCK_Pin);
+ LL_GPIO_ResetOutputPin(GPIOA, TMC2240_EN_Pin|TMC2240_CS_Pin);
+
+ /**/
+ LL_GPIO_ResetOutputPin(GPIOB, OLED_SDA_Pin|OLDE_SCK_Pin);
/**/
GPIO_InitStruct.Pin = LED_BLUE_Pin;
@@ -66,27 +69,39 @@ void MX_GPIO_Init(void)
LL_GPIO_Init(LED_BLUE_GPIO_Port, &GPIO_InitStruct);
/**/
- GPIO_InitStruct.Pin = LL_GPIO_PIN_14 | LL_GPIO_PIN_15;
+ GPIO_InitStruct.Pin = LL_GPIO_PIN_14|LL_GPIO_PIN_15;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
LL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/**/
- GPIO_InitStruct.Pin = LL_GPIO_PIN_0 | LL_GPIO_PIN_2 | LL_GPIO_PIN_3 | LL_GPIO_PIN_4 | LL_GPIO_PIN_5 | LL_GPIO_PIN_6 | LL_GPIO_PIN_7 | LL_GPIO_PIN_8 | LL_GPIO_PIN_11 | LL_GPIO_PIN_12 | LL_GPIO_PIN_15;
+ GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_2|LL_GPIO_PIN_8|LL_GPIO_PIN_11
+ |LL_GPIO_PIN_12|LL_GPIO_PIN_15;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/**/
- GPIO_InitStruct.Pin = LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | LL_GPIO_PIN_10 | LL_GPIO_PIN_11 | LL_GPIO_PIN_14 | LL_GPIO_PIN_15 | LL_GPIO_PIN_3 | LL_GPIO_PIN_4 | LL_GPIO_PIN_5 | LL_GPIO_PIN_6 | LL_GPIO_PIN_7 | LL_GPIO_PIN_8 | LL_GPIO_PIN_9;
+ GPIO_InitStruct.Pin = TMC2240_EN_Pin|TMC2240_CS_Pin;
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
+ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
+ LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /**/
+ GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_10
+ |LL_GPIO_PIN_11|LL_GPIO_PIN_14|LL_GPIO_PIN_15|LL_GPIO_PIN_3
+ |LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7
+ |LL_GPIO_PIN_8|LL_GPIO_PIN_9;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/**/
- GPIO_InitStruct.Pin = OLED_SDA_Pin | OLDE_SCK_Pin;
+ GPIO_InitStruct.Pin = OLED_SDA_Pin|OLDE_SCK_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
}
/* USER CODE BEGIN 2 */
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 7198ed5..dd0d888 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -19,6 +19,7 @@
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "dma.h"
+#include "spi.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"
@@ -102,6 +103,7 @@ int main(void)
MX_USART1_UART_Init();
MX_TIM1_Init();
MX_TIM3_Init();
+ MX_SPI1_Init();
/* USER CODE BEGIN 2 */
my_mem_init(SRAMIN); // Initialize internal memory pool 1
board_init();
diff --git a/Core/Src/spi.c b/Core/Src/spi.c
new file mode 100644
index 0000000..9146037
--- /dev/null
+++ b/Core/Src/spi.c
@@ -0,0 +1,80 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file spi.c
+ * @brief This file provides code for the configuration
+ * of the SPI instances.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2024 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "spi.h"
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* SPI1 init function */
+void MX_SPI1_Init(void)
+{
+
+ /* USER CODE BEGIN SPI1_Init 0 */
+
+ /* USER CODE END SPI1_Init 0 */
+
+ LL_SPI_InitTypeDef SPI_InitStruct = {0};
+
+ LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
+
+ /* Peripheral clock enable */
+ LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI1);
+
+ LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
+ /**SPI1 GPIO Configuration
+ PA5 ------> SPI1_SCK
+ PA6 ------> SPI1_MISO
+ PA7 ------> SPI1_MOSI
+ */
+ GPIO_InitStruct.Pin = TMC2240_SCK_Pin|TMC2240_MOSI_Pin;
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
+ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
+ LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = TMC2240_MISO_Pin;
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_FLOATING;
+ LL_GPIO_Init(TMC2240_MISO_GPIO_Port, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN SPI1_Init 1 */
+
+ /* USER CODE END SPI1_Init 1 */
+ SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;
+ SPI_InitStruct.Mode = LL_SPI_MODE_MASTER;
+ SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_8BIT;
+ SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH;
+ SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE;
+ SPI_InitStruct.NSS = LL_SPI_NSS_SOFT;
+ SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV32;
+ SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST;
+ SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE;
+ SPI_InitStruct.CRCPoly = 10;
+ LL_SPI_Init(SPI1, &SPI_InitStruct);
+ /* USER CODE BEGIN SPI1_Init 2 */
+
+ /* USER CODE END SPI1_Init 2 */
+
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_spi.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_spi.h
new file mode 100644
index 0000000..37e00b1
--- /dev/null
+++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_spi.h
@@ -0,0 +1,1936 @@
+/**
+ ******************************************************************************
+ * @file stm32f1xx_ll_spi.h
+ * @author MCD Application Team
+ * @brief Header file of SPI LL module.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2016 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef STM32F1xx_LL_SPI_H
+#define STM32F1xx_LL_SPI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx.h"
+
+/** @addtogroup STM32F1xx_LL_Driver
+ * @{
+ */
+
+#if defined (SPI1) || defined (SPI2) || defined (SPI3)
+
+/** @defgroup SPI_LL SPI
+ * @{
+ */
+
+/* Private types -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private macros ------------------------------------------------------------*/
+
+/* Exported types ------------------------------------------------------------*/
+#if defined(USE_FULL_LL_DRIVER)
+/** @defgroup SPI_LL_ES_INIT SPI Exported Init structure
+ * @{
+ */
+
+/**
+ * @brief SPI Init structures definition
+ */
+typedef struct
+{
+ uint32_t TransferDirection; /*!< Specifies the SPI unidirectional or bidirectional data mode.
+ This parameter can be a value of @ref SPI_LL_EC_TRANSFER_MODE.
+
+ This feature can be modified afterwards using unitary function @ref LL_SPI_SetTransferDirection().*/
+
+ uint32_t Mode; /*!< Specifies the SPI mode (Master/Slave).
+ This parameter can be a value of @ref SPI_LL_EC_MODE.
+
+ This feature can be modified afterwards using unitary function @ref LL_SPI_SetMode().*/
+
+ uint32_t DataWidth; /*!< Specifies the SPI data width.
+ This parameter can be a value of @ref SPI_LL_EC_DATAWIDTH.
+
+ This feature can be modified afterwards using unitary function @ref LL_SPI_SetDataWidth().*/
+
+ uint32_t ClockPolarity; /*!< Specifies the serial clock steady state.
+ This parameter can be a value of @ref SPI_LL_EC_POLARITY.
+
+ This feature can be modified afterwards using unitary function @ref LL_SPI_SetClockPolarity().*/
+
+ uint32_t ClockPhase; /*!< Specifies the clock active edge for the bit capture.
+ This parameter can be a value of @ref SPI_LL_EC_PHASE.
+
+ This feature can be modified afterwards using unitary function @ref LL_SPI_SetClockPhase().*/
+
+ uint32_t NSS; /*!< Specifies whether the NSS signal is managed by hardware (NSS pin) or by software using the SSI bit.
+ This parameter can be a value of @ref SPI_LL_EC_NSS_MODE.
+
+ This feature can be modified afterwards using unitary function @ref LL_SPI_SetNSSMode().*/
+
+ uint32_t BaudRate; /*!< Specifies the BaudRate prescaler value which will be used to configure the transmit and receive SCK clock.
+ This parameter can be a value of @ref SPI_LL_EC_BAUDRATEPRESCALER.
+ @note The communication clock is derived from the master clock. The slave clock does not need to be set.
+
+ This feature can be modified afterwards using unitary function @ref LL_SPI_SetBaudRatePrescaler().*/
+
+ uint32_t BitOrder; /*!< Specifies whether data transfers start from MSB or LSB bit.
+ This parameter can be a value of @ref SPI_LL_EC_BIT_ORDER.
+
+ This feature can be modified afterwards using unitary function @ref LL_SPI_SetTransferBitOrder().*/
+
+ uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not.
+ This parameter can be a value of @ref SPI_LL_EC_CRC_CALCULATION.
+
+ This feature can be modified afterwards using unitary functions @ref LL_SPI_EnableCRC() and @ref LL_SPI_DisableCRC().*/
+
+ uint32_t CRCPoly; /*!< Specifies the polynomial used for the CRC calculation.
+ This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF.
+
+ This feature can be modified afterwards using unitary function @ref LL_SPI_SetCRCPolynomial().*/
+
+} LL_SPI_InitTypeDef;
+
+/**
+ * @}
+ */
+#endif /* USE_FULL_LL_DRIVER */
+
+/* Exported constants --------------------------------------------------------*/
+/** @defgroup SPI_LL_Exported_Constants SPI Exported Constants
+ * @{
+ */
+
+/** @defgroup SPI_LL_EC_GET_FLAG Get Flags Defines
+ * @brief Flags defines which can be used with LL_SPI_ReadReg function
+ * @{
+ */
+#define LL_SPI_SR_RXNE SPI_SR_RXNE /*!< Rx buffer not empty flag */
+#define LL_SPI_SR_TXE SPI_SR_TXE /*!< Tx buffer empty flag */
+#define LL_SPI_SR_BSY SPI_SR_BSY /*!< Busy flag */
+#define LL_SPI_SR_CRCERR SPI_SR_CRCERR /*!< CRC error flag */
+#define LL_SPI_SR_MODF SPI_SR_MODF /*!< Mode fault flag */
+#define LL_SPI_SR_OVR SPI_SR_OVR /*!< Overrun flag */
+#define LL_SPI_SR_FRE SPI_SR_FRE /*!< TI mode frame format error flag */
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EC_IT IT Defines
+ * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions
+ * @{
+ */
+#define LL_SPI_CR2_RXNEIE SPI_CR2_RXNEIE /*!< Rx buffer not empty interrupt enable */
+#define LL_SPI_CR2_TXEIE SPI_CR2_TXEIE /*!< Tx buffer empty interrupt enable */
+#define LL_SPI_CR2_ERRIE SPI_CR2_ERRIE /*!< Error interrupt enable */
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EC_MODE Operation Mode
+ * @{
+ */
+#define LL_SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI) /*!< Master configuration */
+#define LL_SPI_MODE_SLAVE 0x00000000U /*!< Slave configuration */
+/**
+ * @}
+ */
+
+
+/** @defgroup SPI_LL_EC_PHASE Clock Phase
+ * @{
+ */
+#define LL_SPI_PHASE_1EDGE 0x00000000U /*!< First clock transition is the first data capture edge */
+#define LL_SPI_PHASE_2EDGE (SPI_CR1_CPHA) /*!< Second clock transition is the first data capture edge */
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EC_POLARITY Clock Polarity
+ * @{
+ */
+#define LL_SPI_POLARITY_LOW 0x00000000U /*!< Clock to 0 when idle */
+#define LL_SPI_POLARITY_HIGH (SPI_CR1_CPOL) /*!< Clock to 1 when idle */
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EC_BAUDRATEPRESCALER Baud Rate Prescaler
+ * @{
+ */
+#define LL_SPI_BAUDRATEPRESCALER_DIV2 0x00000000U /*!< BaudRate control equal to fPCLK/2 */
+#define LL_SPI_BAUDRATEPRESCALER_DIV4 (SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/4 */
+#define LL_SPI_BAUDRATEPRESCALER_DIV8 (SPI_CR1_BR_1) /*!< BaudRate control equal to fPCLK/8 */
+#define LL_SPI_BAUDRATEPRESCALER_DIV16 (SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/16 */
+#define LL_SPI_BAUDRATEPRESCALER_DIV32 (SPI_CR1_BR_2) /*!< BaudRate control equal to fPCLK/32 */
+#define LL_SPI_BAUDRATEPRESCALER_DIV64 (SPI_CR1_BR_2 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/64 */
+#define LL_SPI_BAUDRATEPRESCALER_DIV128 (SPI_CR1_BR_2 | SPI_CR1_BR_1) /*!< BaudRate control equal to fPCLK/128 */
+#define LL_SPI_BAUDRATEPRESCALER_DIV256 (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/256 */
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EC_BIT_ORDER Transmission Bit Order
+ * @{
+ */
+#define LL_SPI_LSB_FIRST (SPI_CR1_LSBFIRST) /*!< Data is transmitted/received with the LSB first */
+#define LL_SPI_MSB_FIRST 0x00000000U /*!< Data is transmitted/received with the MSB first */
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EC_TRANSFER_MODE Transfer Mode
+ * @{
+ */
+#define LL_SPI_FULL_DUPLEX 0x00000000U /*!< Full-Duplex mode. Rx and Tx transfer on 2 lines */
+#define LL_SPI_SIMPLEX_RX (SPI_CR1_RXONLY) /*!< Simplex Rx mode. Rx transfer only on 1 line */
+#define LL_SPI_HALF_DUPLEX_RX (SPI_CR1_BIDIMODE) /*!< Half-Duplex Rx mode. Rx transfer on 1 line */
+#define LL_SPI_HALF_DUPLEX_TX (SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE) /*!< Half-Duplex Tx mode. Tx transfer on 1 line */
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EC_NSS_MODE Slave Select Pin Mode
+ * @{
+ */
+#define LL_SPI_NSS_SOFT (SPI_CR1_SSM) /*!< NSS managed internally. NSS pin not used and free */
+#define LL_SPI_NSS_HARD_INPUT 0x00000000U /*!< NSS pin used in Input. Only used in Master mode */
+#define LL_SPI_NSS_HARD_OUTPUT (((uint32_t)SPI_CR2_SSOE << 16U)) /*!< NSS pin used in Output. Only used in Slave mode as chip select */
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EC_DATAWIDTH Datawidth
+ * @{
+ */
+#define LL_SPI_DATAWIDTH_8BIT 0x00000000U /*!< Data length for SPI transfer: 8 bits */
+#define LL_SPI_DATAWIDTH_16BIT (SPI_CR1_DFF) /*!< Data length for SPI transfer: 16 bits */
+/**
+ * @}
+ */
+#if defined(USE_FULL_LL_DRIVER)
+
+/** @defgroup SPI_LL_EC_CRC_CALCULATION CRC Calculation
+ * @{
+ */
+#define LL_SPI_CRCCALCULATION_DISABLE 0x00000000U /*!< CRC calculation disabled */
+#define LL_SPI_CRCCALCULATION_ENABLE (SPI_CR1_CRCEN) /*!< CRC calculation enabled */
+/**
+ * @}
+ */
+#endif /* USE_FULL_LL_DRIVER */
+
+/**
+ * @}
+ */
+
+/* Exported macro ------------------------------------------------------------*/
+/** @defgroup SPI_LL_Exported_Macros SPI Exported Macros
+ * @{
+ */
+
+/** @defgroup SPI_LL_EM_WRITE_READ Common Write and read registers Macros
+ * @{
+ */
+
+/**
+ * @brief Write a value in SPI register
+ * @param __INSTANCE__ SPI Instance
+ * @param __REG__ Register to be written
+ * @param __VALUE__ Value to be written in the register
+ * @retval None
+ */
+#define LL_SPI_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
+
+/**
+ * @brief Read a value in SPI register
+ * @param __INSTANCE__ SPI Instance
+ * @param __REG__ Register to be read
+ * @retval Register value
+ */
+#define LL_SPI_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/* Exported functions --------------------------------------------------------*/
+/** @defgroup SPI_LL_Exported_Functions SPI Exported Functions
+ * @{
+ */
+
+/** @defgroup SPI_LL_EF_Configuration Configuration
+ * @{
+ */
+
+/**
+ * @brief Enable SPI peripheral
+ * @rmtoll CR1 SPE LL_SPI_Enable
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_Enable(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->CR1, SPI_CR1_SPE);
+}
+
+/**
+ * @brief Disable SPI peripheral
+ * @note When disabling the SPI, follow the procedure described in the Reference Manual.
+ * @rmtoll CR1 SPE LL_SPI_Disable
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_Disable(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE);
+}
+
+/**
+ * @brief Check if SPI peripheral is enabled
+ * @rmtoll CR1 SPE LL_SPI_IsEnabled
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsEnabled(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->CR1, SPI_CR1_SPE) == (SPI_CR1_SPE)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Set SPI operation mode to Master or Slave
+ * @note This bit should not be changed when communication is ongoing.
+ * @rmtoll CR1 MSTR LL_SPI_SetMode\n
+ * CR1 SSI LL_SPI_SetMode
+ * @param SPIx SPI Instance
+ * @param Mode This parameter can be one of the following values:
+ * @arg @ref LL_SPI_MODE_MASTER
+ * @arg @ref LL_SPI_MODE_SLAVE
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetMode(SPI_TypeDef *SPIx, uint32_t Mode)
+{
+ MODIFY_REG(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI, Mode);
+}
+
+/**
+ * @brief Get SPI operation mode (Master or Slave)
+ * @rmtoll CR1 MSTR LL_SPI_GetMode\n
+ * CR1 SSI LL_SPI_GetMode
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_SPI_MODE_MASTER
+ * @arg @ref LL_SPI_MODE_SLAVE
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetMode(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI));
+}
+
+
+/**
+ * @brief Set clock phase
+ * @note This bit should not be changed when communication is ongoing.
+ * This bit is not used in SPI TI mode.
+ * @rmtoll CR1 CPHA LL_SPI_SetClockPhase
+ * @param SPIx SPI Instance
+ * @param ClockPhase This parameter can be one of the following values:
+ * @arg @ref LL_SPI_PHASE_1EDGE
+ * @arg @ref LL_SPI_PHASE_2EDGE
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetClockPhase(SPI_TypeDef *SPIx, uint32_t ClockPhase)
+{
+ MODIFY_REG(SPIx->CR1, SPI_CR1_CPHA, ClockPhase);
+}
+
+/**
+ * @brief Get clock phase
+ * @rmtoll CR1 CPHA LL_SPI_GetClockPhase
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_SPI_PHASE_1EDGE
+ * @arg @ref LL_SPI_PHASE_2EDGE
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetClockPhase(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPHA));
+}
+
+/**
+ * @brief Set clock polarity
+ * @note This bit should not be changed when communication is ongoing.
+ * This bit is not used in SPI TI mode.
+ * @rmtoll CR1 CPOL LL_SPI_SetClockPolarity
+ * @param SPIx SPI Instance
+ * @param ClockPolarity This parameter can be one of the following values:
+ * @arg @ref LL_SPI_POLARITY_LOW
+ * @arg @ref LL_SPI_POLARITY_HIGH
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity)
+{
+ MODIFY_REG(SPIx->CR1, SPI_CR1_CPOL, ClockPolarity);
+}
+
+/**
+ * @brief Get clock polarity
+ * @rmtoll CR1 CPOL LL_SPI_GetClockPolarity
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_SPI_POLARITY_LOW
+ * @arg @ref LL_SPI_POLARITY_HIGH
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetClockPolarity(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPOL));
+}
+
+/**
+ * @brief Set baud rate prescaler
+ * @note These bits should not be changed when communication is ongoing. SPI BaudRate = fPCLK/Prescaler.
+ * @rmtoll CR1 BR LL_SPI_SetBaudRatePrescaler
+ * @param SPIx SPI Instance
+ * @param BaudRate This parameter can be one of the following values:
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetBaudRatePrescaler(SPI_TypeDef *SPIx, uint32_t BaudRate)
+{
+ MODIFY_REG(SPIx->CR1, SPI_CR1_BR, BaudRate);
+}
+
+/**
+ * @brief Get baud rate prescaler
+ * @rmtoll CR1 BR LL_SPI_GetBaudRatePrescaler
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128
+ * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetBaudRatePrescaler(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_BR));
+}
+
+/**
+ * @brief Set transfer bit order
+ * @note This bit should not be changed when communication is ongoing. This bit is not used in SPI TI mode.
+ * @rmtoll CR1 LSBFIRST LL_SPI_SetTransferBitOrder
+ * @param SPIx SPI Instance
+ * @param BitOrder This parameter can be one of the following values:
+ * @arg @ref LL_SPI_LSB_FIRST
+ * @arg @ref LL_SPI_MSB_FIRST
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetTransferBitOrder(SPI_TypeDef *SPIx, uint32_t BitOrder)
+{
+ MODIFY_REG(SPIx->CR1, SPI_CR1_LSBFIRST, BitOrder);
+}
+
+/**
+ * @brief Get transfer bit order
+ * @rmtoll CR1 LSBFIRST LL_SPI_GetTransferBitOrder
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_SPI_LSB_FIRST
+ * @arg @ref LL_SPI_MSB_FIRST
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetTransferBitOrder(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_LSBFIRST));
+}
+
+/**
+ * @brief Set transfer direction mode
+ * @note For Half-Duplex mode, Rx Direction is set by default.
+ * In master mode, the MOSI pin is used and in slave mode, the MISO pin is used for Half-Duplex.
+ * @rmtoll CR1 RXONLY LL_SPI_SetTransferDirection\n
+ * CR1 BIDIMODE LL_SPI_SetTransferDirection\n
+ * CR1 BIDIOE LL_SPI_SetTransferDirection
+ * @param SPIx SPI Instance
+ * @param TransferDirection This parameter can be one of the following values:
+ * @arg @ref LL_SPI_FULL_DUPLEX
+ * @arg @ref LL_SPI_SIMPLEX_RX
+ * @arg @ref LL_SPI_HALF_DUPLEX_RX
+ * @arg @ref LL_SPI_HALF_DUPLEX_TX
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetTransferDirection(SPI_TypeDef *SPIx, uint32_t TransferDirection)
+{
+ MODIFY_REG(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE, TransferDirection);
+}
+
+/**
+ * @brief Get transfer direction mode
+ * @rmtoll CR1 RXONLY LL_SPI_GetTransferDirection\n
+ * CR1 BIDIMODE LL_SPI_GetTransferDirection\n
+ * CR1 BIDIOE LL_SPI_GetTransferDirection
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_SPI_FULL_DUPLEX
+ * @arg @ref LL_SPI_SIMPLEX_RX
+ * @arg @ref LL_SPI_HALF_DUPLEX_RX
+ * @arg @ref LL_SPI_HALF_DUPLEX_TX
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetTransferDirection(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE));
+}
+
+/**
+ * @brief Set frame data width
+ * @rmtoll CR1 DFF LL_SPI_SetDataWidth
+ * @param SPIx SPI Instance
+ * @param DataWidth This parameter can be one of the following values:
+ * @arg @ref LL_SPI_DATAWIDTH_8BIT
+ * @arg @ref LL_SPI_DATAWIDTH_16BIT
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetDataWidth(SPI_TypeDef *SPIx, uint32_t DataWidth)
+{
+ MODIFY_REG(SPIx->CR1, SPI_CR1_DFF, DataWidth);
+}
+
+/**
+ * @brief Get frame data width
+ * @rmtoll CR1 DFF LL_SPI_GetDataWidth
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_SPI_DATAWIDTH_8BIT
+ * @arg @ref LL_SPI_DATAWIDTH_16BIT
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetDataWidth(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_DFF));
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EF_CRC_Management CRC Management
+ * @{
+ */
+
+/**
+ * @brief Enable CRC
+ * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation.
+ * @rmtoll CR1 CRCEN LL_SPI_EnableCRC
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_EnableCRC(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->CR1, SPI_CR1_CRCEN);
+}
+
+/**
+ * @brief Disable CRC
+ * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation.
+ * @rmtoll CR1 CRCEN LL_SPI_DisableCRC
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_DisableCRC(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->CR1, SPI_CR1_CRCEN);
+}
+
+/**
+ * @brief Check if CRC is enabled
+ * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation.
+ * @rmtoll CR1 CRCEN LL_SPI_IsEnabledCRC
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsEnabledCRC(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->CR1, SPI_CR1_CRCEN) == (SPI_CR1_CRCEN)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Set CRCNext to transfer CRC on the line
+ * @note This bit has to be written as soon as the last data is written in the SPIx_DR register.
+ * @rmtoll CR1 CRCNEXT LL_SPI_SetCRCNext
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetCRCNext(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->CR1, SPI_CR1_CRCNEXT);
+}
+
+/**
+ * @brief Set polynomial for CRC calculation
+ * @rmtoll CRCPR CRCPOLY LL_SPI_SetCRCPolynomial
+ * @param SPIx SPI Instance
+ * @param CRCPoly This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetCRCPolynomial(SPI_TypeDef *SPIx, uint32_t CRCPoly)
+{
+ WRITE_REG(SPIx->CRCPR, (uint16_t)CRCPoly);
+}
+
+/**
+ * @brief Get polynomial for CRC calculation
+ * @rmtoll CRCPR CRCPOLY LL_SPI_GetCRCPolynomial
+ * @param SPIx SPI Instance
+ * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetCRCPolynomial(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_REG(SPIx->CRCPR));
+}
+
+/**
+ * @brief Get Rx CRC
+ * @rmtoll RXCRCR RXCRC LL_SPI_GetRxCRC
+ * @param SPIx SPI Instance
+ * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetRxCRC(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_REG(SPIx->RXCRCR));
+}
+
+/**
+ * @brief Get Tx CRC
+ * @rmtoll TXCRCR TXCRC LL_SPI_GetTxCRC
+ * @param SPIx SPI Instance
+ * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetTxCRC(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_REG(SPIx->TXCRCR));
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EF_NSS_Management Slave Select Pin Management
+ * @{
+ */
+
+/**
+ * @brief Set NSS mode
+ * @note LL_SPI_NSS_SOFT Mode is not used in SPI TI mode.
+ * @rmtoll CR1 SSM LL_SPI_SetNSSMode\n
+ * @rmtoll CR2 SSOE LL_SPI_SetNSSMode
+ * @param SPIx SPI Instance
+ * @param NSS This parameter can be one of the following values:
+ * @arg @ref LL_SPI_NSS_SOFT
+ * @arg @ref LL_SPI_NSS_HARD_INPUT
+ * @arg @ref LL_SPI_NSS_HARD_OUTPUT
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_SetNSSMode(SPI_TypeDef *SPIx, uint32_t NSS)
+{
+ MODIFY_REG(SPIx->CR1, SPI_CR1_SSM, NSS);
+ MODIFY_REG(SPIx->CR2, SPI_CR2_SSOE, ((uint32_t)(NSS >> 16U)));
+}
+
+/**
+ * @brief Get NSS mode
+ * @rmtoll CR1 SSM LL_SPI_GetNSSMode\n
+ * @rmtoll CR2 SSOE LL_SPI_GetNSSMode
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_SPI_NSS_SOFT
+ * @arg @ref LL_SPI_NSS_HARD_INPUT
+ * @arg @ref LL_SPI_NSS_HARD_OUTPUT
+ */
+__STATIC_INLINE uint32_t LL_SPI_GetNSSMode(SPI_TypeDef *SPIx)
+{
+ uint32_t Ssm = (READ_BIT(SPIx->CR1, SPI_CR1_SSM));
+ uint32_t Ssoe = (READ_BIT(SPIx->CR2, SPI_CR2_SSOE) << 16U);
+ return (Ssm | Ssoe);
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EF_FLAG_Management FLAG Management
+ * @{
+ */
+
+/**
+ * @brief Check if Rx buffer is not empty
+ * @rmtoll SR RXNE LL_SPI_IsActiveFlag_RXNE
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_RXNE(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->SR, SPI_SR_RXNE) == (SPI_SR_RXNE)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Check if Tx buffer is empty
+ * @rmtoll SR TXE LL_SPI_IsActiveFlag_TXE
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_TXE(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->SR, SPI_SR_TXE) == (SPI_SR_TXE)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Get CRC error flag
+ * @rmtoll SR CRCERR LL_SPI_IsActiveFlag_CRCERR
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_CRCERR(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->SR, SPI_SR_CRCERR) == (SPI_SR_CRCERR)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Get mode fault error flag
+ * @rmtoll SR MODF LL_SPI_IsActiveFlag_MODF
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_MODF(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->SR, SPI_SR_MODF) == (SPI_SR_MODF)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Get overrun error flag
+ * @rmtoll SR OVR LL_SPI_IsActiveFlag_OVR
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_OVR(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->SR, SPI_SR_OVR) == (SPI_SR_OVR)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Get busy flag
+ * @note The BSY flag is cleared under any one of the following conditions:
+ * -When the SPI is correctly disabled
+ * -When a fault is detected in Master mode (MODF bit set to 1)
+ * -In Master mode, when it finishes a data transmission and no new data is ready to be
+ * sent
+ * -In Slave mode, when the BSY flag is set to '0' for at least one SPI clock cycle between
+ * each data transfer.
+ * @rmtoll SR BSY LL_SPI_IsActiveFlag_BSY
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_BSY(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->SR, SPI_SR_BSY) == (SPI_SR_BSY)) ? 1UL : 0UL);
+}
+
+
+/**
+ * @brief Clear CRC error flag
+ * @rmtoll SR CRCERR LL_SPI_ClearFlag_CRCERR
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_ClearFlag_CRCERR(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->SR, SPI_SR_CRCERR);
+}
+
+/**
+ * @brief Clear mode fault error flag
+ * @note Clearing this flag is done by a read access to the SPIx_SR
+ * register followed by a write access to the SPIx_CR1 register
+ * @rmtoll SR MODF LL_SPI_ClearFlag_MODF
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_ClearFlag_MODF(SPI_TypeDef *SPIx)
+{
+ __IO uint32_t tmpreg_sr;
+ tmpreg_sr = SPIx->SR;
+ (void) tmpreg_sr;
+ CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE);
+}
+
+/**
+ * @brief Clear overrun error flag
+ * @note Clearing this flag is done by a read access to the SPIx_DR
+ * register followed by a read access to the SPIx_SR register
+ * @rmtoll SR OVR LL_SPI_ClearFlag_OVR
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_ClearFlag_OVR(SPI_TypeDef *SPIx)
+{
+ __IO uint32_t tmpreg;
+ tmpreg = SPIx->DR;
+ (void) tmpreg;
+ tmpreg = SPIx->SR;
+ (void) tmpreg;
+}
+
+/**
+ * @brief Clear frame format error flag
+ * @note Clearing this flag is done by reading SPIx_SR register
+ * @rmtoll SR FRE LL_SPI_ClearFlag_FRE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_ClearFlag_FRE(SPI_TypeDef *SPIx)
+{
+ __IO uint32_t tmpreg;
+ tmpreg = SPIx->SR;
+ (void) tmpreg;
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EF_IT_Management Interrupt Management
+ * @{
+ */
+
+/**
+ * @brief Enable error interrupt
+ * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR, OVR, MODF in SPI mode, FRE at TI mode).
+ * @rmtoll CR2 ERRIE LL_SPI_EnableIT_ERR
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_EnableIT_ERR(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->CR2, SPI_CR2_ERRIE);
+}
+
+/**
+ * @brief Enable Rx buffer not empty interrupt
+ * @rmtoll CR2 RXNEIE LL_SPI_EnableIT_RXNE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_EnableIT_RXNE(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->CR2, SPI_CR2_RXNEIE);
+}
+
+/**
+ * @brief Enable Tx buffer empty interrupt
+ * @rmtoll CR2 TXEIE LL_SPI_EnableIT_TXE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_EnableIT_TXE(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->CR2, SPI_CR2_TXEIE);
+}
+
+/**
+ * @brief Disable error interrupt
+ * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR, OVR, MODF in SPI mode, FRE at TI mode).
+ * @rmtoll CR2 ERRIE LL_SPI_DisableIT_ERR
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_DisableIT_ERR(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->CR2, SPI_CR2_ERRIE);
+}
+
+/**
+ * @brief Disable Rx buffer not empty interrupt
+ * @rmtoll CR2 RXNEIE LL_SPI_DisableIT_RXNE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_DisableIT_RXNE(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->CR2, SPI_CR2_RXNEIE);
+}
+
+/**
+ * @brief Disable Tx buffer empty interrupt
+ * @rmtoll CR2 TXEIE LL_SPI_DisableIT_TXE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_DisableIT_TXE(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->CR2, SPI_CR2_TXEIE);
+}
+
+/**
+ * @brief Check if error interrupt is enabled
+ * @rmtoll CR2 ERRIE LL_SPI_IsEnabledIT_ERR
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_ERR(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->CR2, SPI_CR2_ERRIE) == (SPI_CR2_ERRIE)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Check if Rx buffer not empty interrupt is enabled
+ * @rmtoll CR2 RXNEIE LL_SPI_IsEnabledIT_RXNE
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_RXNE(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->CR2, SPI_CR2_RXNEIE) == (SPI_CR2_RXNEIE)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Check if Tx buffer empty interrupt
+ * @rmtoll CR2 TXEIE LL_SPI_IsEnabledIT_TXE
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_TXE(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->CR2, SPI_CR2_TXEIE) == (SPI_CR2_TXEIE)) ? 1UL : 0UL);
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EF_DMA_Management DMA Management
+ * @{
+ */
+
+/**
+ * @brief Enable DMA Rx
+ * @rmtoll CR2 RXDMAEN LL_SPI_EnableDMAReq_RX
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_EnableDMAReq_RX(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->CR2, SPI_CR2_RXDMAEN);
+}
+
+/**
+ * @brief Disable DMA Rx
+ * @rmtoll CR2 RXDMAEN LL_SPI_DisableDMAReq_RX
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_DisableDMAReq_RX(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->CR2, SPI_CR2_RXDMAEN);
+}
+
+/**
+ * @brief Check if DMA Rx is enabled
+ * @rmtoll CR2 RXDMAEN LL_SPI_IsEnabledDMAReq_RX
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->CR2, SPI_CR2_RXDMAEN) == (SPI_CR2_RXDMAEN)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Enable DMA Tx
+ * @rmtoll CR2 TXDMAEN LL_SPI_EnableDMAReq_TX
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_EnableDMAReq_TX(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->CR2, SPI_CR2_TXDMAEN);
+}
+
+/**
+ * @brief Disable DMA Tx
+ * @rmtoll CR2 TXDMAEN LL_SPI_DisableDMAReq_TX
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_DisableDMAReq_TX(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->CR2, SPI_CR2_TXDMAEN);
+}
+
+/**
+ * @brief Check if DMA Tx is enabled
+ * @rmtoll CR2 TXDMAEN LL_SPI_IsEnabledDMAReq_TX
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->CR2, SPI_CR2_TXDMAEN) == (SPI_CR2_TXDMAEN)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Get the data register address used for DMA transfer
+ * @rmtoll DR DR LL_SPI_DMA_GetRegAddr
+ * @param SPIx SPI Instance
+ * @retval Address of data register
+ */
+__STATIC_INLINE uint32_t LL_SPI_DMA_GetRegAddr(SPI_TypeDef *SPIx)
+{
+ return (uint32_t) &(SPIx->DR);
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EF_DATA_Management DATA Management
+ * @{
+ */
+
+/**
+ * @brief Read 8-Bits in the data register
+ * @rmtoll DR DR LL_SPI_ReceiveData8
+ * @param SPIx SPI Instance
+ * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFF
+ */
+__STATIC_INLINE uint8_t LL_SPI_ReceiveData8(SPI_TypeDef *SPIx)
+{
+ return (*((__IO uint8_t *)&SPIx->DR));
+}
+
+/**
+ * @brief Read 16-Bits in the data register
+ * @rmtoll DR DR LL_SPI_ReceiveData16
+ * @param SPIx SPI Instance
+ * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFFFF
+ */
+__STATIC_INLINE uint16_t LL_SPI_ReceiveData16(SPI_TypeDef *SPIx)
+{
+ return (uint16_t)(READ_REG(SPIx->DR));
+}
+
+/**
+ * @brief Write 8-Bits in the data register
+ * @rmtoll DR DR LL_SPI_TransmitData8
+ * @param SPIx SPI Instance
+ * @param TxData Value between Min_Data=0x00 and Max_Data=0xFF
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_TransmitData8(SPI_TypeDef *SPIx, uint8_t TxData)
+{
+#if defined (__GNUC__)
+ __IO uint8_t *spidr = ((__IO uint8_t *)&SPIx->DR);
+ *spidr = TxData;
+#else
+ *((__IO uint8_t *)&SPIx->DR) = TxData;
+#endif /* __GNUC__ */
+}
+
+/**
+ * @brief Write 16-Bits in the data register
+ * @rmtoll DR DR LL_SPI_TransmitData16
+ * @param SPIx SPI Instance
+ * @param TxData Value between Min_Data=0x00 and Max_Data=0xFFFF
+ * @retval None
+ */
+__STATIC_INLINE void LL_SPI_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData)
+{
+#if defined (__GNUC__)
+ __IO uint16_t *spidr = ((__IO uint16_t *)&SPIx->DR);
+ *spidr = TxData;
+#else
+ SPIx->DR = TxData;
+#endif /* __GNUC__ */
+}
+
+/**
+ * @}
+ */
+#if defined(USE_FULL_LL_DRIVER)
+/** @defgroup SPI_LL_EF_Init Initialization and de-initialization functions
+ * @{
+ */
+
+ErrorStatus LL_SPI_DeInit(SPI_TypeDef *SPIx);
+ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct);
+void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct);
+
+/**
+ * @}
+ */
+#endif /* USE_FULL_LL_DRIVER */
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+#if defined(SPI_I2S_SUPPORT)
+/** @defgroup I2S_LL I2S
+ * @{
+ */
+
+/* Private variables ---------------------------------------------------------*/
+/* Private constants ---------------------------------------------------------*/
+/* Private macros ------------------------------------------------------------*/
+
+/* Exported types ------------------------------------------------------------*/
+#if defined(USE_FULL_LL_DRIVER)
+/** @defgroup I2S_LL_ES_INIT I2S Exported Init structure
+ * @{
+ */
+
+/**
+ * @brief I2S Init structure definition
+ */
+
+typedef struct
+{
+ uint32_t Mode; /*!< Specifies the I2S operating mode.
+ This parameter can be a value of @ref I2S_LL_EC_MODE
+
+ This feature can be modified afterwards using unitary function @ref LL_I2S_SetTransferMode().*/
+
+ uint32_t Standard; /*!< Specifies the standard used for the I2S communication.
+ This parameter can be a value of @ref I2S_LL_EC_STANDARD
+
+ This feature can be modified afterwards using unitary function @ref LL_I2S_SetStandard().*/
+
+
+ uint32_t DataFormat; /*!< Specifies the data format for the I2S communication.
+ This parameter can be a value of @ref I2S_LL_EC_DATA_FORMAT
+
+ This feature can be modified afterwards using unitary function @ref LL_I2S_SetDataFormat().*/
+
+
+ uint32_t MCLKOutput; /*!< Specifies whether the I2S MCLK output is enabled or not.
+ This parameter can be a value of @ref I2S_LL_EC_MCLK_OUTPUT
+
+ This feature can be modified afterwards using unitary functions @ref LL_I2S_EnableMasterClock() or @ref LL_I2S_DisableMasterClock.*/
+
+
+ uint32_t AudioFreq; /*!< Specifies the frequency selected for the I2S communication.
+ This parameter can be a value of @ref I2S_LL_EC_AUDIO_FREQ
+
+ Audio Frequency can be modified afterwards using Reference manual formulas to calculate Prescaler Linear, Parity
+ and unitary functions @ref LL_I2S_SetPrescalerLinear() and @ref LL_I2S_SetPrescalerParity() to set it.*/
+
+
+ uint32_t ClockPolarity; /*!< Specifies the idle state of the I2S clock.
+ This parameter can be a value of @ref I2S_LL_EC_POLARITY
+
+ This feature can be modified afterwards using unitary function @ref LL_I2S_SetClockPolarity().*/
+
+} LL_I2S_InitTypeDef;
+
+/**
+ * @}
+ */
+#endif /*USE_FULL_LL_DRIVER*/
+
+/* Exported constants --------------------------------------------------------*/
+/** @defgroup I2S_LL_Exported_Constants I2S Exported Constants
+ * @{
+ */
+
+/** @defgroup I2S_LL_EC_GET_FLAG Get Flags Defines
+ * @brief Flags defines which can be used with LL_I2S_ReadReg function
+ * @{
+ */
+#define LL_I2S_SR_RXNE LL_SPI_SR_RXNE /*!< Rx buffer not empty flag */
+#define LL_I2S_SR_TXE LL_SPI_SR_TXE /*!< Tx buffer empty flag */
+#define LL_I2S_SR_BSY LL_SPI_SR_BSY /*!< Busy flag */
+#define LL_I2S_SR_UDR SPI_SR_UDR /*!< Underrun flag */
+#define LL_I2S_SR_OVR LL_SPI_SR_OVR /*!< Overrun flag */
+#define LL_I2S_SR_FRE LL_SPI_SR_FRE /*!< TI mode frame format error flag */
+/**
+ * @}
+ */
+
+/** @defgroup SPI_LL_EC_IT IT Defines
+ * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions
+ * @{
+ */
+#define LL_I2S_CR2_RXNEIE LL_SPI_CR2_RXNEIE /*!< Rx buffer not empty interrupt enable */
+#define LL_I2S_CR2_TXEIE LL_SPI_CR2_TXEIE /*!< Tx buffer empty interrupt enable */
+#define LL_I2S_CR2_ERRIE LL_SPI_CR2_ERRIE /*!< Error interrupt enable */
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EC_DATA_FORMAT Data format
+ * @{
+ */
+#define LL_I2S_DATAFORMAT_16B 0x00000000U /*!< Data length 16 bits, Channel length 16bit */
+#define LL_I2S_DATAFORMAT_16B_EXTENDED (SPI_I2SCFGR_CHLEN) /*!< Data length 16 bits, Channel length 32bit */
+#define LL_I2S_DATAFORMAT_24B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0) /*!< Data length 24 bits, Channel length 32bit */
+#define LL_I2S_DATAFORMAT_32B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1) /*!< Data length 16 bits, Channel length 32bit */
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EC_POLARITY Clock Polarity
+ * @{
+ */
+#define LL_I2S_POLARITY_LOW 0x00000000U /*!< Clock steady state is low level */
+#define LL_I2S_POLARITY_HIGH (SPI_I2SCFGR_CKPOL) /*!< Clock steady state is high level */
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EC_STANDARD I2s Standard
+ * @{
+ */
+#define LL_I2S_STANDARD_PHILIPS 0x00000000U /*!< I2S standard philips */
+#define LL_I2S_STANDARD_MSB (SPI_I2SCFGR_I2SSTD_0) /*!< MSB justified standard (left justified) */
+#define LL_I2S_STANDARD_LSB (SPI_I2SCFGR_I2SSTD_1) /*!< LSB justified standard (right justified) */
+#define LL_I2S_STANDARD_PCM_SHORT (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1) /*!< PCM standard, short frame synchronization */
+#define LL_I2S_STANDARD_PCM_LONG (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1 | SPI_I2SCFGR_PCMSYNC) /*!< PCM standard, long frame synchronization */
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EC_MODE Operation Mode
+ * @{
+ */
+#define LL_I2S_MODE_SLAVE_TX 0x00000000U /*!< Slave Tx configuration */
+#define LL_I2S_MODE_SLAVE_RX (SPI_I2SCFGR_I2SCFG_0) /*!< Slave Rx configuration */
+#define LL_I2S_MODE_MASTER_TX (SPI_I2SCFGR_I2SCFG_1) /*!< Master Tx configuration */
+#define LL_I2S_MODE_MASTER_RX (SPI_I2SCFGR_I2SCFG_0 | SPI_I2SCFGR_I2SCFG_1) /*!< Master Rx configuration */
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EC_PRESCALER_FACTOR Prescaler Factor
+ * @{
+ */
+#define LL_I2S_PRESCALER_PARITY_EVEN 0x00000000U /*!< Odd factor: Real divider value is = I2SDIV * 2 */
+#define LL_I2S_PRESCALER_PARITY_ODD (SPI_I2SPR_ODD >> 8U) /*!< Odd factor: Real divider value is = (I2SDIV * 2)+1 */
+/**
+ * @}
+ */
+
+#if defined(USE_FULL_LL_DRIVER)
+
+/** @defgroup I2S_LL_EC_MCLK_OUTPUT MCLK Output
+ * @{
+ */
+#define LL_I2S_MCLK_OUTPUT_DISABLE 0x00000000U /*!< Master clock output is disabled */
+#define LL_I2S_MCLK_OUTPUT_ENABLE (SPI_I2SPR_MCKOE) /*!< Master clock output is enabled */
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EC_AUDIO_FREQ Audio Frequency
+ * @{
+ */
+
+#define LL_I2S_AUDIOFREQ_192K 192000U /*!< Audio Frequency configuration 192000 Hz */
+#define LL_I2S_AUDIOFREQ_96K 96000U /*!< Audio Frequency configuration 96000 Hz */
+#define LL_I2S_AUDIOFREQ_48K 48000U /*!< Audio Frequency configuration 48000 Hz */
+#define LL_I2S_AUDIOFREQ_44K 44100U /*!< Audio Frequency configuration 44100 Hz */
+#define LL_I2S_AUDIOFREQ_32K 32000U /*!< Audio Frequency configuration 32000 Hz */
+#define LL_I2S_AUDIOFREQ_22K 22050U /*!< Audio Frequency configuration 22050 Hz */
+#define LL_I2S_AUDIOFREQ_16K 16000U /*!< Audio Frequency configuration 16000 Hz */
+#define LL_I2S_AUDIOFREQ_11K 11025U /*!< Audio Frequency configuration 11025 Hz */
+#define LL_I2S_AUDIOFREQ_8K 8000U /*!< Audio Frequency configuration 8000 Hz */
+#define LL_I2S_AUDIOFREQ_DEFAULT 2U /*!< Audio Freq not specified. Register I2SDIV = 2 */
+/**
+ * @}
+ */
+#endif /* USE_FULL_LL_DRIVER */
+
+/**
+ * @}
+ */
+
+/* Exported macro ------------------------------------------------------------*/
+/** @defgroup I2S_LL_Exported_Macros I2S Exported Macros
+ * @{
+ */
+
+/** @defgroup I2S_LL_EM_WRITE_READ Common Write and read registers Macros
+ * @{
+ */
+
+/**
+ * @brief Write a value in I2S register
+ * @param __INSTANCE__ I2S Instance
+ * @param __REG__ Register to be written
+ * @param __VALUE__ Value to be written in the register
+ * @retval None
+ */
+#define LL_I2S_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
+
+/**
+ * @brief Read a value in I2S register
+ * @param __INSTANCE__ I2S Instance
+ * @param __REG__ Register to be read
+ * @retval Register value
+ */
+#define LL_I2S_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+
+/* Exported functions --------------------------------------------------------*/
+
+/** @defgroup I2S_LL_Exported_Functions I2S Exported Functions
+ * @{
+ */
+
+/** @defgroup I2S_LL_EF_Configuration Configuration
+ * @{
+ */
+
+/**
+ * @brief Select I2S mode and Enable I2S peripheral
+ * @rmtoll I2SCFGR I2SMOD LL_I2S_Enable\n
+ * I2SCFGR I2SE LL_I2S_Enable
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_Enable(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE);
+}
+
+/**
+ * @brief Disable I2S peripheral
+ * @rmtoll I2SCFGR I2SE LL_I2S_Disable
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_Disable(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE);
+}
+
+/**
+ * @brief Check if I2S peripheral is enabled
+ * @rmtoll I2SCFGR I2SE LL_I2S_IsEnabled
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsEnabled(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SE) == (SPI_I2SCFGR_I2SE)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Set I2S data frame length
+ * @rmtoll I2SCFGR DATLEN LL_I2S_SetDataFormat\n
+ * I2SCFGR CHLEN LL_I2S_SetDataFormat
+ * @param SPIx SPI Instance
+ * @param DataFormat This parameter can be one of the following values:
+ * @arg @ref LL_I2S_DATAFORMAT_16B
+ * @arg @ref LL_I2S_DATAFORMAT_16B_EXTENDED
+ * @arg @ref LL_I2S_DATAFORMAT_24B
+ * @arg @ref LL_I2S_DATAFORMAT_32B
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_SetDataFormat(SPI_TypeDef *SPIx, uint32_t DataFormat)
+{
+ MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN, DataFormat);
+}
+
+/**
+ * @brief Get I2S data frame length
+ * @rmtoll I2SCFGR DATLEN LL_I2S_GetDataFormat\n
+ * I2SCFGR CHLEN LL_I2S_GetDataFormat
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_I2S_DATAFORMAT_16B
+ * @arg @ref LL_I2S_DATAFORMAT_16B_EXTENDED
+ * @arg @ref LL_I2S_DATAFORMAT_24B
+ * @arg @ref LL_I2S_DATAFORMAT_32B
+ */
+__STATIC_INLINE uint32_t LL_I2S_GetDataFormat(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN));
+}
+
+/**
+ * @brief Set I2S clock polarity
+ * @rmtoll I2SCFGR CKPOL LL_I2S_SetClockPolarity
+ * @param SPIx SPI Instance
+ * @param ClockPolarity This parameter can be one of the following values:
+ * @arg @ref LL_I2S_POLARITY_LOW
+ * @arg @ref LL_I2S_POLARITY_HIGH
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity)
+{
+ SET_BIT(SPIx->I2SCFGR, ClockPolarity);
+}
+
+/**
+ * @brief Get I2S clock polarity
+ * @rmtoll I2SCFGR CKPOL LL_I2S_GetClockPolarity
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_I2S_POLARITY_LOW
+ * @arg @ref LL_I2S_POLARITY_HIGH
+ */
+__STATIC_INLINE uint32_t LL_I2S_GetClockPolarity(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_CKPOL));
+}
+
+/**
+ * @brief Set I2S standard protocol
+ * @rmtoll I2SCFGR I2SSTD LL_I2S_SetStandard\n
+ * I2SCFGR PCMSYNC LL_I2S_SetStandard
+ * @param SPIx SPI Instance
+ * @param Standard This parameter can be one of the following values:
+ * @arg @ref LL_I2S_STANDARD_PHILIPS
+ * @arg @ref LL_I2S_STANDARD_MSB
+ * @arg @ref LL_I2S_STANDARD_LSB
+ * @arg @ref LL_I2S_STANDARD_PCM_SHORT
+ * @arg @ref LL_I2S_STANDARD_PCM_LONG
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard)
+{
+ MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC, Standard);
+}
+
+/**
+ * @brief Get I2S standard protocol
+ * @rmtoll I2SCFGR I2SSTD LL_I2S_GetStandard\n
+ * I2SCFGR PCMSYNC LL_I2S_GetStandard
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_I2S_STANDARD_PHILIPS
+ * @arg @ref LL_I2S_STANDARD_MSB
+ * @arg @ref LL_I2S_STANDARD_LSB
+ * @arg @ref LL_I2S_STANDARD_PCM_SHORT
+ * @arg @ref LL_I2S_STANDARD_PCM_LONG
+ */
+__STATIC_INLINE uint32_t LL_I2S_GetStandard(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC));
+}
+
+/**
+ * @brief Set I2S transfer mode
+ * @rmtoll I2SCFGR I2SCFG LL_I2S_SetTransferMode
+ * @param SPIx SPI Instance
+ * @param Mode This parameter can be one of the following values:
+ * @arg @ref LL_I2S_MODE_SLAVE_TX
+ * @arg @ref LL_I2S_MODE_SLAVE_RX
+ * @arg @ref LL_I2S_MODE_MASTER_TX
+ * @arg @ref LL_I2S_MODE_MASTER_RX
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_SetTransferMode(SPI_TypeDef *SPIx, uint32_t Mode)
+{
+ MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG, Mode);
+}
+
+/**
+ * @brief Get I2S transfer mode
+ * @rmtoll I2SCFGR I2SCFG LL_I2S_GetTransferMode
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_I2S_MODE_SLAVE_TX
+ * @arg @ref LL_I2S_MODE_SLAVE_RX
+ * @arg @ref LL_I2S_MODE_MASTER_TX
+ * @arg @ref LL_I2S_MODE_MASTER_RX
+ */
+__STATIC_INLINE uint32_t LL_I2S_GetTransferMode(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG));
+}
+
+/**
+ * @brief Set I2S linear prescaler
+ * @rmtoll I2SPR I2SDIV LL_I2S_SetPrescalerLinear
+ * @param SPIx SPI Instance
+ * @param PrescalerLinear Value between Min_Data=0x02 and Max_Data=0xFF
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_SetPrescalerLinear(SPI_TypeDef *SPIx, uint8_t PrescalerLinear)
+{
+ MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_I2SDIV, PrescalerLinear);
+}
+
+/**
+ * @brief Get I2S linear prescaler
+ * @rmtoll I2SPR I2SDIV LL_I2S_GetPrescalerLinear
+ * @param SPIx SPI Instance
+ * @retval PrescalerLinear Value between Min_Data=0x02 and Max_Data=0xFF
+ */
+__STATIC_INLINE uint32_t LL_I2S_GetPrescalerLinear(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_I2SDIV));
+}
+
+/**
+ * @brief Set I2S parity prescaler
+ * @rmtoll I2SPR ODD LL_I2S_SetPrescalerParity
+ * @param SPIx SPI Instance
+ * @param PrescalerParity This parameter can be one of the following values:
+ * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN
+ * @arg @ref LL_I2S_PRESCALER_PARITY_ODD
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_SetPrescalerParity(SPI_TypeDef *SPIx, uint32_t PrescalerParity)
+{
+ MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_ODD, PrescalerParity << 8U);
+}
+
+/**
+ * @brief Get I2S parity prescaler
+ * @rmtoll I2SPR ODD LL_I2S_GetPrescalerParity
+ * @param SPIx SPI Instance
+ * @retval Returned value can be one of the following values:
+ * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN
+ * @arg @ref LL_I2S_PRESCALER_PARITY_ODD
+ */
+__STATIC_INLINE uint32_t LL_I2S_GetPrescalerParity(SPI_TypeDef *SPIx)
+{
+ return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_ODD) >> 8U);
+}
+
+/**
+ * @brief Enable the master clock output (Pin MCK)
+ * @rmtoll I2SPR MCKOE LL_I2S_EnableMasterClock
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_EnableMasterClock(SPI_TypeDef *SPIx)
+{
+ SET_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE);
+}
+
+/**
+ * @brief Disable the master clock output (Pin MCK)
+ * @rmtoll I2SPR MCKOE LL_I2S_DisableMasterClock
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_DisableMasterClock(SPI_TypeDef *SPIx)
+{
+ CLEAR_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE);
+}
+
+/**
+ * @brief Check if the master clock output (Pin MCK) is enabled
+ * @rmtoll I2SPR MCKOE LL_I2S_IsEnabledMasterClock
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsEnabledMasterClock(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE) == (SPI_I2SPR_MCKOE)) ? 1UL : 0UL);
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EF_FLAG FLAG Management
+ * @{
+ */
+
+/**
+ * @brief Check if Rx buffer is not empty
+ * @rmtoll SR RXNE LL_I2S_IsActiveFlag_RXNE
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_RXNE(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_IsActiveFlag_RXNE(SPIx);
+}
+
+/**
+ * @brief Check if Tx buffer is empty
+ * @rmtoll SR TXE LL_I2S_IsActiveFlag_TXE
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_TXE(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_IsActiveFlag_TXE(SPIx);
+}
+
+/**
+ * @brief Get busy flag
+ * @rmtoll SR BSY LL_I2S_IsActiveFlag_BSY
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_BSY(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_IsActiveFlag_BSY(SPIx);
+}
+
+/**
+ * @brief Get overrun error flag
+ * @rmtoll SR OVR LL_I2S_IsActiveFlag_OVR
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_OVR(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_IsActiveFlag_OVR(SPIx);
+}
+
+/**
+ * @brief Get underrun error flag
+ * @rmtoll SR UDR LL_I2S_IsActiveFlag_UDR
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_UDR(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->SR, SPI_SR_UDR) == (SPI_SR_UDR)) ? 1UL : 0UL);
+}
+
+
+/**
+ * @brief Get channel side flag.
+ * @note 0: Channel Left has to be transmitted or has been received\n
+ * 1: Channel Right has to be transmitted or has been received\n
+ * It has no significance in PCM mode.
+ * @rmtoll SR CHSIDE LL_I2S_IsActiveFlag_CHSIDE
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_CHSIDE(SPI_TypeDef *SPIx)
+{
+ return ((READ_BIT(SPIx->SR, SPI_SR_CHSIDE) == (SPI_SR_CHSIDE)) ? 1UL : 0UL);
+}
+
+/**
+ * @brief Clear overrun error flag
+ * @rmtoll SR OVR LL_I2S_ClearFlag_OVR
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_ClearFlag_OVR(SPI_TypeDef *SPIx)
+{
+ LL_SPI_ClearFlag_OVR(SPIx);
+}
+
+/**
+ * @brief Clear underrun error flag
+ * @rmtoll SR UDR LL_I2S_ClearFlag_UDR
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_ClearFlag_UDR(SPI_TypeDef *SPIx)
+{
+ __IO uint32_t tmpreg;
+ tmpreg = SPIx->SR;
+ (void)tmpreg;
+}
+
+/**
+ * @brief Clear frame format error flag
+ * @rmtoll SR FRE LL_I2S_ClearFlag_FRE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_ClearFlag_FRE(SPI_TypeDef *SPIx)
+{
+ LL_SPI_ClearFlag_FRE(SPIx);
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EF_IT Interrupt Management
+ * @{
+ */
+
+/**
+ * @brief Enable error IT
+ * @note This bit controls the generation of an interrupt when an error condition occurs (OVR, UDR and FRE in I2S mode).
+ * @rmtoll CR2 ERRIE LL_I2S_EnableIT_ERR
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_EnableIT_ERR(SPI_TypeDef *SPIx)
+{
+ LL_SPI_EnableIT_ERR(SPIx);
+}
+
+/**
+ * @brief Enable Rx buffer not empty IT
+ * @rmtoll CR2 RXNEIE LL_I2S_EnableIT_RXNE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_EnableIT_RXNE(SPI_TypeDef *SPIx)
+{
+ LL_SPI_EnableIT_RXNE(SPIx);
+}
+
+/**
+ * @brief Enable Tx buffer empty IT
+ * @rmtoll CR2 TXEIE LL_I2S_EnableIT_TXE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_EnableIT_TXE(SPI_TypeDef *SPIx)
+{
+ LL_SPI_EnableIT_TXE(SPIx);
+}
+
+/**
+ * @brief Disable error IT
+ * @note This bit controls the generation of an interrupt when an error condition occurs (OVR, UDR and FRE in I2S mode).
+ * @rmtoll CR2 ERRIE LL_I2S_DisableIT_ERR
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_DisableIT_ERR(SPI_TypeDef *SPIx)
+{
+ LL_SPI_DisableIT_ERR(SPIx);
+}
+
+/**
+ * @brief Disable Rx buffer not empty IT
+ * @rmtoll CR2 RXNEIE LL_I2S_DisableIT_RXNE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_DisableIT_RXNE(SPI_TypeDef *SPIx)
+{
+ LL_SPI_DisableIT_RXNE(SPIx);
+}
+
+/**
+ * @brief Disable Tx buffer empty IT
+ * @rmtoll CR2 TXEIE LL_I2S_DisableIT_TXE
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_DisableIT_TXE(SPI_TypeDef *SPIx)
+{
+ LL_SPI_DisableIT_TXE(SPIx);
+}
+
+/**
+ * @brief Check if ERR IT is enabled
+ * @rmtoll CR2 ERRIE LL_I2S_IsEnabledIT_ERR
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_ERR(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_IsEnabledIT_ERR(SPIx);
+}
+
+/**
+ * @brief Check if RXNE IT is enabled
+ * @rmtoll CR2 RXNEIE LL_I2S_IsEnabledIT_RXNE
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_RXNE(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_IsEnabledIT_RXNE(SPIx);
+}
+
+/**
+ * @brief Check if TXE IT is enabled
+ * @rmtoll CR2 TXEIE LL_I2S_IsEnabledIT_TXE
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_TXE(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_IsEnabledIT_TXE(SPIx);
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EF_DMA DMA Management
+ * @{
+ */
+
+/**
+ * @brief Enable DMA Rx
+ * @rmtoll CR2 RXDMAEN LL_I2S_EnableDMAReq_RX
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_EnableDMAReq_RX(SPI_TypeDef *SPIx)
+{
+ LL_SPI_EnableDMAReq_RX(SPIx);
+}
+
+/**
+ * @brief Disable DMA Rx
+ * @rmtoll CR2 RXDMAEN LL_I2S_DisableDMAReq_RX
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_DisableDMAReq_RX(SPI_TypeDef *SPIx)
+{
+ LL_SPI_DisableDMAReq_RX(SPIx);
+}
+
+/**
+ * @brief Check if DMA Rx is enabled
+ * @rmtoll CR2 RXDMAEN LL_I2S_IsEnabledDMAReq_RX
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_IsEnabledDMAReq_RX(SPIx);
+}
+
+/**
+ * @brief Enable DMA Tx
+ * @rmtoll CR2 TXDMAEN LL_I2S_EnableDMAReq_TX
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_EnableDMAReq_TX(SPI_TypeDef *SPIx)
+{
+ LL_SPI_EnableDMAReq_TX(SPIx);
+}
+
+/**
+ * @brief Disable DMA Tx
+ * @rmtoll CR2 TXDMAEN LL_I2S_DisableDMAReq_TX
+ * @param SPIx SPI Instance
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_DisableDMAReq_TX(SPI_TypeDef *SPIx)
+{
+ LL_SPI_DisableDMAReq_TX(SPIx);
+}
+
+/**
+ * @brief Check if DMA Tx is enabled
+ * @rmtoll CR2 TXDMAEN LL_I2S_IsEnabledDMAReq_TX
+ * @param SPIx SPI Instance
+ * @retval State of bit (1 or 0).
+ */
+__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_IsEnabledDMAReq_TX(SPIx);
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup I2S_LL_EF_DATA DATA Management
+ * @{
+ */
+
+/**
+ * @brief Read 16-Bits in data register
+ * @rmtoll DR DR LL_I2S_ReceiveData16
+ * @param SPIx SPI Instance
+ * @retval RxData Value between Min_Data=0x0000 and Max_Data=0xFFFF
+ */
+__STATIC_INLINE uint16_t LL_I2S_ReceiveData16(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_ReceiveData16(SPIx);
+}
+
+/**
+ * @brief Write 16-Bits in data register
+ * @rmtoll DR DR LL_I2S_TransmitData16
+ * @param SPIx SPI Instance
+ * @param TxData Value between Min_Data=0x0000 and Max_Data=0xFFFF
+ * @retval None
+ */
+__STATIC_INLINE void LL_I2S_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData)
+{
+ LL_SPI_TransmitData16(SPIx, TxData);
+}
+
+/**
+ * @}
+ */
+
+#if defined(USE_FULL_LL_DRIVER)
+/** @defgroup I2S_LL_EF_Init Initialization and de-initialization functions
+ * @{
+ */
+
+ErrorStatus LL_I2S_DeInit(SPI_TypeDef *SPIx);
+ErrorStatus LL_I2S_Init(SPI_TypeDef *SPIx, LL_I2S_InitTypeDef *I2S_InitStruct);
+void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct);
+void LL_I2S_ConfigPrescaler(SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity);
+
+/**
+ * @}
+ */
+#endif /* USE_FULL_LL_DRIVER */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+#endif /* SPI_I2S_SUPPORT */
+
+#endif /* defined (SPI1) || defined (SPI2) || defined (SPI3) */
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* STM32F1xx_LL_SPI_H */
+
diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c
new file mode 100644
index 0000000..5f557d3
--- /dev/null
+++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c
@@ -0,0 +1,528 @@
+/**
+ ******************************************************************************
+ * @file stm32f1xx_ll_spi.c
+ * @author MCD Application Team
+ * @brief SPI LL module driver.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2016 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+#if defined(USE_FULL_LL_DRIVER)
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_ll_spi.h"
+#include "stm32f1xx_ll_bus.h"
+#include "stm32f1xx_ll_rcc.h"
+
+#ifdef USE_FULL_ASSERT
+#include "stm32_assert.h"
+#else
+#define assert_param(expr) ((void)0U)
+#endif /* USE_FULL_ASSERT */
+
+/** @addtogroup STM32F1xx_LL_Driver
+ * @{
+ */
+
+#if defined (SPI1) || defined (SPI2) || defined (SPI3)
+
+/** @addtogroup SPI_LL
+ * @{
+ */
+
+/* Private types -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+
+/* Private constants ---------------------------------------------------------*/
+/** @defgroup SPI_LL_Private_Constants SPI Private Constants
+ * @{
+ */
+/* SPI registers Masks */
+#define SPI_CR1_CLEAR_MASK (SPI_CR1_CPHA | SPI_CR1_CPOL | SPI_CR1_MSTR | \
+ SPI_CR1_BR | SPI_CR1_LSBFIRST | SPI_CR1_SSI | \
+ SPI_CR1_SSM | SPI_CR1_RXONLY | SPI_CR1_DFF | \
+ SPI_CR1_CRCNEXT | SPI_CR1_CRCEN | SPI_CR1_BIDIOE | \
+ SPI_CR1_BIDIMODE)
+/**
+ * @}
+ */
+
+/* Private macros ------------------------------------------------------------*/
+/** @defgroup SPI_LL_Private_Macros SPI Private Macros
+ * @{
+ */
+#define IS_LL_SPI_TRANSFER_DIRECTION(__VALUE__) (((__VALUE__) == LL_SPI_FULL_DUPLEX) \
+ || ((__VALUE__) == LL_SPI_SIMPLEX_RX) \
+ || ((__VALUE__) == LL_SPI_HALF_DUPLEX_RX) \
+ || ((__VALUE__) == LL_SPI_HALF_DUPLEX_TX))
+
+#define IS_LL_SPI_MODE(__VALUE__) (((__VALUE__) == LL_SPI_MODE_MASTER) \
+ || ((__VALUE__) == LL_SPI_MODE_SLAVE))
+
+#define IS_LL_SPI_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_SPI_DATAWIDTH_8BIT) \
+ || ((__VALUE__) == LL_SPI_DATAWIDTH_16BIT))
+
+#define IS_LL_SPI_POLARITY(__VALUE__) (((__VALUE__) == LL_SPI_POLARITY_LOW) \
+ || ((__VALUE__) == LL_SPI_POLARITY_HIGH))
+
+#define IS_LL_SPI_PHASE(__VALUE__) (((__VALUE__) == LL_SPI_PHASE_1EDGE) \
+ || ((__VALUE__) == LL_SPI_PHASE_2EDGE))
+
+#define IS_LL_SPI_NSS(__VALUE__) (((__VALUE__) == LL_SPI_NSS_SOFT) \
+ || ((__VALUE__) == LL_SPI_NSS_HARD_INPUT) \
+ || ((__VALUE__) == LL_SPI_NSS_HARD_OUTPUT))
+
+#define IS_LL_SPI_BAUDRATE(__VALUE__) (((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV2) \
+ || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV4) \
+ || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV8) \
+ || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV16) \
+ || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV32) \
+ || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV64) \
+ || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV128) \
+ || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV256))
+
+#define IS_LL_SPI_BITORDER(__VALUE__) (((__VALUE__) == LL_SPI_LSB_FIRST) \
+ || ((__VALUE__) == LL_SPI_MSB_FIRST))
+
+#define IS_LL_SPI_CRCCALCULATION(__VALUE__) (((__VALUE__) == LL_SPI_CRCCALCULATION_ENABLE) \
+ || ((__VALUE__) == LL_SPI_CRCCALCULATION_DISABLE))
+
+#define IS_LL_SPI_CRC_POLYNOMIAL(__VALUE__) ((__VALUE__) >= 0x1U)
+
+/**
+ * @}
+ */
+
+/* Private function prototypes -----------------------------------------------*/
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup SPI_LL_Exported_Functions
+ * @{
+ */
+
+/** @addtogroup SPI_LL_EF_Init
+ * @{
+ */
+
+/**
+ * @brief De-initialize the SPI registers to their default reset values.
+ * @param SPIx SPI Instance
+ * @retval An ErrorStatus enumeration value:
+ * - SUCCESS: SPI registers are de-initialized
+ * - ERROR: SPI registers are not de-initialized
+ */
+ErrorStatus LL_SPI_DeInit(SPI_TypeDef *SPIx)
+{
+ ErrorStatus status = ERROR;
+
+ /* Check the parameters */
+ assert_param(IS_SPI_ALL_INSTANCE(SPIx));
+
+#if defined(SPI1)
+ if (SPIx == SPI1)
+ {
+ /* Force reset of SPI clock */
+ LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI1);
+
+ /* Release reset of SPI clock */
+ LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI1);
+
+ status = SUCCESS;
+ }
+#endif /* SPI1 */
+#if defined(SPI2)
+ if (SPIx == SPI2)
+ {
+ /* Force reset of SPI clock */
+ LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_SPI2);
+
+ /* Release reset of SPI clock */
+ LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_SPI2);
+
+ status = SUCCESS;
+ }
+#endif /* SPI2 */
+#if defined(SPI3)
+ if (SPIx == SPI3)
+ {
+ /* Force reset of SPI clock */
+ LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_SPI3);
+
+ /* Release reset of SPI clock */
+ LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_SPI3);
+
+ status = SUCCESS;
+ }
+#endif /* SPI3 */
+
+ return status;
+}
+
+/**
+ * @brief Initialize the SPI registers according to the specified parameters in SPI_InitStruct.
+ * @note As some bits in SPI configuration registers can only be written when the SPI is disabled (SPI_CR1_SPE bit =0),
+ * SPI peripheral should be in disabled state prior calling this function. Otherwise, ERROR result will be returned.
+ * @param SPIx SPI Instance
+ * @param SPI_InitStruct pointer to a @ref LL_SPI_InitTypeDef structure
+ * @retval An ErrorStatus enumeration value. (Return always SUCCESS)
+ */
+ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct)
+{
+ ErrorStatus status = ERROR;
+
+ /* Check the SPI Instance SPIx*/
+ assert_param(IS_SPI_ALL_INSTANCE(SPIx));
+
+ /* Check the SPI parameters from SPI_InitStruct*/
+ assert_param(IS_LL_SPI_TRANSFER_DIRECTION(SPI_InitStruct->TransferDirection));
+ assert_param(IS_LL_SPI_MODE(SPI_InitStruct->Mode));
+ assert_param(IS_LL_SPI_DATAWIDTH(SPI_InitStruct->DataWidth));
+ assert_param(IS_LL_SPI_POLARITY(SPI_InitStruct->ClockPolarity));
+ assert_param(IS_LL_SPI_PHASE(SPI_InitStruct->ClockPhase));
+ assert_param(IS_LL_SPI_NSS(SPI_InitStruct->NSS));
+ assert_param(IS_LL_SPI_BAUDRATE(SPI_InitStruct->BaudRate));
+ assert_param(IS_LL_SPI_BITORDER(SPI_InitStruct->BitOrder));
+ assert_param(IS_LL_SPI_CRCCALCULATION(SPI_InitStruct->CRCCalculation));
+
+ if (LL_SPI_IsEnabled(SPIx) == 0x00000000U)
+ {
+ /*---------------------------- SPIx CR1 Configuration ------------------------
+ * Configure SPIx CR1 with parameters:
+ * - TransferDirection: SPI_CR1_BIDIMODE, SPI_CR1_BIDIOE and SPI_CR1_RXONLY bits
+ * - Master/Slave Mode: SPI_CR1_MSTR bit
+ * - DataWidth: SPI_CR1_DFF bit
+ * - ClockPolarity: SPI_CR1_CPOL bit
+ * - ClockPhase: SPI_CR1_CPHA bit
+ * - NSS management: SPI_CR1_SSM bit
+ * - BaudRate prescaler: SPI_CR1_BR[2:0] bits
+ * - BitOrder: SPI_CR1_LSBFIRST bit
+ * - CRCCalculation: SPI_CR1_CRCEN bit
+ */
+ MODIFY_REG(SPIx->CR1,
+ SPI_CR1_CLEAR_MASK,
+ SPI_InitStruct->TransferDirection | SPI_InitStruct->Mode | SPI_InitStruct->DataWidth |
+ SPI_InitStruct->ClockPolarity | SPI_InitStruct->ClockPhase |
+ SPI_InitStruct->NSS | SPI_InitStruct->BaudRate |
+ SPI_InitStruct->BitOrder | SPI_InitStruct->CRCCalculation);
+
+ /*---------------------------- SPIx CR2 Configuration ------------------------
+ * Configure SPIx CR2 with parameters:
+ * - NSS management: SSOE bit
+ */
+ MODIFY_REG(SPIx->CR2, SPI_CR2_SSOE, (SPI_InitStruct->NSS >> 16U));
+
+ /*---------------------------- SPIx CRCPR Configuration ----------------------
+ * Configure SPIx CRCPR with parameters:
+ * - CRCPoly: CRCPOLY[15:0] bits
+ */
+ if (SPI_InitStruct->CRCCalculation == LL_SPI_CRCCALCULATION_ENABLE)
+ {
+ assert_param(IS_LL_SPI_CRC_POLYNOMIAL(SPI_InitStruct->CRCPoly));
+ LL_SPI_SetCRCPolynomial(SPIx, SPI_InitStruct->CRCPoly);
+ }
+ status = SUCCESS;
+ }
+
+#if defined (SPI_I2S_SUPPORT)
+ /* Activate the SPI mode (Reset I2SMOD bit in I2SCFGR register) */
+ CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD);
+#endif /* SPI_I2S_SUPPORT */
+ return status;
+}
+
+/**
+ * @brief Set each @ref LL_SPI_InitTypeDef field to default value.
+ * @param SPI_InitStruct pointer to a @ref LL_SPI_InitTypeDef structure
+ * whose fields will be set to default values.
+ * @retval None
+ */
+void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct)
+{
+ /* Set SPI_InitStruct fields to default values */
+ SPI_InitStruct->TransferDirection = LL_SPI_FULL_DUPLEX;
+ SPI_InitStruct->Mode = LL_SPI_MODE_SLAVE;
+ SPI_InitStruct->DataWidth = LL_SPI_DATAWIDTH_8BIT;
+ SPI_InitStruct->ClockPolarity = LL_SPI_POLARITY_LOW;
+ SPI_InitStruct->ClockPhase = LL_SPI_PHASE_1EDGE;
+ SPI_InitStruct->NSS = LL_SPI_NSS_HARD_INPUT;
+ SPI_InitStruct->BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV2;
+ SPI_InitStruct->BitOrder = LL_SPI_MSB_FIRST;
+ SPI_InitStruct->CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE;
+ SPI_InitStruct->CRCPoly = 7U;
+}
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+#if defined(SPI_I2S_SUPPORT)
+/** @addtogroup I2S_LL
+ * @{
+ */
+
+/* Private types -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private constants ---------------------------------------------------------*/
+/** @defgroup I2S_LL_Private_Constants I2S Private Constants
+ * @{
+ */
+/* I2S registers Masks */
+#define I2S_I2SCFGR_CLEAR_MASK (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \
+ SPI_I2SCFGR_CKPOL | SPI_I2SCFGR_I2SSTD | \
+ SPI_I2SCFGR_I2SCFG | SPI_I2SCFGR_I2SMOD )
+
+#define I2S_I2SPR_CLEAR_MASK 0x0002U
+/**
+ * @}
+ */
+/* Private macros ------------------------------------------------------------*/
+/** @defgroup I2S_LL_Private_Macros I2S Private Macros
+ * @{
+ */
+
+#define IS_LL_I2S_DATAFORMAT(__VALUE__) (((__VALUE__) == LL_I2S_DATAFORMAT_16B) \
+ || ((__VALUE__) == LL_I2S_DATAFORMAT_16B_EXTENDED) \
+ || ((__VALUE__) == LL_I2S_DATAFORMAT_24B) \
+ || ((__VALUE__) == LL_I2S_DATAFORMAT_32B))
+
+#define IS_LL_I2S_CPOL(__VALUE__) (((__VALUE__) == LL_I2S_POLARITY_LOW) \
+ || ((__VALUE__) == LL_I2S_POLARITY_HIGH))
+
+#define IS_LL_I2S_STANDARD(__VALUE__) (((__VALUE__) == LL_I2S_STANDARD_PHILIPS) \
+ || ((__VALUE__) == LL_I2S_STANDARD_MSB) \
+ || ((__VALUE__) == LL_I2S_STANDARD_LSB) \
+ || ((__VALUE__) == LL_I2S_STANDARD_PCM_SHORT) \
+ || ((__VALUE__) == LL_I2S_STANDARD_PCM_LONG))
+
+#define IS_LL_I2S_MODE(__VALUE__) (((__VALUE__) == LL_I2S_MODE_SLAVE_TX) \
+ || ((__VALUE__) == LL_I2S_MODE_SLAVE_RX) \
+ || ((__VALUE__) == LL_I2S_MODE_MASTER_TX) \
+ || ((__VALUE__) == LL_I2S_MODE_MASTER_RX))
+
+#define IS_LL_I2S_MCLK_OUTPUT(__VALUE__) (((__VALUE__) == LL_I2S_MCLK_OUTPUT_ENABLE) \
+ || ((__VALUE__) == LL_I2S_MCLK_OUTPUT_DISABLE))
+
+#define IS_LL_I2S_AUDIO_FREQ(__VALUE__) ((((__VALUE__) >= LL_I2S_AUDIOFREQ_8K) \
+ && ((__VALUE__) <= LL_I2S_AUDIOFREQ_192K)) \
+ || ((__VALUE__) == LL_I2S_AUDIOFREQ_DEFAULT))
+
+#define IS_LL_I2S_PRESCALER_LINEAR(__VALUE__) ((__VALUE__) >= 0x2U)
+
+#define IS_LL_I2S_PRESCALER_PARITY(__VALUE__) (((__VALUE__) == LL_I2S_PRESCALER_PARITY_EVEN) \
+ || ((__VALUE__) == LL_I2S_PRESCALER_PARITY_ODD))
+/**
+ * @}
+ */
+
+/* Private function prototypes -----------------------------------------------*/
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup I2S_LL_Exported_Functions
+ * @{
+ */
+
+/** @addtogroup I2S_LL_EF_Init
+ * @{
+ */
+
+/**
+ * @brief De-initialize the SPI/I2S registers to their default reset values.
+ * @param SPIx SPI Instance
+ * @retval An ErrorStatus enumeration value:
+ * - SUCCESS: SPI registers are de-initialized
+ * - ERROR: SPI registers are not de-initialized
+ */
+ErrorStatus LL_I2S_DeInit(SPI_TypeDef *SPIx)
+{
+ return LL_SPI_DeInit(SPIx);
+}
+
+/**
+ * @brief Initializes the SPI/I2S registers according to the specified parameters in I2S_InitStruct.
+ * @note As some bits in SPI configuration registers can only be written when the SPI is disabled (SPI_CR1_SPE bit =0),
+ * SPI peripheral should be in disabled state prior calling this function. Otherwise, ERROR result will be returned.
+ * @param SPIx SPI Instance
+ * @param I2S_InitStruct pointer to a @ref LL_I2S_InitTypeDef structure
+ * @retval An ErrorStatus enumeration value:
+ * - SUCCESS: SPI registers are Initialized
+ * - ERROR: SPI registers are not Initialized
+ */
+ErrorStatus LL_I2S_Init(SPI_TypeDef *SPIx, LL_I2S_InitTypeDef *I2S_InitStruct)
+{
+ uint32_t i2sdiv = 2U;
+ uint32_t i2sodd = 0U;
+ uint32_t packetlength = 1U;
+ uint32_t tmp;
+ LL_RCC_ClocksTypeDef rcc_clocks;
+ uint32_t sourceclock;
+ ErrorStatus status = ERROR;
+
+ /* Check the I2S parameters */
+ assert_param(IS_I2S_ALL_INSTANCE(SPIx));
+ assert_param(IS_LL_I2S_MODE(I2S_InitStruct->Mode));
+ assert_param(IS_LL_I2S_STANDARD(I2S_InitStruct->Standard));
+ assert_param(IS_LL_I2S_DATAFORMAT(I2S_InitStruct->DataFormat));
+ assert_param(IS_LL_I2S_MCLK_OUTPUT(I2S_InitStruct->MCLKOutput));
+ assert_param(IS_LL_I2S_AUDIO_FREQ(I2S_InitStruct->AudioFreq));
+ assert_param(IS_LL_I2S_CPOL(I2S_InitStruct->ClockPolarity));
+
+ if (LL_I2S_IsEnabled(SPIx) == 0x00000000U)
+ {
+ /*---------------------------- SPIx I2SCFGR Configuration --------------------
+ * Configure SPIx I2SCFGR with parameters:
+ * - Mode: SPI_I2SCFGR_I2SCFG[1:0] bit
+ * - Standard: SPI_I2SCFGR_I2SSTD[1:0] and SPI_I2SCFGR_PCMSYNC bits
+ * - DataFormat: SPI_I2SCFGR_CHLEN and SPI_I2SCFGR_DATLEN bits
+ * - ClockPolarity: SPI_I2SCFGR_CKPOL bit
+ */
+
+ /* Write to SPIx I2SCFGR */
+ MODIFY_REG(SPIx->I2SCFGR,
+ I2S_I2SCFGR_CLEAR_MASK,
+ I2S_InitStruct->Mode | I2S_InitStruct->Standard |
+ I2S_InitStruct->DataFormat | I2S_InitStruct->ClockPolarity |
+ SPI_I2SCFGR_I2SMOD);
+
+ /*---------------------------- SPIx I2SPR Configuration ----------------------
+ * Configure SPIx I2SPR with parameters:
+ * - MCLKOutput: SPI_I2SPR_MCKOE bit
+ * - AudioFreq: SPI_I2SPR_I2SDIV[7:0] and SPI_I2SPR_ODD bits
+ */
+
+ /* If the requested audio frequency is not the default, compute the prescaler (i2sodd, i2sdiv)
+ * else, default values are used: i2sodd = 0U, i2sdiv = 2U.
+ */
+ if (I2S_InitStruct->AudioFreq != LL_I2S_AUDIOFREQ_DEFAULT)
+ {
+ /* Check the frame length (For the Prescaler computing)
+ * Default value: LL_I2S_DATAFORMAT_16B (packetlength = 1U).
+ */
+ if (I2S_InitStruct->DataFormat != LL_I2S_DATAFORMAT_16B)
+ {
+ /* Packet length is 32 bits */
+ packetlength = 2U;
+ }
+
+ /* I2S Clock source is System clock: Get System Clock frequency */
+ LL_RCC_GetSystemClocksFreq(&rcc_clocks);
+
+ /* Get the source clock value: based on System Clock value */
+ sourceclock = rcc_clocks.SYSCLK_Frequency;
+
+ /* Compute the Real divider depending on the MCLK output state with a floating point */
+ if (I2S_InitStruct->MCLKOutput == LL_I2S_MCLK_OUTPUT_ENABLE)
+ {
+ /* MCLK output is enabled */
+ tmp = (((((sourceclock / 256U) * 10U) / I2S_InitStruct->AudioFreq)) + 5U);
+ }
+ else
+ {
+ /* MCLK output is disabled */
+ tmp = (((((sourceclock / (32U * packetlength)) * 10U) / I2S_InitStruct->AudioFreq)) + 5U);
+ }
+
+ /* Remove the floating point */
+ tmp = tmp / 10U;
+
+ /* Check the parity of the divider */
+ i2sodd = (tmp & (uint16_t)0x0001U);
+
+ /* Compute the i2sdiv prescaler */
+ i2sdiv = ((tmp - i2sodd) / 2U);
+
+ /* Get the Mask for the Odd bit (SPI_I2SPR[8]) register */
+ i2sodd = (i2sodd << 8U);
+ }
+
+ /* Test if the divider is 1 or 0 or greater than 0xFF */
+ if ((i2sdiv < 2U) || (i2sdiv > 0xFFU))
+ {
+ /* Set the default values */
+ i2sdiv = 2U;
+ i2sodd = 0U;
+ }
+
+ /* Write to SPIx I2SPR register the computed value */
+ WRITE_REG(SPIx->I2SPR, i2sdiv | i2sodd | I2S_InitStruct->MCLKOutput);
+
+ status = SUCCESS;
+ }
+ return status;
+}
+
+/**
+ * @brief Set each @ref LL_I2S_InitTypeDef field to default value.
+ * @param I2S_InitStruct pointer to a @ref LL_I2S_InitTypeDef structure
+ * whose fields will be set to default values.
+ * @retval None
+ */
+void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct)
+{
+ /*--------------- Reset I2S init structure parameters values -----------------*/
+ I2S_InitStruct->Mode = LL_I2S_MODE_SLAVE_TX;
+ I2S_InitStruct->Standard = LL_I2S_STANDARD_PHILIPS;
+ I2S_InitStruct->DataFormat = LL_I2S_DATAFORMAT_16B;
+ I2S_InitStruct->MCLKOutput = LL_I2S_MCLK_OUTPUT_DISABLE;
+ I2S_InitStruct->AudioFreq = LL_I2S_AUDIOFREQ_DEFAULT;
+ I2S_InitStruct->ClockPolarity = LL_I2S_POLARITY_LOW;
+}
+
+/**
+ * @brief Set linear and parity prescaler.
+ * @note To calculate value of PrescalerLinear(I2SDIV[7:0] bits) and PrescalerParity(ODD bit)\n
+ * Check Audio frequency table and formulas inside Reference Manual (SPI/I2S).
+ * @param SPIx SPI Instance
+ * @param PrescalerLinear value Min_Data=0x02 and Max_Data=0xFF.
+ * @param PrescalerParity This parameter can be one of the following values:
+ * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN
+ * @arg @ref LL_I2S_PRESCALER_PARITY_ODD
+ * @retval None
+ */
+void LL_I2S_ConfigPrescaler(SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity)
+{
+ /* Check the I2S parameters */
+ assert_param(IS_I2S_ALL_INSTANCE(SPIx));
+ assert_param(IS_LL_I2S_PRESCALER_LINEAR(PrescalerLinear));
+ assert_param(IS_LL_I2S_PRESCALER_PARITY(PrescalerParity));
+
+ /* Write to SPIx I2SPR */
+ MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_I2SDIV | SPI_I2SPR_ODD, PrescalerLinear | (PrescalerParity << 8U));
+}
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+#endif /* SPI_I2S_SUPPORT */
+
+#endif /* defined (SPI1) || defined (SPI2) || defined (SPI3) */
+
+/**
+ * @}
+ */
+
+#endif /* USE_FULL_LL_DRIVER */
+
diff --git a/MDK-ARM/motor.uvguix.xushenghao b/MDK-ARM/motor.uvguix.xushenghao
new file mode 100644
index 0000000..4c5aa97
--- /dev/null
+++ b/MDK-ARM/motor.uvguix.xushenghao
@@ -0,0 +1,3655 @@
+
+
+
+ -6.1
+
+ ### uVision Project, (C) Keil Software
+
+
+ E:\work\stm32\study\motor_cs103\User\system\bsp
+
+
+
+
+
+
+ 38003
+ Registers
+ 140 100
+
+
+ 346
+ Code Coverage
+ 1010 100
+
+
+ 204
+ Performance Analyzer
+ 1170 175 175 100
+
+
+
+
+
+ 35141
+ Event Statistics
+
+ 200 50 700
+
+
+ 1506
+ Symbols
+
+ 80 80 80
+
+
+ 1936
+ Watch 1
+
+ 200 133 133
+
+
+ 1937
+ Watch 2
+
+ 200 133 133
+
+
+ 1935
+ Call Stack + Locals
+
+ 200 133 133
+
+
+ 2506
+ Trace Data
+
+ 75 135 130 95 70 230 200 150
+
+
+ 466
+ Source Browser - *** Not Enabled ***
+ 500
+ 300
+
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 50
+ 16
+
+
+
+
+
+
+ 44
+ 2
+ 3
+
+ -32000
+ -32000
+
+
+ -1
+ -1
+
+
+ 183
+ 147
+ 1587
+ 942
+
+
+
+ 0
+
+ 583
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000020000000100000036453A5C776F726B5C73746D33325C73747564795C6D6F746F725F63733130335C557365725C73797374656D5C6273705C737069732E680000000006737069732E6800000000C5D4F200FFFFFFFF3D453A5C776F726B5C73746D33325C73747564795C6D6F746F725F63733130335C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E7300000000FFDC7800FFFFFFFF2F453A5C776F726B5C73746D33325C73747564795C6D6F746F725F63733130335C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF39453A5C776F726B5C73746D33325C73747564795C6D6F746F725F63733130335C557365725C6C69625C6472697665725C746D63323234302E630000000009746D63323234302E6300000000F0A0A100FFFFFFFF36453A5C776F726B5C73746D33325C73747564795C6D6F746F725F63733130335C557365725C73797374656D5C6273705C737069732E630000000006737069732E6300000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000073020000
+
+
+
+ 0
+ Build
+
+ -1
+ -1
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F40000004F00000090050000DD000000
+
+
+ 16
+ F40000006600000090050000F4000000
+
+
+
+ 1005
+ 1005
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED00000043020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 109
+ 109
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED00000043020000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 1465
+ 1465
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 1466
+ 1466
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 1467
+ 1467
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 1468
+ 1468
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 1506
+ 1506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 16384
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 1913
+ 1913
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F7000000660000008D050000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 1935
+ 1935
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 1936
+ 1936
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 1937
+ 1937
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 1939
+ 1939
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 1940
+ 1940
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 1941
+ 1941
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 1942
+ 1942
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 195
+ 195
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED00000043020000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 196
+ 196
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED00000043020000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 197
+ 197
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 000000007402000080070000DE030000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 198
+ 198
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 000000001502000090050000B7020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 199
+ 199
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 203
+ 203
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F7000000660000008D050000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 204
+ 204
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F7000000660000008D050000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 221
+ 221
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000000000000000000000000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 2506
+ 2506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 2507
+ 2507
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 343
+ 343
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F7000000660000008D050000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 346
+ 346
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F7000000660000008D050000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 35141
+ 35141
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F7000000660000008D050000C4000000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35824
+ 35824
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F7000000660000008D050000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 35885
+ 35885
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35886
+ 35886
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35887
+ 35887
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35888
+ 35888
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35889
+ 35889
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35890
+ 35890
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35891
+ 35891
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35892
+ 35892
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35893
+ 35893
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35894
+ 35894
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35895
+ 35895
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35896
+ 35896
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35897
+ 35897
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35898
+ 35898
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35899
+ 35899
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35900
+ 35900
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35901
+ 35901
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35902
+ 35902
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35903
+ 35903
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35904
+ 35904
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35905
+ 35905
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 38003
+ 38003
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED00000043020000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 38007
+ 38007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 436
+ 436
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 437
+ 437
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 440
+ 440
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 463
+ 463
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 466
+ 466
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 470
+ 470
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F7000000660000008D050000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 50000
+ 50000
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50001
+ 50001
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50002
+ 50002
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50003
+ 50003
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50004
+ 50004
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50005
+ 50005
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50006
+ 50006
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50007
+ 50007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50008
+ 50008
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50009
+ 50009
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50010
+ 50010
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50011
+ 50011
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50012
+ 50012
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50013
+ 50013
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50014
+ 50014
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50015
+ 50015
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50016
+ 50016
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50017
+ 50017
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50018
+ 50018
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50019
+ 50019
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 59392
+ 59392
+ 1
+ 0
+ 0
+ 0
+ 966
+ 0
+ 8192
+ 0
+
+ 16
+ 0000000000000000D10300001C000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59393
+ 0
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000DE03000080070000F1030000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59399
+ 59399
+ 1
+ 0
+ 0
+ 0
+ 476
+ 0
+ 8192
+ 1
+
+ 16
+ 000000001C000000E701000038000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59400
+ 59400
+ 0
+ 0
+ 0
+ 0
+ 612
+ 0
+ 8192
+ 2
+
+ 16
+ 00000000380000006F02000054000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 824
+ 824
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000002C0200008D0500009E020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 3334
+ 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F4000000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A004000066000000900500003C020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000005C020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000073020000000000004F000000F00000005C0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002C02000090050000CE020000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000005C02000080070000600200000100000001000010040000000100000008FDFFFF8C000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000007702000080070000F5030000000000006002000080070000DE0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
+
+
+ 59392
+ File
+
+ 2936
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C6932635F776169745F61636B960000000000000013000C6932635F776169745F61636B15686172745F7365745F70726573737572655F7265710842617564526174650F626C7565746F6F74685F737461746511737973746F6D5F696E7370656374696F6E10776F726B5F646174615F75706461746519706172616D735F686172745F73746F726167655F636865636B0D4750494F5F50574D5F496E69740C54494D5F4361705F496E69741566616C5F657865637574696F6E5F70726F636573730F6E6F696E69745F646174615F73657406E6B094E6BA900A6D656E75735F7461736B0A6C6564735F64696E6974176D656E75735F68616E646C655F696E7370656374696F6E0B6D617267696E5F6C656674196D656E75735F73686F775F7365745F7069645F77696E646F770C666C6F61745F746F5F737472146D6F64655F646961676E6F7369735F737461727400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000
+
+
+
+ 59399
+ Build
+
+ 970
+ 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000056D6F746F7296000000000000000100056D6F746F72000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000
+
+
+
+ 59400
+ Debug
+
+ 2373
+ 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000
+
+
+
+ 0
+ 1920
+ 1080
+
+
+
+ 1
+ Debug
+
+ -1
+ -1
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F40000004F00000036040000DD000000
+
+
+ 16
+ F40000006600000036040000F4000000
+
+
+
+ 1005
+ 1005
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED000000E4020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 109
+ 109
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED000000E4020000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 1465
+ 1465
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1466
+ 1466
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1467
+ 1467
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1468
+ 1468
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1506
+ 1506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 16384
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 1913
+ 1913
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F70000006600000033040000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 1935
+ 1935
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1936
+ 1936
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1937
+ 1937
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1939
+ 1939
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1940
+ 1940
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1941
+ 1941
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 1942
+ 1942
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 195
+ 195
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED000000E4020000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 196
+ 196
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED000000E4020000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 197
+ 197
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 198
+ 198
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 000000000103000036040000DE030000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 199
+ 199
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 203
+ 203
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F40000006300000036040000DD000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 204
+ 204
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F70000006600000033040000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 221
+ 221
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000000000000000000000000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 2506
+ 2506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 2507
+ 2507
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 343
+ 343
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F70000006600000033040000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 346
+ 346
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F70000006600000033040000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 35141
+ 35141
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F70000006600000033040000C4000000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35824
+ 35824
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F70000006600000033040000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 35885
+ 35885
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35886
+ 35886
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35887
+ 35887
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35888
+ 35888
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35889
+ 35889
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35890
+ 35890
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35891
+ 35891
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35892
+ 35892
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35893
+ 35893
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35894
+ 35894
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35895
+ 35895
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35896
+ 35896
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35897
+ 35897
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35898
+ 35898
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35899
+ 35899
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35900
+ 35900
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35901
+ 35901
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35902
+ 35902
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35903
+ 35903
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35904
+ 35904
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 35905
+ 35905
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 38003
+ 38003
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED000000E4020000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 38007
+ 38007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 436
+ 436
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 437
+ 437
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 440
+ 440
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 463
+ 463
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 466
+ 466
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000770200007D070000C5030000
+
+
+ 16
+ D8000000EF000000F40100002B030000
+
+
+
+ 470
+ 470
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ F70000006600000033040000C4000000
+
+
+ 16
+ D8000000EF000000A00300007D010000
+
+
+
+ 50000
+ 50000
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50001
+ 50001
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50002
+ 50002
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50003
+ 50003
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50004
+ 50004
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50005
+ 50005
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50006
+ 50006
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50007
+ 50007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50008
+ 50008
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50009
+ 50009
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50010
+ 50010
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50011
+ 50011
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50012
+ 50012
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50013
+ 50013
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50014
+ 50014
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50015
+ 50015
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50016
+ 50016
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50017
+ 50017
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50018
+ 50018
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 50019
+ 50019
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ D8000000EF000000C8010000B8010000
+
+
+
+ 59392
+ 59392
+ 1
+ 0
+ 0
+ 0
+ 966
+ 0
+ 8192
+ 0
+
+ 16
+ 0000000000000000D10300001C000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59393
+ 0
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000DE03000080070000F1030000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59399
+ 59399
+ 0
+ 0
+ 0
+ 0
+ 476
+ 0
+ 8192
+ 1
+
+ 16
+ 000000001C000000E701000038000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59400
+ 59400
+ 1
+ 0
+ 0
+ 0
+ 612
+ 0
+ 8192
+ 2
+
+ 16
+ 000000001C0000006F02000038000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 824
+ 824
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 3D040000660000007D070000C5030000
+
+
+ 16
+ 90060000150200004C0A0000F2020000
+
+
+
+ 3438
+ 000000000C000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000DD00000036040000E1000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000F40000006600000036040000F4000000F40000004F00000036040000DD0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A004000066000000900500003C020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000FD020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000014030000000000004F000000F0000000FD0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000FD020000360400000103000001000000010000100400000001000000000000000000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFC003000001030000C4030000DE03000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF000000005C02000080070000600200000000000001000000040000000100000008FDFFFF8C000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000000000007702000080070000F5030000000000006002000080070000DE0300000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFF360400004F0000003A040000DE03000001000000020000100400000001000000000000000000000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000400000010000003A0400006600000080070000F50300003A0400004F00000080070000DE03000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7301000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727301000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000000000000000000
+
+
+ 59392
+ File
+
+ 2936
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C6932635F776169745F61636B960000000000000013000C6932635F776169745F61636B15686172745F7365745F70726573737572655F7265710842617564526174650F626C7565746F6F74685F737461746511737973746F6D5F696E7370656374696F6E10776F726B5F646174615F75706461746519706172616D735F686172745F73746F726167655F636865636B0D4750494F5F50574D5F496E69740C54494D5F4361705F496E69741566616C5F657865637574696F6E5F70726F636573730F6E6F696E69745F646174615F73657406E6B094E6BA900A6D656E75735F7461736B0A6C6564735F64696E6974176D656E75735F68616E646C655F696E7370656374696F6E0B6D617267696E5F6C656674196D656E75735F73686F775F7365745F7069645F77696E646F770C666C6F61745F746F5F737472146D6F64655F646961676E6F7369735F737461727400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000
+
+
+
+ 59399
+ Build
+
+ 970
+ 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000004001D000000000000000000000000000000000100000001000000018030800000000004001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000004006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000040000000000000000000000000000000000000100000001000000960000000300205000000000056D6F746F7296000000000000000100056D6F746F72000000000180EB880000000004002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000400230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000
+
+
+
+ 59400
+ Debug
+
+ 2362
+ 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000
+
+
+
+ 0
+ 1920
+ 1080
+
+
+
+
+
+ 1
+ 0
+
+ 100
+ 2
+
+ ..\User\system\bsp\spis.h
+ 13
+ 15
+ 34
+ 1
+
+ 0
+
+
+ startup_stm32f103xb.s
+ 0
+ 120
+ 132
+ 1
+
+ 0
+
+
+ ../Core/Src/main.c
+ 14
+ 58
+ 69
+ 1
+
+ 0
+
+
+ ..\User\lib\driver\tmc2240.c
+ 26
+ 30
+ 43
+ 1
+
+ 0
+
+
+ ..\User\system\bsp\spis.c
+ 0
+ 461
+ 467
+ 1
+
+ 0
+
+
+
+
+
diff --git a/MDK-ARM/motor.uvoptx b/MDK-ARM/motor.uvoptx
index c491601..3477205 100644
--- a/MDK-ARM/motor.uvoptx
+++ b/MDK-ARM/motor.uvoptx
@@ -190,7 +190,30 @@
1
x,0x0A
+
+ 8
+ 1
+ _tmc2240
+
+
+ 9
+ 1
+ wdata
+
+
+ 10
+ 1
+ rdata
+
+
+
+ 1
+ 0
+ 0x20003440
+ 0
+
+
0
@@ -305,6 +328,18 @@
0
0
0
+ ../Core/Src/spi.c
+ spi.c
+ 0
+ 0
+
+
+ 2
+ 6
+ 1
+ 0
+ 0
+ 0
../Core/Src/tim.c
tim.c
0
@@ -312,7 +347,7 @@
2
- 6
+ 7
1
0
0
@@ -324,7 +359,7 @@
2
- 7
+ 8
1
0
0
@@ -344,7 +379,7 @@
0
3
- 8
+ 9
1
0
0
@@ -364,7 +399,7 @@
0
4
- 9
+ 10
1
0
0
@@ -384,7 +419,7 @@
0
5
- 10
+ 11
1
0
0
@@ -396,7 +431,7 @@
5
- 11
+ 12
1
0
0
@@ -408,7 +443,7 @@
5
- 12
+ 13
1
0
0
@@ -420,7 +455,7 @@
5
- 13
+ 14
1
0
0
@@ -432,7 +467,7 @@
5
- 14
+ 15
1
0
0
@@ -444,7 +479,7 @@
5
- 15
+ 16
1
0
0
@@ -456,7 +491,7 @@
5
- 16
+ 17
1
0
0
@@ -468,7 +503,7 @@
5
- 17
+ 18
1
0
0
@@ -478,6 +513,18 @@
0
0
+
+ 5
+ 19
+ 1
+ 0
+ 0
+ 0
+ ..\User\system\bsp\spis.c
+ spis.c
+ 0
+ 0
+
@@ -488,7 +535,7 @@
0
6
- 18
+ 20
1
0
0
@@ -500,7 +547,7 @@
6
- 19
+ 21
1
0
0
@@ -512,7 +559,7 @@
6
- 20
+ 22
1
0
0
@@ -524,7 +571,7 @@
6
- 21
+ 23
1
0
0
@@ -536,7 +583,7 @@
6
- 22
+ 24
1
0
0
@@ -548,7 +595,7 @@
6
- 23
+ 25
1
0
0
@@ -560,7 +607,7 @@
6
- 24
+ 26
1
0
0
@@ -572,7 +619,7 @@
6
- 25
+ 27
1
0
0
@@ -584,7 +631,7 @@
6
- 26
+ 28
1
0
0
@@ -596,7 +643,7 @@
6
- 27
+ 29
1
0
0
@@ -608,7 +655,7 @@
6
- 28
+ 30
1
0
0
@@ -620,7 +667,7 @@
6
- 29
+ 31
1
0
0
@@ -632,7 +679,7 @@
6
- 30
+ 32
1
0
0
@@ -644,7 +691,7 @@
6
- 31
+ 33
1
0
0
@@ -656,7 +703,7 @@
6
- 32
+ 34
1
0
0
@@ -676,7 +723,7 @@
0
7
- 33
+ 35
1
0
0
@@ -688,7 +735,7 @@
7
- 34
+ 36
1
0
0
@@ -698,30 +745,6 @@
0
0
-
- 7
- 35
- 1
- 0
- 0
- 0
- ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c
- stm32f1xx_ll_pwr.c
- 0
- 0
-
-
- 7
- 36
- 1
- 0
- 0
- 0
- ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c
- stm32f1xx_ll_exti.c
- 0
- 0
-
7
37
@@ -729,8 +752,8 @@
0
0
0
- ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c
- stm32f1xx_ll_tim.c
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c
+ stm32f1xx_ll_spi.c
0
0
@@ -765,6 +788,42 @@
0
0
0
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c
+ stm32f1xx_ll_exti.c
+ 0
+ 0
+
+
+ 7
+ 41
+ 1
+ 0
+ 0
+ 0
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c
+ stm32f1xx_ll_pwr.c
+ 0
+ 0
+
+
+ 7
+ 42
+ 1
+ 0
+ 0
+ 0
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c
+ stm32f1xx_ll_tim.c
+ 0
+ 0
+
+
+ 7
+ 43
+ 1
+ 0
+ 0
+ 0
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c
stm32f1xx_ll_usart.c
0
@@ -780,7 +839,7 @@
0
8
- 41
+ 44
1
0
0
@@ -792,7 +851,7 @@
8
- 42
+ 45
1
0
0
@@ -802,6 +861,18 @@
0
0
+
+ 8
+ 46
+ 1
+ 0
+ 0
+ 0
+ ..\User\lib\driver\tmc2240.c
+ tmc2240.c
+ 0
+ 0
+
@@ -812,7 +883,7 @@
0
9
- 43
+ 47
1
0
0
@@ -824,7 +895,7 @@
9
- 44
+ 48
1
0
0
@@ -836,7 +907,7 @@
9
- 45
+ 49
1
0
0
@@ -848,7 +919,7 @@
9
- 46
+ 50
1
0
0
@@ -860,7 +931,7 @@
9
- 47
+ 51
1
0
0
diff --git a/MDK-ARM/motor.uvprojx b/MDK-ARM/motor.uvprojx
index 06e1df5..988f013 100644
--- a/MDK-ARM/motor.uvprojx
+++ b/MDK-ARM/motor.uvprojx
@@ -459,6 +459,62 @@
+
+ spi.c
+ 1
+ ../Core/Src/spi.c
+
+
+ 2
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+
+
tim.c
1
@@ -641,6 +697,11 @@
1
..\User\system\bsp\i2cs.c
+
+ spis.c
+ 1
+ ..\User\system\bsp\spis.c
+
@@ -908,121 +969,9 @@
- stm32f1xx_ll_pwr.c
+ stm32f1xx_ll_spi.c
1
- ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c
-
-
- 2
- 0
- 0
- 0
- 0
- 1
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 0
- 0
- 2
- 2
- 2
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- stm32f1xx_ll_exti.c
- 1
- ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c
-
-
- 2
- 0
- 0
- 0
- 0
- 1
- 2
- 2
- 2
- 2
- 11
-
-
- 1
-
-
-
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 0
- 2
- 2
- 2
- 2
- 2
- 0
- 0
- 2
- 2
- 2
- 2
- 2
-
-
-
-
-
-
-
-
-
-
-
- stm32f1xx_ll_tim.c
- 1
- ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c
2
@@ -1187,6 +1136,174 @@
+
+ stm32f1xx_ll_exti.c
+ 1
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c
+
+
+ 2
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+
+
+
+ stm32f1xx_ll_pwr.c
+ 1
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c
+
+
+ 2
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+
+
+
+ stm32f1xx_ll_tim.c
+ 1
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c
+
+
+ 2
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+
+
stm32f1xx_ll_usart.c
1
@@ -1258,6 +1375,11 @@
1
..\User\lib\driver\ssd1306_oled.c
+
+ tmc2240.c
+ 1
+ ..\User\lib\driver\tmc2240.c
+
diff --git a/MDK-ARM/motor/motor.hex b/MDK-ARM/motor/motor.hex
index 12cb931..4928b66 100644
--- a/MDK-ARM/motor/motor.hex
+++ b/MDK-ARM/motor/motor.hex
@@ -1,23 +1,23 @@
:020000040800F2
-:100000008034002005010008CD1300088707000890
-:10001000C91300084D070008B119000800000000CE
-:100020000000000000000000000000001D17000894
-:1000300085070008000000001D1600081F170008B3
+:100000009034002005010008091500088707000842
+:10001000051500084D070008ED1A00080000000053
+:100020000000000000000000000000005918000857
+:100030008507000800000000591700085B18000839
:100040001F0100081F0100081F0100081F01000810
:100050001F0100081F0100081F0100081F01000800
:100060001F0100081F0100081F0100081F010008F0
:100070001F0100081F010008650700087507000838
:100080001F0100081F0100081F0100081F010008D0
:100090001F0100081F0100081F0100081F010008C0
-:1000A0001F010008151800081F0100081F010008A3
-:1000B0001F010008E51800081F0100081F010008C3
+:1000A0001F010008511900081F0100081F01000866
+:1000B0001F010008211A00081F0100081F01000885
:1000C0001F0100081F0100081F0100081F01000890
-:1000D0001F010008A11900081F0100081F010008E6
+:1000D0001F010008DD1A00081F0100081F010008A9
:1000E0001F0100081F0100081F010008DFF810D0E1
-:1000F00000F01AFB0048004779230008AFF30080A6
-:10010000803400200648804706480047FEE7FEE7A7
+:1000F00000F01AFB00480047292B0008AFF30080EE
+:10010000903400200648804706480047FEE7FEE797
:10011000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B7
-:1001200011180008ED000008D2B201E000F8012B20
+:100120004D190008ED000008D2B201E000F8012BE3
:10013000491EFBD270470022F6E710B513460A4667
:1001400004461946FFF7F0FF204610BD421C10F888
:10015000011B0029FBD1801A7047F0B480EA01022C
@@ -115,946 +115,1238 @@
:100710000146E9E7010510196941DDE908450019BD
:100720006941BDE8F04DA2E7064C074D06E0E068E0
:1007300040F0010394E8070098471034AC42F6D328
-:10074000FFF7D8FC744100089441000800BFFEE7A1
+:10074000FFF7D8FCC0530008E053000800BFFEE7E5
:10075000024600BF1AB901E000BF00BFFCE700BFBE
-:100760000120704710B50248006802F0B8FB10BDC8
-:100770006000002010B50248006802F0B0FB10BD18
-:1007800060000020704700BFFEE7000008B5054983
+:100760000120704710B50248006803F0CAFC10BDB4
+:100770005C00002010B50248006803F0C2FC10BD08
+:100780005C000020704700BFFEE7000008B5054987
:10079000C9690143034AD1611146C9690140009109
:1007A00000BF08BD0010024008B505498969014332
:1007B000034A9161114689690140009100BF08BD5B
:1007C0000010024008B5054989690143034A916157
:1007D000114689690140009100BF08BD0010024028
:1007E00008B5054989690143034A91611146896940
-:1007F0000140009100BF08BD0010024010B54A1E24
-:10080000044B9A5C825822F001034A1E014CA25C00
-:10081000835010BDD434000810B54A1E044B9A5CB6
-:10082000825842F001034A1E014CA25C835010BD65
-:10083000D434000810B54A1E044B9A5C825842F02A
-:1008400002034A1E014CA25C835010BDD434000840
-:1008500030B54B1E054CE35CC35823F4405313439F
-:100860004C1E024D2C5D035130BD00009234000837
-:1008700030B54B1E064CE35C03445B686FF30F031B
-:1008800013434C1E024D2C5D0444636030BD0000D8
-:10089000D434000830B54B1E054CE35CC35844F219
-:1008A0001004A34313434C1E014D2C5D035130BD76
-:1008B0009234000810B54B1E024CE35C0344DA602E
-:1008C00010BD0000D434000830B54B1E054CE35C6D
-:1008D000C35823F0800313434C1E024D2C5D03517B
-:1008E00030BD00009234000830B54B1E054CE35C6F
-:1008F000C35823F4406313434C1E024D2C5D035137
-:1009000030BD00009234000830B54B1E054CE35C4E
-:10091000C35823F0200313434C1E024D2C5D03519A
-:1009200030BD00009234000810B54B1E024CE35C51
-:1009300003449A6010BD0000D434000830B54B1E4B
-:10094000054CE35CC35823F0400313434C1E024D97
-:100950002C5D035130BD00009234000830B54B1EB1
-:10096000054CE35CC35823F4407313434C1E024D03
-:100970002C5D035130BD0000923400082DE9F04198
-:1009800002460B461868C0F30F2595FAA5F0B0FA99
-:1009900080F480E00120A040284000287AD0082C74
-:1009A00004D240F2011000FA04F106E0A4F10800BC
-:1009B0004FF00116864046F08061586808280ED135
-:1009C0001869D66826EA11260F0A97FAA7F7B7FA28
-:1009D00087F700FA07F73E43D66000BF00BF5868AC
-:1009E00002EB116691FAA1FCBCFA8CFC4FEA8C0870
-:1009F0004FF00F0C0CFA08FC376827EA0C0791FA45
-:100A0000A1FCBCFA8CFC4FEA8C0C00FA0CFC47EA07
-:100A10000C07376000BF5868012802D058680928C1
-:100A200038D1986802EB116691FAA1FCBCFA8CFCF3
-:100A30004FEA8C084FF0030C0CFA08FC376827EAE1
-:100A40000C0791FAA1FCBCFA8CFC4FEA8C0C00FA62
-:100A50000CFC47EA0C07376000BFD86802EB116650
-:100A600091FAA1FCBCFA8CFC4FEA8C084FF0040C04
-:100A70000CFA08FC376827EA0C0791FAA1FCBCFACB
-:100A80008CFC4FEA8C0C00FA0CFC47EA0C07376030
-:100A900000BF00BF641C25FA04F000287FF47AAF81
-:100AA000BDE8F08102469068C1F30F231840C1F3FE
-:100AB0000F23984201D1012070470020FCE7C1F3C9
-:100AC0000F2242617047C1F30F2242617047C1F3A8
-:100AD0000F220261704770B500EB116391FAA1F526
-:100AE000B5FA85F5AE000F25B5401C68AC4391FA08
-:100AF000A1F5B5FA85F5AD0002FA05F52C431C60A9
-:100B000070BD000002480068401C01490860704741
-:100B1000240000204FF47A71B0FBF1F2521E4FF026
-:100B2000E0235A6100229A6105221A6100BF7047D2
-:100B300010B5044600F0A8FD2060206800F070FDAC
-:100B40006060606800F07CFDA060606800F08AFD75
-:100B5000E06010BD014908607047000000000020FF
-:100B6000016821F0800101607047816821F08001F7
-:100B700081607047016841F0010101607047C16800
-:100B800041F00101C160704710B5024613681C486E
-:100B9000824208D0B2F1804F05D01A48824202D07A
-:100BA0001948824204D123F070004C6840EA0403E3
-:100BB0001348824208D0B2F1804F05D011488242DA
-:100BC00002D01148824204D123F44070CC6840EA3C
-:100BD000040313608868D06200BF0888906200BF79
-:100BE0000748824203D10869106300BF00BF00BFFD
-:100BF000506940F00100506100BF002010BD0000AE
-:100C0000002C014000040040000800400146086933
-:100C1000C0F34000704701460869C0F38000704788
-:100C200001460869C0F3C000704701460869C0F377
-:100C3000001070470146086900F001007047014646
-:100C4000C868C0F3400070470146C868C0F3800020
-:100C500070470146C868C0F3C00070470146C868C5
-:100C6000C0F3001070470146C86800F001007047EB
-:100C700070B50246012901D1002416E0042901D1F2
-:100C8000012412E0102901D102240EE0402901D1F3
-:100C900003240AE0B1F5807F01D1042405E0B1F519
-:100CA000806F01D1052400E006242346064CE55C54
-:100CB00002F1180428190468044DEE5C0425B540BF
-:100CC0002C43046070BD00006F34000876340008C7
-:100CD00070B50246012901D1002416E0042901D192
-:100CE000012412E0102901D102240EE0402901D193
-:100CF00003240AE0B1F5807F01D1042405E0B1F5B9
-:100D0000806F01D1052400E006242346064CE55CF3
-:100D100002F1180428190468044DEE5C0825B5405A
-:100D20002C43046070BD00006F3400087634000866
-:100D30002DE9F04106460C4615460127012C08D046
-:100D4000102C0CD0B4F5807F0FD0B4F5805F18D193
-:100D500011E02946304600F07BFB074612E02946A9
-:100D6000304600F0B1FB07460CE02946304600F063
-:100D7000EDFB074606E02946304600F023FC074617
-:100D800000E000BF00BF3846BDE8F08181637047D6
-:100D9000826844F207039A430A43826070474268BC
-:100DA00022F070020A434260704708B50168009162
-:100DB00000BF4168009100BF08BD6FF040010160B5
-:100DC000704700002DE9FF4104460D46012700262B
-:100DD000204600F055F8002833D1E96868680843D8
-:100DE00029690843E16841F20C6291430843E060DD
-:100DF000A868216921F440510143216100BF68695D
-:100E0000616921F440710143616100BF6846FFF7E9
-:100E10008FFE0E48844201D1039E08E00C488442B4
-:100E200001D1029E03E00B48844200D1029E46B1EC
-:100E3000286830B10027314620462A6800F025F89E
-:100E400000BF384604B0BDE8F08100000038014022
-:100E5000004400400048004001460868C0F34000DC
-:100E6000704701460868C0F3800070470146086873
-:100E7000C0F3C000704701460868C0F38010704797
-:100E80000146C868C0F34030704770B501EBC1033C
-:100E900003EB01139400B3FBF4F301EBC10404EB87
-:100EA00001149500B4FBF5F46425B4FBF5F404EBF0
-:100EB000C40505EB0414A3EB8403322404EB0313F1
-:100EC0006424B3FBF4F303F0F00301EBC10404EB7F
-:100ED00001149500B4FBF5F46425B4FBF5F403EBC1
-:100EE000041401EBC10303EB01139500B3FBF5F30D
-:100EF00001EBC10505EB01159600B5FBF6F564267F
-:100F0000B5FBF6F505EBC50606EB0515A3EB85036A
-:100F1000322505EB03136425B3FBF5F303F00F0350
-:100F200023449BB2836070BD38B5012014494969E0
-:100F30000143134A5161114649690140009100BFC4
-:100F400000BF00F06BFD05460022114600F040FA9C
-:100F5000044621460E2000F071FD0E2000F044FDF5
-:100F600000F05CFD05460022114600F031FA04460F
-:100F700021460F2000F062FD0F2000F035FD38BD46
-:100F80000010024000B585B014216846FFF7D3F881
-:100F90001020FFF709FC2020FFF706FC0420FFF7D4
-:100FA00003FC0820FFF700FC1D491E48FFF787FDE2
-:100FB0001D491E48FFF783FD19480090012001904C
-:100FC000022002900020039069461648FFF7D6FCE5
-:100FD000174800900020019069461248FFF7CEFCA8
-:100FE000144800900020019069461348FFF7C6FCA2
-:100FF000124800900020019069460C48FFF7BEFCA3
-:1010000009480090012001900320029000200390E5
-:101010000120049069460548FFF7B0FC05B000BD0B
-:10102000200020040010014030003004000C01407A
-:10103000C000C004FDFD990400080140FFFFCF047B
-:1010400030B585B014216846FFF775F84FF400609D
-:10105000FFF7B8FB00F0EAFC05460022032100F090
-:10106000D7F904462146192000F0FCFC192000F0B5
-:10107000C8FC41F61F40ADF800000020019063203D
-:10108000029000200390049069460948FFF77CFD18
-:101090000748FFF765FD00210548FFF779FE0021AD
-:1010A0000348FFF77CFE0248FFF75FFD05B030BD47
-:1010B000002C014000B593B014210EA8FFF73BF8B7
-:1010C000202106A8FFF737F8142101A8FFF733F80D
-:1010D0000120FFF75BFB0020ADF838000F9041F6D0
-:1010E0001F401090002011900EA94FF08040FFF794
-:1010F0004BFD00BF4FF08040006840F080004FF093
-:101100008041086000BF00214FF08040FFF740FEA3
-:1011100010218806FFF7DCFD702006900020079064
-:101120000890099002200A9006AA10214007FFF7B4
-:10113000FFFD10218806FFF79BFD00214FF0804046
-:10114000FFF72DFE4FF08040FFF70FFD0420FFF763
-:1011500039FB40F202200190092002900220039006
-:101160000020049001A90248FFF708FC13B000BD5D
-:101170000008014030B585B014216846FEF7DBFF5A
-:101180000220FFF703FB00F051FC0546002203217B
-:1011900000F03EF9044621461D2000F063FC1D20AE
-:1011A00000F02FFC41F61F40ADF800000020019038
-:1011B000632002900020039069460948FFF7E4FC91
-:1011C0000748FFF7CDFC00210548FFF7E1FD0021AE
-:1011D0000348FFF7E4FD0248FFF7C7FC05B030BD48
-:1011E000000400402DE9F0418CB01C2105A8FEF759
-:1011F000A2FF14216846FEF79EFF4FF48040FFF7E0
-:10120000EFFA0420FFF7ECFA6848009009200190FB
-:10121000032002900020039069466548FFF7AEFB6B
-:10122000644800900420019069466148FFF7A6FBDE
-:10123000002205216048FFF72DFB002205215E48B2
-:10124000FFF706FB002205215B48FFF75DFB00224C
-:1012500005215948FFF772FB802205215648FFF708
-:1012600033FB002205215448FFF778FB00220521BB
-:101270005148FFF739FB102204214F48FFF70AFBC2
-:10128000002204214C48FFF7E3FA002204214A48D7
-:10129000FFF73AFB002204214748FFF74FFB80226B
-:1012A00004214548FFF710FB002204214248FFF7C4
-:1012B00055FB002204214048FFF716FB25213F4B38
-:1012C0001B68C3F30220052400250346C3F1070C65
-:1012D000BCF1040F02D94FF0040C01E0C3F1070C7C
-:1012E000674603F1040CBCF1070F02D24FF0000C6B
-:1012F00001E0A3F1030C66464FF0010C0CFA07FC69
-:10130000ACF1010C0CEA040C0CFA06FC4FF00108DD
-:1013100008FA06F8A8F1010808EA05084CEA0802EC
-:1013200000BF002904DB1007030E2548435407E0E3
-:101330001007040E21480C3001F00F031B1FC4548A
-:1013400000BF2520002809DB00F01F020121914089
-:101350004209920002F1E022C2F8001100BF4FF4EE
-:10136000E130059000200690079008900C2009902D
-:1013700000200A900B9005A91248FFF723FD00BF3B
-:101380001048006920F490400E4908610846406901
-:1013900020F02A00486100BF00BF0846C06840F442
-:1013A0000050C86000BF0CB0BDE8F081020002042C
-:1013B0000008014004000404000002400CED00E0BD
-:1013C00000E400E00038014000BFFEE700BFFEE798
-:1013D000F0B503460C4603F00701C1F107000428ED
-:1013E00001D9042001E0C1F107000646081D0728C5
-:1013F00001D2002000E0C81E05460120B040401E7A
-:101400002040A8400127AF407F1E17403843F0BD61
-:10141000F0B503460C4603F00701C1F107000428AC
-:1014200001D9042001E0C1F107000646081D072884
-:1014300001D2002000E0C81E05460120B040401E39
-:101440002040A8400127AF407F1E17403843F0BD21
-:1014500070B50246106A20F001001062136A5568E8
-:10146000946924F0030424F070000E6840EA060436
-:1014700023F002000E6940EA060323F001004E68E3
-:1014800040EA06030F48824213D123F008004E6958
-:1014900040EA860323F004008E6840EA860325F4C0
-:1014A00080708E6940EA060525F40070CE6940EA36
-:1014B000460555609461C868506300BF1362002000
-:1014C00070BD0000002C01402DE9F04104460D469E
-:1014D000206A20F010002062266AD4F80480A769F0
-:1014E00027F4407727F4E040296840EA012726F0F6
-:1014F0002000296940EA011626F01000696840EAD8
-:1015000001161148844213D126F08000696940EA2F
-:10151000811626F04000A96840EA811628F4806010
-:10152000A96940EA810828F40060E96940EAC10835
-:10153000C4F80480A7612046E968FFF727FC26620B
-:101540000020BDE8F0810000002C014070B502468B
-:10155000106A20F480701062136A5568D46924F010
-:10156000030424F070000E6840EA060423F40070BF
-:101570000E6940EA062323F480704E6840EA062391
-:101580000F48824213D123F400604E6940EA86235B
-:1015900023F480608E6840EA862325F480508E69AB
-:1015A00040EA061525F40050CE6940EA461555601C
-:1015B000D461C868D06300BF1362002070BD000012
-:1015C000002C014070B50246106A20F48050106271
-:1015D000146A5568D36923F4407323F4E0400E681D
-:1015E00040EA062324F400500E6940EA063424F44D
-:1015F00080504E6840EA06340748824204D125F400
-:1016000080408E6940EA86155560D361C8681064D1
-:1016100000BF1462002070BD002C01407047000024
-:10162000014600BF0448406800F0F0000009034A8A
-:10163000125C21FA02F0704700100240BC3400082E
-:10164000014600BF0548406800F4E060044A02EB30
-:101650001020027821FA02F07047000000100240CA
-:10166000CC340008014600BF0548406800F46050D3
-:10167000044A02EBD020027821FA02F07047000001
-:1016800000100240CC34000810B5002400BF0B4805
-:10169000406800F00C0020B1042804D0082808D1CC
-:1016A00003E0074C07E0064C05E000F00BF80446A9
-:1016B00001E0034C00BF00BF204610BD00100240F7
-:1016C00000127A000021002200BF1148406800F497
-:1016D000803002461AB1B2F5803F0CD101E00D49CD
-:1016E0000BE000BF0A484068C0F34040401C0A4B72
-:1016F000B3FBF0F101E0074900BF00BF00BF0448A1
-:10170000406800F47010022303EB90404843704798
-:101710000010024000093D0000127A007047704737
-:1017200010B502203749096821F007010143354A05
-:10173000116000BF00BF00BF3248006800F0070022
-:101740000228F8D100BF3048006840F480302E49AC
-:10175000086000BF00BF00BF2B480068C0F34040D6
-:101760000028F8D04FF480304FF4E011264A526838
-:1017700022F47C1200F440330B431A43224B5A608C
-:1017800000BF00BF1846006840F08070194608602E
-:1017900000BF00BF00BF1C480068C0F340600028C5
-:1017A000F8D000201849496821F0F0010143164A99
-:1017B000516000BF10151146496821F4E0610143F2
-:1017C000516000BF00201146496821F46051014377
-:1017D000516000BF02201146496821F00301014316
-:1017E000516000BF00BF00BF0748406800F00C0018
-:1017F0000828F8D10548FFF78DF90448FFF7AAF942
-:1018000010BD0000002002400010024000A24A0467
-:101810007047000010B53148FFF70CFA01285CD181
-:1018200000BF2E48FFF7F2F901280AD12B48FFF735
-:1018300006FA012805D100BF001F2849086100BF32
-:1018400000BF2648FFF7E7F901280AD12348FFF730
-:10185000FBF9012805D100BF801F2049086100BFA6
-:1018600000BF1E48FFF7DCF901280BD11B48FFF72A
-:10187000F0F9012806D100BF6FF008001749086190
-:1018800000BF00BF1548FFF7D0F901280BD113485E
-:10189000FFF7E4F9012806D100BF6FF010000F49EF
-:1018A000086100BF00BF0D48FFF7C4F901280AD145
-:1018B0000A48FFF7D8F9012805D100BFC01E074923
-:1018C000086100BF00BF00BFFFF71CF900BF04485C
-:1018D0000068401C0249086000BF10BD002C014098
-:1018E0005C00002010B52D48FFF7A4F9012853D162
-:1018F00000BF2A48FFF78AF901280AD12748FFF7D5
-:101900009EF9012805D100BF001F2449086100BFCE
-:1019100000BF2248FFF77FF901280AD11F48FFF7CF
-:1019200093F9012805D100BF801F1C49086100BF41
-:1019300000BF1A48FFF774F901280BD11748FFF7C9
-:1019400088F9012806D100BF6FF00800134908612B
-:1019500000BF00BF1148FFF768F901280BD10F48FD
-:10196000FFF77CF9012806D100BF6FF010000B498A
-:10197000086100BF00BF0948FFF75CF901280AD1E0
-:101980000648FFF770F9012805D100BFC01E0349C2
-:10199000086100BF00BF00BF10BD00000004004090
-:1019A00010B50248006801F0C5FB10BD60000020C2
-:1019B00000BFFEE70FB47CB50C0009AD01D0611E7D
-:1019C00000E00021CDE90001064B6A46294608984F
-:1019D00000F0A8F8002C02D0009A002111707CBC05
-:1019E0005DF814FB7B1F0008002809DB00F01F02D4
-:1019F000012191404209920002F1E022C2F8001157
-:101A00007047002809DB00F01F02012191404209C4
-:101A1000920002F1E022C2F800117047024800680B
-:101A2000C0F30220704700000CED00E0024800689F
-:101A3000C0F30220704700000CED00E010B5002854
-:101A400004DB0A07130E054A135406E00A07140EB6
-:101A5000034A00F00F031B1FD45410BD00E400E044
-:101A600018ED00E010B5002804DB0A07130E054A44
-:101A7000135406E00A07140E034A00F00F031B1F5D
-:101A8000D45410BD00E400E018ED00E002E008C806
-:101A9000121F08C1002AFAD170477047002001E0E8
-:101AA00001C1121F002AFBD170470000014601F15D
-:101AB000100000E0001D02681AB9024A1268904244
-:101AC000F8D370473800002010B50648046803E0DA
-:101AD0002046FFF7EBFF0446034800688442F7D333
-:101AE00010BD0000340000203800002010B504466E
-:101AF0002146002000F034FD10BD10B501E000F8D3
-:101B0000011B131EA2F10104A2B2F8D110BD10B541
-:101B100001E000F8011B131EA2F10104A2B2F8D1EA
-:101B200010BD00002DE9FF4F8DB00F460546002681
-:101B300006E025280BD0DDE90F1290476D1C761CBE
-:101B400028780028F5D111B03046BDE8F08F002488
-:101B5000A246A1460122E94900E0044315F8013FED
-:101B6000203B02FA03F00842F7D128782A2810D047
-:101B70006FF02F022878A0F13001092914D80AEB60
-:101B80008A0102EB410144F0020400EB010A6D1CE2
-:101B9000F0E701CF5FEA000A03D544F40054CAF12C
-:101BA000000A44F002046D1C28782E2817D115F87D
-:101BB000010F44F004042A280ED06FF02F02287879
-:101BC000A0F1300109290AD809EB890102EB410192
-:101BD00000EB01096D1CF2E757F8049B6D1C287897
-:101BE0006C280FD006DC4C2817D068280DD06A2846
-:101BF00014D104E0742810D07A280FD10DE044F4F9
-:101C000000140AE044F4801401E044F440146978BC
-:101C1000814202D104F580146D1C6D1C28786E2859
-:101C20001ED00CDC632830D004DC00288BD0582870
-:101C300011D19FE0642867D069280CD164E0732833
-:101C40002DD004DC6F2872D0702804D194E0752860
-:101C50006ED078286DD0DDE90F129047761C4BE1ED
-:101C6000C4F30250022806D0032809D0042801CF6B
-:101C700009D0066040E101CFF117C0E900613BE106
-:101C800001CF068038E1067036E117F8040B8DF8B5
-:101C9000000000208DF80100EB46012003E057F81A
-:101CA00004BB4FF0FF3061074FF0000102D40DE09C
-:101CB00008F10101884649450FDA8045F8DB1BF839
-:101CC00008100029F4D108E008F10101884681429A
-:101CD000FADB1BF808100029F6D1DDE90F23AAEB87
-:101CE00008008146214600F031F9304400EB080637
-:101CF00004E0DDE90F121BF8010B9047B8F1010871
-:101D0000F7D221464846F2E00A21C4F302524FF0CE
-:101D1000000B0891022A04D001CFC117032A09D071
-:101D20000AE0FF1D27F00707F7E8020108E02CE0B2
-:101D30001EE01FE000B2C117042A01D140B2C11752
-:101D4000021E71F1000206DA0023D0EB030063EB00
-:101D500001012D2202E0220504D52B228DF824203A
-:101D6000012203E0E20701D02022F7E7904653E08A
-:101D70000A210BE0102109E010214FF0000B44F084
-:101D800004044FF00809089103E008214FF0000B0C
-:101D90000891C4F30252022A04D001CF0021032A81
-:101DA00006D006E0FF1D27F00707F7E8020103E071
-:101DB00080B2042A00D1C0B24FF0000822072BD510
-:101DC0002A78702A07D0DDF820C08CF0100C5CEA6D
-:101DD0000B0C05D00EE040228DF82420012208E0F3
-:101DE00050EA010306D030238DF824308DF82520E9
-:101DF00002229046089B83F0080353EA0B030BD1A1
-:101E000050EA010201D1620706D530228DF8242064
-:101E10004FF00108A9F101092A78582A04D038A204
-:101E20000B9208AA0A920BE03AA2F9E75B46089ADD
-:101E3000FEF784FB0B9B9B5C0A9A521E0A9213705E
-:101E400050EA0102F2D10A98ADEB000000F1200B3C
-:101E5000600702D524F4803401E04FF00109D94530
-:101E600002DDA9EB0B0000E0002000EB0B01414478
-:101E70000890AAEB010AE00306D4DDE90F2321460E
-:101E8000504600F063F806444FF0000908E009A945
-:101E900011F80900DDE90F12904709F10109761CDC
-:101EA000C145F4DBE0030CD5DDE90F2321465046A4
-:101EB00000F04CF8064404E0DDE90F1230209047B2
-:101EC000761C0899481E08900029F5DC08E00A985D
-:101ED0000A990078491C0A91DDE90F129047761C97
-:101EE000BBF10001ABF1010BF1DC21465046DDE90D
-:101EF0000F2300F019F806446D1C21E609280100A3
-:101F0000303132333435363738396162636465666F
-:101F10000000000030313233343536373839414231
-:101F200043444546000000002DE9F04104460025E9
-:101F30001E461746880404D405E039462020B047E1
-:101F40006D1C641EF9D52846BDE8F0812DE9F041ED
-:101F5000044600251E469046C80301D5302700E000
-:101F60002027880404D505E041463846B0476D1C5B
-:101F7000641EF9D52846BDE8F0814A68002A06D0DB
-:101F80000A68531C0B6010704868401E4860704718
-:101F900010B515A1032000F005FCC82000F06EF874
-:101FA00000F002FB002405E0204600F0A1FB04F154
-:101FB0000A00C4B2642CF7DD00200E4908600E4907
-:101FC000086000BF0D48FEF7D5FD0C48FEF7D7FDB1
-:101FD00000BF00BF0A48FEF7CDFD0948FEF7CFFD60
-:101FE00000BF00F0DBFA10BD4C4F4144494E472E74
-:101FF0002E2E0000040000200C000020002C0140C8
-:102000000004004010B5034800F00EF8024800F04C
-:1020100061F910BD040000200C00002010B501F093
-:1020200059F800F052FE10BD08B50146002000909E
-:10203000086810B1112813D108E000BF00BF0B4899
-:102040000068486000BF1120086000BF074A486868
-:102050001268101A642801D2002008BD00BFEDE705
-:102060000020086000900320F7E700005C000020DB
-:1020700001490860704700002000002070B5044648
-:102080001E2094FBF0F594FBF0F100FB114604E0F8
-:1020900047F2305000F00CF86D1E002DF8D12EB133
-:1020A0004FF47A7106FB01F000F002F870BD0000F9
-:1020B00070B5034600224FF0E02675690D4E366874
-:1020C00003FB06F44FF0E026B16910E04FF0E02684
-:1020D000B06988420BD0884202D20E1A324402E024
-:1020E0002E1A0E4432440146A24200D300E0EDE72E
-:1020F00000BF70BD2000002010B500BF01220E49B6
-:102100000E48FEF7E8FC00BF0B490C48FEF7DFFC69
-:102110000B490A48FEF7DBFC0420FFF7C9FF06491C
-:102120000648FEF7D0FC0420FFF7C2FF044903482D
-:10213000FEF7C9FC10BD000010001004000C0140A7
-:102140002000200410B500BF01220E490E48FEF702
-:10215000C2FC00BF0D490C48FEF7B5FC09490A480E
-:10216000FEF7B1FC0420FFF7A3FF08490648FEF77D
-:10217000AEFC04490448FEF7AAFC0420FFF798FFD0
-:1021800010BD000010001004000C014020002004CD
-:1021900010B50024082213491348FEF79CFC11498E
-:1021A0001148FEF794FC0420FFF782FF0F490E4808
-:1021B000FEF78DFC0420FFF77BFF07E0601CC4B234
-:1021C000FA2C03DDFFF7BEFF002010BD05490648CD
-:1021D000FEF768FC0028F1D104490348FEF773FCC0
-:1021E0000120F2E710001004000C01402000200440
-:1021F00070B50446002500BF012217491748FEF7B5
-:102200006AFC00BF16491548FEF75DFC00BF1FE0E1
-:10221000E00920B110491148FEF759FC03E00E49CE
-:102220000E48FEF750FC6006040E0220FFF740FF48
-:102230000B490A48FEF74BFC0220FFF739FF08491B
-:102240000648FEF740FC0220FFF732FF681CC5B2CB
-:10225000082DDDDB70BD000010001004000C0140F3
-:102260002000200438B5044600208DF800008DF8C9
-:102270000140FFF741FF7820FFF7BAFFFFF788FF23
-:102280009DF80000FFF7B4FFFFF782FF9DF8010003
-:10229000FFF7AEFFFFF77CFFFFF754FF38BD38B5FF
-:1022A000044640208DF800008DF80140FFF724FF20
-:1022B0007820FFF79DFFFFF76BFF9DF80000FFF709
-:1022C00097FFFFF765FF9DF80100FFF791FFFFF70C
-:1022D0005FFF38BD38B5044600200090206810B17B
-:1022E0002E2837D12CE000BF1D481E4BD968C0F303
-:1022F0000F2222EA010301EA020543EA0543194DD0
-:102300002B6100BF18A20221002000F055FC1849E3
-:1023100008680968491C164B1960FEF796F80546CF
-:1023200000232A460221282000F052FA00F022FD64
-:1023300000BF10480068606000BF2E20206000BF12
-:102340000C4960680968081A642801D2002038BD69
-:1023500000BFC9E70020206000900320F7E70000DD
-:102360002000200400100140207469636B3A0000D3
-:102370001C0000205C00002008B501202749896965
-:102380000143264A9161114689690140009100BFCD
-:1023900000BF00071146C9690143D1611146C969EF
-:1023A0000140009100BF00BF032002461C4B19688A
-:1023B0004FF6FF0319401B4B0B4343EA0221184B16
-:1023C000196000BF00BF1848406820F0E06040F08E
-:1023D00000701549486000BFFFF7A2F91348006874
-:1023E0001349B0FBF1F084B22046FFF741FEFEF73F
-:1023F000C9FDFEF799FDFEF75DFEFEF7F3FEFEF761
-:102400001FFEFEF7B7FE002000F014F8FFF706FEEF
-:10241000FFF7BEFD01E0FFF7F5FDFCE7001002400D
-:102420000CED00E00000FA05000001400000002073
-:1024300040420F0010B504460C4951F824104A00E0
-:102440000B4951F82400002100F09EF8094951F889
-:1024500024200749083951F82400002100F094F89D
-:10246000012103480830015510BD0000183500084F
-:1024700050000020283500082DE9F04704460F469B
-:102480000025A9462348005D20B922481838016874
-:10249000204688471FB94FF0FF30BDE8F0871E483F
-:1024A00050F82400B7FBF0F61B4850F82400B7FBA7
-:1024B000F0F100FB117000B1761C184850F82400B0
-:1024C000451E22E01348083850F8240030F8150063
-:1024D00010B909F1010901E04FF00009B14513D12C
-:1024E0004FF0000809E00B48083850F8240005EBCD
-:1024F000080220F8126008F10108B045F3D306483D
-:1025000050F824006843C8E76D1E002DDADA4FF05A
-:10251000FF30C2E7580000202035000818350008B9
-:1025200010B501460023002207E00B4850F82100B7
-:1025300030F8120000B15B1C521C084850F8210012
-:102540009042F2D864205843044C54F82140B0FB28
-:10255000F4F0C0B210BD0000500000201835000893
-:1025600070B504460E4631462046FFF785FF054606
-:10257000681C08B9002070BD024850F824002844A7
-:10258000F9E700004800002030B5034601E003F8F9
-:10259000011B141EA2F10102F9D130BD10B500F0EB
-:1025A00003F800F0E7FB10BD10B54FF48062002186
-:1025B0000448FFF7ACFA4FF48062FF210248FFF7AE
-:1025C000A6FA10BD80280020802C00202DE9FC4FA9
-:1025D00004460D4616461F46301B01D5A01B00E0E1
-:1025E000301B8146781B01D5E81B00E0781B824632
-:1025F000B44201DA012001E04FF0FF300190BD420A
-:1026000001DA012001E04FF0FF300090A9EB0A0051
-:102610000FFA80F821E0294620460B9A00F022F8B4
-:10262000B44202D1BD4200D118E04FEA48000FFA8F
-:1026300080FBCAF10000834506DDA8EB0A000FFA13
-:1026400080F801982044C4B2CB4506DA08EB0900B3
-:102650000FFA80F800982844C5B2DCE700BFBDE857
-:10266000FC8F0000F0B503461446802B01DA4029A8
-:1026700000DBF0BD012C1CD1CD1701EB5575ED1021
-:1026800003EBC515194E755D0A46CE1701EB56765C
-:10269000F610A1EBC6070126BE403543EEB2084650
-:1026A000CD1701EB5575ED1003EBC5150F4F7E559A
-:1026B0001AE0CD1701EB5575ED1003EBC5150B4E68
-:1026C000755D0A46CE1701EB5676F610A1EBC607EC
-:1026D0000126BE40B5430846CE1701EB5676F610EC
-:1026E00003EBC616014FBD5500BFC2E7802800208E
-:1026F0003EB504460A25012005F118010A236C2283
-:102700000090184600F01CF801200090201DC2B275
-:1027100005F11A0107230C2000F0BCFA234606A29B
-:10272000052101A8FFF746F901AA02212C2000F09B
-:1027300071FA00F01FFB3EBD253364252500000023
-:102740002DE9F84104460D4616461F46DDF81C806B
-:10275000A019C2B22B4629462046CDF80080FFF7CB
-:1027600035FFE819C3B2A019C2B2E819C1B22046B8
-:10277000CDF80080FFF72AFFE819C3B222462946A8
-:102780002046CDF80080FFF721FFE919CBB2A1194F
-:10279000CAB2A119C8B22946CDF80080FFF716FFCA
-:1027A000BDE8F88170B505460C462046FDF7CEFC25
-:1027B00000EB40008021A1EB4000C0F34706224619
-:1027C0002946304600F0F8F900F0D4FA70BD000058
-:1027D0002DE9F04F87B005460E4691469A460020F7
-:1027E00003900490059002900024834600214846FF
-:1027F000FDF790FE07D22D222046611CCCB203A922
-:102800000A5489F00049E3494846FDF78DFE02D29B
-:1028100007B0BDE8F08FC4F10800C0B20290DE49F5
-:102820004846FDF781FE59D8DB494846FDF71FFDB4
-:102830008046DA49FDF791FC0746FDF724FEC2B257
-:102840002046611CCCB203A90A544846FDF702FE9B
-:1028500042F2107190FBF1F201FB12004FF47A7119
-:1028600090FBF1F03030C2B22046611CCCB203A91B
-:102870000A544846FDF7EEFD4FF47A7190FBF1F2F1
-:1028800001FB1200642190FBF1F03030C2B220460F
-:10289000611CCCB203A90A544846FDF7DBFD642154
-:1028A00090FBF1F201FB12000A2190FBF1F03030B5
-:1028B000C2B22046611CCCB203A90A544846FDF7B7
-:1028C000C9FD0A2190FBF1F201FB12003030C2B2C7
-:1028D0002046611CCCB203A90A54C2E0B049484664
-:1028E000FDF722FE48D84846FDF7B4FD42F21071CC
-:1028F00090FBF1F201FB12004FF47A7190FBF1F0C2
-:102900003030C2B22046611CCCB203A90A544846FA
-:10291000FDF7A0FD4FF47A7190FBF1F201FB12007C
-:10292000642190FBF1F03030C2B22046611CCCB281
-:1029300003A90A544846FDF78DFD642190FBF1F28E
-:1029400001FB12000A2190FBF1F03030C2B22046A8
-:10295000611CCCB203A90A544846FDF77BFD0A214D
-:1029600090FBF1F201FB12003030C2B22046611C34
-:10297000CCB203A90A5474E08A494846FDF7D4FD55
-:1029800034D84846FDF766FD4FF47A7190FBF1F2BA
-:1029900001FB1200642190FBF1F03030C2B22046FE
-:1029A000611CCCB203A90A544846FDF753FD6421CB
-:1029B00090FBF1F201FB12000A2190FBF1F03030A4
-:1029C000C2B22046611CCCB203A90A544846FDF7A6
-:1029D00041FD0A2190FBF1F201FB12003030C2B23E
-:1029E0002046611CCCB203A90A543AE06E4948461D
-:1029F000FDF79AFD21D84846FDF72CFD642190FB98
-:102A0000F1F201FB12000A2190FBF1F03030C2B26A
-:102A10002046611CCCB203A90A544846FDF71AFDB2
-:102A20000A2190FBF1F201FB12003030C2B22046C5
-:102A3000611CCCB203A90A5413E000214846FDF7FB
-:102A400073FD0ED84846FDF705FD0A2190FBF1F213
-:102A500001FB12003030C2B22046611CCCB203A987
-:102A60000A54BAF1000F6ADD072C68DA2E222046DC
-:102A7000611CCCB203A90A544846FDF7EBFC804622
-:102A8000FDF7DAFC07464946FDF7BCFB8146BAF183
-:102A9000010F1ED1082C1CDA43494846FDF7B5FB4F
-:102AA00081464846FDF722FD0022404BCDE900015A
-:102AB000FDF71BFC0746FDF7FAFC0A2190FBF1F23B
-:102AC00001FB12003030C2B22046611CCCB203A917
-:102AD0000A54BAF1020F32DB082C30DA3149484689
-:102AE000FDF793FB81464846FDF7B4FC642190FB5B
-:102AF000F1F201FB12000A2190FBF1F03030C2B27A
-:102B00002046611CCCB203A90A54082C17DA4846A7
-:102B1000FDF7ECFC0022254BCDE90001FDF7E5FBBC
-:102B20000746FDF7C4FC0A2190FBF1F201FB1200FD
-:102B30003030C2B22046611CCCB203A90A5422E054
-:102B400003A810F80B002038C0B20290782D02DDE7
-:102B50000025701CC6B200240DE0029800EB400076
-:102B6000134901EB4000005D05EBC6112144114AF9
-:102B70005054601CC4B2062CEFDBA81DC5B20BF18B
-:102B8000010000F0FF0B03A810F80B000028D7D1BC
-:102B900000BF3DE60000FA4600401C4600004042EF
-:102BA00000007A440000C842000020410000E03FDD
-:102BB0005A35000880280020F0B513460025002271
-:102BC00000241EE01E5D203EF5B27E2802DD0020BE
-:102BD0004E1CF1B200220EE005EB45060B4F07EB51
-:102BE0004606B65C00EBC1171744DFF824C00CF8AA
-:102BF0000760561CF2B2062AEEDB861DF0B2661C98
-:102C0000F4B21E5D002EDDD1F0BD00005A35000883
-:102C100080280020F0B5034614460022002000253D
-:102C200030E0665D203EF2B2782B02DD00234E1CC0
-:102C3000F1B200200CE000EB0216144FBE5D03EB76
-:102C4000C1170744DFF848C00CF80760461CF0B213
-:102C50000828F0DB00200EE000EB021608360B4FD0
-:102C6000BF5D4E1C03EBC6160644DFF824C00CF80B
-:102C70000670461CF0B20828EEDB03F10806F3B23A
-:102C80006E1CF5B2665D002ECBD1F0BD8237000818
-:102C9000802800202DE9F84306460D461746984641
-:102CA000DDF8209000240CE02819C3B2F019C2B25C
-:102CB0002819C1B23046CDF80090FFF787FC601CA0
-:102CC000C4B24445F0DBBDE8F88310B5AE20FFF791
-:102CD000C9FA2020FFF7C6FA1020FFF7C3FAC82070
-:102CE000FFF7C0FA0020FFF7BDFA1020FFF7BAFA8D
-:102CF0004020FFF7B7FA8120FFF7B4FAFF20FFF773
-:102D0000B1FAA120FFF7AEFAA620FFF7ABFAA82090
-:102D1000FFF7A8FA3F20FFF7A5FAA420FFF7A2FAD1
-:102D2000D320FFF79FFA0020FFF79CFAD520FFF78A
-:102D300099FAF020FFF796FAD920FFF793FA2220AC
-:102D4000FFF790FADA20FFF78DFA1220FFF78AFAE0
-:102D5000DB20FFF787FA2020FFF784FA8D20FFF7AA
-:102D600081FA1420FFF77EFAAF20FFF77BFAFFF716
-:102D700015FC10BD70B500242DE0002600200DE0EC
-:102D800000EBC4111D4A515C00EBC4121C4B9A5C51
-:102D9000914201D0012603E0411CC8B28028EFDB3C
-:102DA00000BFB6B104F1B001C8B2FFF75BFA012071
-:102DB000FFF758FA1020FFF755FA002507E005EB5A
-:102DC000C4110E4A505CFFF76AFA681CC5B2802D28
-:102DD000F5DB601CC4B2082CCFDB094807494FF46F
-:102DE000806203E011F8013B00F8013B131EA2F1E1
-:102DF0000104A2B2F6D100BF70BD000080280020FF
-:102E0000802C002010B5044604B910BD0020208598
-:102E1000A07D012808D1606A30B1218C89040A0C98
-:102E20000021606AFEF769FE00BFEEE72DE9F05F62
-:102E30000646884615469946DDE90B7BDDF828A055
-:102E40000EB1012100E0002108462921FDF780FC98
-:102E50004420FEF74BFE04460CB1012100E00021A6
-:102E600008462C21FDF774FC0120E0750020207637
-:102E7000C4F83C902584C4F840B0A786002D0CDD32
-:102E80002846FEF733FEE061E16909B1012100E067
-:102E9000002108463E21FDF75BFC002F0CDD384683
-:102EA000FEF724FE2063216B09B1012100E000211F
-:102EB00008464521FDF74CFC84F8158084F82CA0C9
-:102EC00066602046BDE8F09F10B5044604B910BD09
-:102ED000002060852046FFF795FF00BFF7E710B59B
-:102EE00004460CB1012100E00021084640F2D71150
-:102EF000FDF72EFC012084F838002169A068FDF759
-:102F00007DFC2069082865D2DFE800F06404111E0A
-:102F10002C3A485600BFA0680168C1F3400121B1B6
-:102F2000A0680221416000BF00BF00BF53E000BFA6
-:102F3000A0680168C1F3401121B1A068202141605F
-:102F400000BF00BF00BF46E000BFA0680168C1F33A
-:102F5000402129B1A0684FF40071416000BF00BF5B
-:102F600000BF38E000BFA0680168C1F3403129B15B
-:102F7000A0684FF40051416000BF00BF00BF2AE0CD
-:102F800000BFA0680168C1F3404129B1A0684FF4B7
-:102F90000031416000BF00BF00BF1CE000BFA0685F
-:102FA0000168C1F3405129B1A0684FF4001141609C
-:102FB00000BF00BF00BF0EE000BFA0680168C1F302
-:102FC000406129B1A0684FF00071416000BF00BFAF
-:102FD00000BF00E000BF00BF606800BF00BF00BFCF
-:102FE00000F10C0252E8002F42F0400100F10C0207
-:102FF00042E80013002BF3D100BF00BF206908286E
-:1030000065D2DFE800F06404111E2C3A485600BF78
-:10301000A0680168C1F3C00121B1A0680821416026
-:1030200000BF00BF00BF53E000BFA0680168C1F34C
-:10303000C01121B1A0688021416000BF00BF00BF66
-:1030400046E000BFA0680168C1F3C02129B1A068B3
-:103050004FF40061416000BF00BF00BF38E000BF17
-:10306000A0680168C1F3C03129B1A0684FF40041E4
-:10307000416000BF00BF00BF2AE000BFA068016838
-:10308000C1F3C04129B1A0684FF40021416000BFE5
-:1030900000BF00BF1CE000BFA0680168C1F3C051C1
-:1030A00029B1A0684FF40001416000BF00BF00BF1C
-:1030B0000EE000BFA0680168C1F3C06129B1A0683B
-:1030C0004FF00061416000BF00BF00BF00E000BFE3
-:1030D00000BF10BD0EB51348006808BB0020F021EA
-:1030E0000122114BCDE9002102900A4601210F482F
-:1030F000FFF79CFE0B4908600020096808700C4827
-:10310000084909688860052006490968C8600420E4
-:1031100004490968086100210248006800F0E2F8EB
-:103120000EBD000060000020673400080038014038
-:103130000000024038B5044604B938BD6068C16873
-:10314000C1F34011B9B160680168C1F3401191B198
-:10315000608D218C884202DB2046FFF7B5FE616856
-:103160004A68D2B2608D411C6185E1690A54002031
-:103170002076E0753FE06068C168C1F30011002966
-:1031800039D060680168C1F30011002933D0607D37
-:1031900001282BD1D4E902014A1E514B9A5C02440A
-:1031A0005268208C801A6085207DF8B9D4E902012C
-:1031B000FDF724FBE06B80B1608D00280DDD608D94
-:1031C000218C884209DC628D2078E36BE1699847A5
-:1031D000228C0021E069FEF790FC228CD4E90201E8
-:1031E000FDF746FBD4E90201FDF716FB00206085E0
-:1031F0006068FDF7DAFD6068C168C1F3801151B104
-:103200006068FDF738FE30B1206C08B1206C804753
-:103210006068FDF7D2FDA07D01285ED101256068C0
-:10322000C168C1F3002171B16068016801F001015A
-:1032300049B1022560680168009100BF41680091B2
-:1032400000BF00BF00BF6068FDF706FE68B16068A0
-:10325000FDF702FE48B1042560680168009100BFD7
-:103260004168009100BF00BF00BF6068FDF7F9FD35
-:1032700060B16068FDF7F5FD40B1606801680091DC
-:1032800000BF4168009100BF00BF00BF6068FDF74C
-:10329000EDFD68B16068FDF7E9FD48B11025606893
-:1032A0000168009100BF4168009100BF00BF00BFEE
-:1032B000012D11D0606A78B1618D491E88B2228DCE
-:1032C000616A01EB82014880228D616A01F8225017
-:1032D000218D491C218500BF00BF00BF2DE70000E4
-:1032E000D434000870B504460D46607D90B9A575CC
-:1032F000606800BF00BF00BF00F10C0252E8002F61
-:1033000042F0200100F10C0242E80013002BF3D13F
-:1033100000BF70E00020A0756068FDF746FD2169E0
-:10332000A068FDF76BFAD4E90201FDF767FA60685F
-:10333000011D0E463246D4E90201FDF7F5FAE269B5
-:10334000D4E90201FDF7B6FA228CD4E90201FDF7B7
-:103350008FFAD4E90201FDF76DFAD4E90201FDF715
-:103360005BFA606800BF00BF00BF00F1140252E8C2
-:10337000002F42F0400100F1140242E80013002B3C
-:10338000F3D100BF00BF606800BF00BF00BF00F105
-:103390000C0252E8002F42F0100100F10C0242E84A
-:1033A0000013002BF3D100BF00BF6068011D0E4663
-:1033B00032462169A068FDF7B7FA226B2169A0683F
-:1033C000FDF778FA2169A068FDF734FA606800BF5C
-:1033D00000BF00BF00F1140252E8002F42F080014C
-:1033E00000F1140242E80013002BF3D100BF00BF2C
-:1033F000012084F83800A07D012833D1606A68B9C3
-:10340000218C8800FEF772FB6062616A09B10121BC
-:1034100000E0002108468221FDF79AF9606800BFAC
-:1034200000BF00BF00F10C0252E8002F42F480718F
-:1034300000F10C0242E80013002BF3D100BF00BFE3
-:10344000606800BF00BF00BF00F1140252E8002F07
-:1034500042F0010100F1140242E80013002BF3D105
-:1034600000BF00BF70BD7047081C3044586C80001E
-:103470000000000404040000080000000800000828
-:103480000000000800020406080A0C000102030400
-:103490000506081C3044586C800000000004040439
-:1034A00000000800000008000008000000080002FA
-:1034B0000406080A0C0001020304050600000000CF
-:1034C00000000000010203040607080900000000D4
-:1034D00001020304081C3044586C80000000000402
-:1034E00004040000080000000800000800000008B4
-:1034F00000020406080A0C000102030405065F6CC2
-:10350000697374006C69737420616C6C20636F6DF7
-:103510006D616E6400000000000400000000000007
-:10352000080000000800000000200000000000006B
-:10353000081C3044586C80000000000404040000A3
-:10354000080000000800000800000008000204064F
-:10355000080A0C0001020304050600000000000038
-:103560000000002F000000000700070000147F1477
-:103570007F1400242A7F2A12006264081323003675
-:103580004955225000000503000000001C224100A4
-:10359000000041221C000014083E08140008083EE8
-:1035A0000808000000A060000008080808080000E3
-:1035B00060600000002010080402003E5149453EB2
-:1035C0000000427F400000426151494600214145D0
-:1035D0004B31001814127F10002745454539003C37
-:1035E0004A49493000017109050300364949493605
-:1035F00000064949291E00003636000000005636F4
-:1036000000000008142241000014141414140000D7
-:103610004122140800020151090600324959513E65
-:10362000007C1211127C007F49494936003E41411D
-:103630004122007F4141221C007F49494941007FCE
-:1036400009090901003E4149497A007F0808087FBD
-:103650000000417F4100002040413F01007F0814ED
-:103660002241007F40404040007F020C027F007FEB
-:103670000408107F003E4141413E007F09090906D0
-:10368000003E4151215E007F091929460046494903
-:1036900049310001017F0101003F4040403F001FD0
-:1036A0002040201F003F4038403F0063140814634F
-:1036B00000070870080700615149454300007F4139
-:1036C000410000552A552A55000041417F00000461
-:1036D000020102040040404040400000010204009A
-:1036E000002054545478007F4844443800384444FF
-:1036F000442000384444487F00385454541800088B
-:103700007E0901020018A4A4A47C007F08040478A8
-:103710000000447D4000004080847D00007F102830
-:1037200044000000417F4000007C04180478007CC5
-:103730000804047800384444443800FC2424241845
-:103740000018242418FC007C080404080048545481
-:10375000542000043F444020003C4040207C001C9A
-:103760002040201C003C4030403C004428102844AD
-:10377000001CA0A0A07C004464544C4414141414F5
-:103780001414000000000000000000000000000011
-:103790000000000000F800000000000000333000CE
-:1037A000000000100C06100C0600000000000000D5
-:1037B000000040C07840C0784000043F04043F044B
-:1037C0000400007088FC08300000001820FF211E53
-:1037D0000000F008F000E018000000211C031E218A
-:1037E0001E0000F00888700000001E212324192705
-:1037F000211010160E000000000000000000000064
-:103800000000000000E0180402000000000718207B
-:10381000400000020418E0000000004020180700EB
-:103820000000404080F0804040000202010F010291
-:103830000200000000F0000000000101011F010172
-:103840000100000000000000000080B070000000D7
-:103850000000000000000000000000010101010163
-:1038600001010000000000000000003030000000F6
-:1038700000000000000080601804006018060100CD
-:10388000000000E010080810E000000F10202010D9
-:103890000F00001010F8000000000020203F202042
-:1038A00000000070080808887000003028242221D9
-:1038B000300000300888884830000018202020118F
-:1038C0000E000000C02010F8000000070424243F70
-:1038D000240000F808888808080000192120201119
-:1038E0000E0000E0108888180000000F1120201141
-:1038F0000E0000380808C83808000000003F00002B
-:1039000000000070880808887000001C2221212215
-:103910001C0000E010080810E00000003122221115
-:103920000F00000000C0C0000000000000303000A8
-:103930000000000000800000000000008060000027
-:103940000000000080402010080000010204081060
-:10395000200040404040404040000404040404046F
-:10396000040000081020408000000020100804021D
-:103970000100007048080808F0000000003036011F
-:103980000000C030C828E810E000071827242314DE
-:103990000B000000C038E0000000203C230202279A
-:1039A000382008F8888888700000203F20202011E7
-:1039B0000E00C03008080808380007182020201022
-:1039C000080008F808080810E000203F2020201018
-:1039D0000F0008F88888E8081000203F20202320E6
-:1039E000180008F88888E8081000203F200003002D
-:1039F0000000C03008080838000007182020221EE8
-:103A0000020008F808000008F808203F2101012101
-:103A10003F20000808F8080800000020203F202070
-:103A2000000000000808F8080800C08080807F00BF
-:103A3000000008F888C028180800203F2001263818
-:103A4000200008F8080000000000203F202020206F
-:103A5000300008F8F800F8F80800203F003F003F69
-:103A6000200008F830C00008F808203F20000718A0
-:103A70003F00E01008080810E0000F102020201080
-:103A80000F0008F808080808F000203F2101010194
-:103A90000000E01008080810E0000F182424385037
-:103AA0004F0008F8888888887000203F2000030CA9
-:103AB00030200070880808083800003820212122B2
-:103AC0001C00180808F8080818000000203F200013
-:103AD000000008F808000008F808001F2020202037
-:103AE0001F000878880000C83808000007380E0159
-:103AF0000000F80800F80008F800033C0700073C45
-:103B00000300081868808068180820302C03032CF4
-:103B100030200838C800C83808000000203F2000C6
-:103B2000000010080808C838080020382621202086
-:103B30001800000000FE020202000000007F40406A
-:103B40004000000C30C000000000000000010638FA
-:103B5000C00000020202FE000000004040407F0062
-:103B60000000000004020202040000000000000047
-:103B70000000000000000000000080808080808045
-:103B8000808000020204000000000000000000002D
-:103B90000000000080808080000000192422222282
-:103BA0003F2008F8008080000000003F1120201115
-:103BB0000E000000008080800000000E11202020F8
-:103BC0001100000000808088F800000E11202010F5
-:103BD0003F200000808080800000001F22222222DF
-:103BE0001300008080F0888888180020203F202063
-:103BF00000000000808080808000006B949494938B
-:103C0000600008F8008080800000203F2100002034
-:103C10003F2000809898000000000020203F2020D6
-:103C20000000000000809898000000C08080807F25
-:103C3000000008F8000080808000203F24022D3022
-:103C40002000000808F8000000000020203F20208D
-:103C500000008080808080808000203F20003F2006
-:103C6000003F8080008080800000203F21000020F5
-:103C70003F200000808080800000001F2020202046
-:103C80001F00808000808000000080FFA1202011A4
-:103C90000E000000008080808000000E112020A017
-:103CA000FF80808080008080800020203F212000D5
-:103CB00001000000808080808000003324242424C0
-:103CC0001900008080E0808000000000001F20209C
-:103CD00000008080000000808000001F2020201055
-:103CE0003F20808080000080808000010E30080628
-:103CF000010080800080008080800F300C030C3039
-:103D00000F0000808000808080000020312E0E3166
-:103D10002000808080000080808080818E70180666
-:103D2000010000808080808080000021302C2221D2
-:103D3000300000000000807C020200000000003F14
-:103D4000404000000000FF00000000000000FF00F5
-:103D500000000002027C800000000040403F0000A4
-:103D6000000000060101020204040000000000003F
-:103D700000000003050911FF118905C300E000F0F0
-:103D800000F8000000000000004428FF11AA4400D1
-:103D90000000000000000000000000000000000023
-:103DA0000000000000000000000000000000000013
-:103DB0000000000000000000000000000000000003
-:103DC00000000000000000000000000083013844F3
-:103DD000829292740183000000000000007C44C7BE
-:103DE000017D7D7D7D017D7D7D7D017D7D7D7D01F3
-:103DF000FF000000000000010001000100010001BF
-:103E000000010000000000000000000101000000AF
-:103E100000000000000000000000000000000000A2
-:103E20000000000000000000000000000000000092
-:103E30000000000000000000000000000000000082
-:103E40000000000000000000000000000101000070
-:103E5000000000000101000000000000000000015F
-:103E60000101010101010101010101010101010142
-:103E70000100000000000000000000404040404001
-:103E800000006D6D6D6D6D00006060606060000031
-:103E900040404040400000000000000000000000E2
-:103EA0000000000000000000000000000000000012
-:103EB0000000000000000000000000000000000002
-:103EC00000000000000000000000000000000000F2
-:103ED00000000000000000000000000000000000E2
-:103EE00000000000000000000000000000000000D2
-:103EF0000000000000000000000000DBDBDBDBDB7B
-:103F00000000DBDBDBDBDB0000DBDBDBDBDB000023
-:103F1000DBDBDBDBDB0000DADADADADA0000D8D868
-:103F2000D8D8D80000C0C0C0C0C00000C0C0C0C049
-:103F3000C00000C0C0C0C0C00000C0C0C0C0C00041
-:103F400000808080808000000000000000000000F1
-:103F50000000000000000000000000000000000061
-:103F60000000000000000000000000000000000051
-:103F70000000000000000000000000060606060623
-:103F800000000606060606000006060606060000F5
-:103F900006060606060000060606E6662000060679
-:103FA00086060600000606060686000006060606C9
-:103FB000060000868686868680808686068686C07F
-:103FC000C08686860606D0307606060606000006FF
-:103FD0000606060600000606060606000006060699
-:103FE00006060000060606060600000000000000A7
-:103FF00000000000000000000000000000000000C1
-:1040000000000000000000000000000000000000B0
-:10401000000000000000000000000000601C00FE26
-:1040200000010200C41820029E63B20E00FF8181CD
-:10403000FF00008040300F00000000FF0023EAAACC
-:10404000BFAAEA033F00FF000000000000000000DC
-:104050000000000000000000000000000000000060
-:104060000000000000000000000000000000000050
-:104070000000000000808080000000000080808040
-:104080000000000000000000000000000000000030
-:10409000000000000000000000000E0C08000001FD
-:1040A0000101010100000001000000010081808089
-:1040B0008180818080808001010101000000010079
-:1040C000000001000101090C0E00000000000000CA
-:1040D00000000000000000000000C0C0C0C0C0C060
-:1040E000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0D0
-:1040F000C000001E21404050215E001E2140405063
-:10410000215E000000000000000000000000000030
-:10411000000000000000000000000000000000009F
-:1041200000000000000000000000000000FFFFC1D0
-:10413000C1FFFFC1C1FFFF00000000000000000040
-:10414000000000000000000000000000000000006F
-:1041500000000000000000000000FFFF80FCF3EF03
-:10416000F3FC80FF80EEEEEEF5FBFF9CBEB6B6885A
-:10417000FF000000944100080000002074000000CF
-:104180008C1A000808420008740000200C3400005B
-:104190009C1A00080024F400000000000000000049
-:1041A000000000000000000000000000000000000F
-:1041B00000000000000000000000000000000000FF
-:1041C00000000000000000000000000000000000EF
-:1041D0000000000035240008212500088000002090
-:1041E00000C00120802000203C00002000000000D2
-:1041F0000000000000000000FE3400080435000844
-:08420000C6E533B4C91A000839
+:1007F0000140009100BF08BD0010024008B5054946
+:1008000089690143034A9161114689690140009158
+:1008100000BF08BD0010024010B54A1E044B9A5C90
+:10082000825822F001034A1E014CA25C835010BD85
+:10083000F846000810B54A1E044B9A5C825842F0F4
+:1008400001034A1E014CA25C835010BDF84600080B
+:1008500010B54A1E044B9A5C825842F002034A1EAD
+:10086000014CA25C835010BDF846000830B54B1E09
+:10087000054CE35CC35823F4405313434C1E024D14
+:100880002C5D035130BD0000B646000830B54B1E4C
+:10089000064CE35C03445B686FF30F0313434C1E89
+:1008A000024D2C5D0444636030BD0000F846000832
+:1008B00030B54B1E054CE35CC35844F21004A3430F
+:1008C00013434C1E014D2C5D035130BDB64600084C
+:1008D00010B54B1E024CE35C0344DA6010BD00000F
+:1008E000F846000830B54B1E054CE35CC35823F0B6
+:1008F000800313434C1E024D2C5D035130BD00009C
+:10090000B646000830B54B1E054CE35CC35823F4D3
+:10091000406313434C1E024D2C5D035130BD00005B
+:10092000B646000830B54B1E054CE35CC35823F0B7
+:10093000200313434C1E024D2C5D035130BD0000BB
+:10094000B646000810B54B1E024CE35C03449A60A7
+:1009500010BD0000F846000830B54B1E054CE35CA6
+:10096000C35823F0400313434C1E024D2C5D03512A
+:1009700030BD0000B646000830B54B1E054CE35CA8
+:10098000C35823F4407313434C1E024D2C5D035196
+:1009900030BD0000B64600082DE9F04102460B4686
+:1009A0001868C0F30F2595FAA5F0B0FA80F480E03E
+:1009B0000120A040284000287AD0082C04D240F220
+:1009C000011000FA04F106E0A4F108004FF001164E
+:1009D000864046F08061586808280ED11869D668AC
+:1009E00026EA11260F0A97FAA7F7B7FA87F700FA4F
+:1009F00007F73E43D66000BF00BF586802EB1166A0
+:100A000091FAA1FCBCFA8CFC4FEA8C084FF00F0C59
+:100A10000CFA08FC376827EA0C0791FAA1FCBCFA2B
+:100A20008CFC4FEA8C0C00FA0CFC47EA0C07376090
+:100A300000BF5868012802D05868092838D1986842
+:100A400002EB116691FAA1FCBCFA8CFC4FEA8C080F
+:100A50004FF0030C0CFA08FC376827EA0C0791FAF0
+:100A6000A1FCBCFA8CFC4FEA8C0C00FA0CFC47EAA7
+:100A70000C07376000BFD86802EB116691FAA1FC41
+:100A8000BCFA8CFC4FEA8C084FF0040C0CFA08FC02
+:100A9000376827EA0C0791FAA1FCBCFA8CFC4FEAF4
+:100AA0008C0C00FA0CFC47EA0C07376000BF00BF53
+:100AB000641C25FA04F000287FF47AAFBDE8F081C9
+:100AC00002469068C1F30F231840C1F30F239842E8
+:100AD00001D1012070470020FCE7C1F30F224261E1
+:100AE0007047C1F30F2242617047C1F30F220261C8
+:100AF000704770B500EB116391FAA1F5B5FA85F571
+:100B0000AE000F25B5401C68AC4391FAA1F5B5FACB
+:100B100085F5AD0002FA05F52C431C6070BD0000A0
+:100B200002480068401C014908607047200000200E
+:100B30004FF47A71B0FBF1F2521E4FF0E0235A618C
+:100B400000229A6105221A6100BF704710B5044661
+:100B500000F038FE2060206800F000FE60606068F1
+:100B600000F00CFEA060606800F01AFEE06010BDAE
+:100B7000016841F040010160704730B50246012331
+:100B800000BF1068C0F3801038BBD1E900042043D7
+:100B90008C682043CC6820430C6920434C69204377
+:100BA0008C692043CC6920430C6A204314684FF6BB
+:100BB000BF75AC4320431060506820F004004C69BE
+:100BC00040EA14405060086AB0F5005F04D1486AFA
+:100BD00084B2146100BF00BF0023184630BD00007E
+:100BE000014908607047000000000020016821F002
+:100BF000800101607047816821F080018160704749
+:100C0000016841F0010101607047C16841F00101D4
+:100C1000C160704710B5024613681C48824208D074
+:100C2000B2F1804F05D01A48824202D01948824260
+:100C300004D123F070004C6840EA04031348824258
+:100C400008D0B2F1804F05D01148824202D011483D
+:100C5000824204D123F44070CC6840EA040313605C
+:100C60008868D06200BF0888906200BF074882424F
+:100C700003D10869106300BF00BF00BF506940F096
+:100C80000100506100BF002010BD0000002C014099
+:100C9000000400400008004001460869C0F340001D
+:100CA000704701460869C0F3800070470146086933
+:100CB000C0F3C000704701460869C0F300107047D8
+:100CC0000146086900F0010070470146C868C0F39A
+:100CD000400070470146C868C0F380007047014675
+:100CE000C868C0F3C00070470146C868C0F3001070
+:100CF00070470146C86800F00100704770B50246B1
+:100D0000012901D1002416E0042901D1012412E0B7
+:100D1000102901D102240EE0402901D103240AE068
+:100D2000B1F5807F01D1042405E0B1F5806F01D1D8
+:100D3000052400E006242346064CE55C02F1180475
+:100D400028190468044DEE5C0425B5402C4304606A
+:100D500070BD0000934600089A46000870B5024630
+:100D6000012901D1002416E0042901D1012412E057
+:100D7000102901D102240EE0402901D103240AE008
+:100D8000B1F5807F01D1042405E0B1F5806F01D178
+:100D9000052400E006242346064CE55C02F1180415
+:100DA00028190468044DEE5C0825B5402C43046006
+:100DB00070BD0000934600089A4600082DE9F041F6
+:100DC00006460C4615460127012C08D0102C0CD0E5
+:100DD000B4F5807F0FD0B4F5805F18D111E02946BB
+:100DE000304600F0D3FB074612E02946304600F0BB
+:100DF00009FC07460CE02946304600F045FC074652
+:100E000006E02946304600F07BFC074600E000BFC4
+:100E100000BF3846BDE8F08181637047826844F2C4
+:100E200007039A430A4382607047426822F07002C7
+:100E30000A434260704708B50168009100BF4168ED
+:100E4000009100BF08BD6FF04001016070470000D5
+:100E50002DE9FF4104460D4601270026204600F0FB
+:100E600055F8002833D1E9686868084329690843C0
+:100E7000E16841F20C6291430843E060A86821698F
+:100E800021F440510143216100BF6869616921F487
+:100E900040710143616100BF6846FFF757FE0E488D
+:100EA000844201D1039E08E00C48844201D1029E95
+:100EB00003E00B48844200D1029E46B1286830B15D
+:100EC0000027314620462A6800F025F800BF384642
+:100ED00004B0BDE8F081000000380140004400404B
+:100EE0000048004001460868C0F3400070470146D2
+:100EF0000868C0F38000704701460868C0F3C0006E
+:100F0000704701460868C0F3801070470146C86802
+:100F1000C0F34030704770B501EBC10303EB011320
+:100F20009400B3FBF4F301EBC10404EB011495004E
+:100F3000B4FBF5F46425B4FBF5F404EBC40505EB50
+:100F40000414A3EB8403322404EB03136424B3FBE3
+:100F5000F4F303F0F00301EBC10404EB011495007A
+:100F6000B4FBF5F46425B4FBF5F403EB041401EBD6
+:100F7000C10303EB01139500B3FBF5F301EBC105CE
+:100F800005EB01159600B5FBF6F56426B5FBF6F505
+:100F900005EBC50606EB0515A3EB8503322505EB2E
+:100FA00003136425B3FBF5F303F00F0323449BB253
+:100FB000836070BD38B50120144949690143134A63
+:100FC0005161114649690140009100BF00BF00F026
+:100FD000C3FD05460022114600F098FA044621465A
+:100FE0000E2000F0C9FD0E2000F09CFD00F0B4FDC5
+:100FF00005460022114600F089FA044621460F20DA
+:1010000000F0BAFD0F2000F08DFD38BD0010024049
+:1010100000B585B014216846FFF78DF81020FFF762
+:10102000C3FB2020FFF7C0FB0420FFF7BDFB082017
+:10103000FFF7BAFB26492748FFF74FFD41F6180195
+:101040002548FFF74AFD25492548FFF746FD20487A
+:101050000090012001900220029000200390694638
+:101060001C48FFF799FC1F4800900020019069463A
+:101070001848FFF791FC1C48009000200190694639
+:101080001548FFF789FC41F61800009001200190F7
+:10109000022002900020039069460F48FFF77CFC75
+:1010A000124800900020019069460D48FFF774FC3B
+:1010B0000A48009001200190032002900020039034
+:1010C0000120049069460648FFF766FC05B000BDA4
+:1010D00020002004001001400008014030003004CE
+:1010E000000C0140C000C0049D059904FFFFCF041F
+:1010F00000B58FB0282105A8FFF71DF81421684618
+:10110000FFF719F84FF48050FFF75CFB0420FFF75E
+:1011100059FB4AF2A00000900920019003200290A0
+:101120000020039069461348FFF736FC44F2400064
+:1011300000900420019069460E48FFF72DFC002026
+:1011400005904FF4827006900020079002200890CE
+:101150000120099040020A9020200B9000200C9062
+:101160000D900A200E9005A90348FFF706FD0FB069
+:1011700000BD0000000801400030014030B585B0DE
+:1011800014216846FEF7D7FF4FF40060FFF728FBF5
+:1011900000F0EAFC05460022032100F0D7F90446DE
+:1011A0002146192000F0FCFC192000F0C8FC41F693
+:1011B0001F40ADF800000020019063200290002045
+:1011C0000390049069460948FFF724FD0748FFF79C
+:1011D0000DFD00210548FFF721FE00210348FFF720
+:1011E00024FE0248FFF707FD05B030BD002C01408A
+:1011F00000B593B014210EA8FEF79DFF202106A88C
+:10120000FEF799FF142101A8FEF795FF0120FFF7D3
+:10121000BDFA0020ADF838000F9041F61F40109045
+:10122000002011900EA94FF08040FFF7F3FC00BFA3
+:101230004FF08040006840F080004FF0804108602F
+:1012400000BF00214FF08040FFF7E8FD1021880625
+:10125000FFF784FD70200690002007900890099009
+:1012600002200A9006AA10214007FFF7A7FD1021CF
+:101270008806FFF743FD00214FF08040FFF7D5FDC2
+:101280004FF08040FFF7B7FC0420FFF7A9FA40F2C7
+:101290000220019009200290022003900020049077
+:1012A00001A90248FFF778FB13B000BD0008014018
+:1012B00030B585B014216846FEF73DFF0220FFF7E8
+:1012C00065FA00F051FC05460022032100F03EF9CA
+:1012D000044621461D2000F063FC1D2000F02FFC79
+:1012E00041F61F40ADF800000020019063200290FD
+:1012F0000020039069460948FFF78CFC0748FFF778
+:1013000075FC00210548FFF789FD00210348FFF720
+:101310008CFD0248FFF76FFC05B030BD00040040B3
+:101320002DE9F0418CB01C2105A8FEF704FF142123
+:101330006846FEF700FF4FF48040FFF75FFA042095
+:10134000FFF75CFA684800900920019003200290A2
+:101350000020039069466548FFF71EFB6448009033
+:101360000420019069466148FFF716FB0022052121
+:101370006048FFF79DFA002205215E48FFF776FAE4
+:10138000002205215B48FFF7CDFA002205215948CC
+:10139000FFF7E2FA802205215648FFF7A3FA002260
+:1013A00005215448FFF7E8FA002205215148FFF7CC
+:1013B000A9FA102204214F48FFF77AFA00220421EB
+:1013C0004C48FFF753FA002204214A48FFF7AAFAD3
+:1013D000002204214748FFF7BFFA80220421454834
+:1013E000FFF780FA002204214248FFF7C5FA0022E5
+:1013F00004214048FFF786FA25213F4B1B68C3F3C1
+:101400000220052400250346C3F1070CBCF1040F9C
+:1014100002D94FF0040C01E0C3F1070C674603F159
+:10142000040CBCF1070F02D24FF0000C01E0A3F155
+:10143000030C66464FF0010C0CFA07FCACF1010CF2
+:101440000CEA040C0CFA06FC4FF0010808FA06F846
+:10145000A8F1010808EA05084CEA080200BF0029C3
+:1014600004DB1007030E2548435407E01007040E61
+:1014700021480C3001F00F031B1FC45400BF25206E
+:10148000002809DB00F01F0201219140420992006F
+:1014900002F1E022C2F8001100BF4FF4E1300590E4
+:1014A00000200690079008900C20099000200A90D8
+:1014B0000B9005A91248FFF7CBFC00BF104800694C
+:1014C00020F490400E4908610846406920F02A0047
+:1014D000486100BF00BF0846C06840F40050C860C3
+:1014E00000BF0CB0BDE8F08102000204000801401A
+:1014F00004000404000002400CED00E000E400E001
+:101500000038014000BFFEE700BFFEE7F0B503462C
+:101510000C4603F00701C1F10700042801D904209B
+:1015200001E0C1F107000646081D072801D200208E
+:1015300000E0C81E05460120B040401E2040A840E3
+:101540000127AF407F1E17403843F0BDF0B503467A
+:101550000C4603F00701C1F10700042801D904205B
+:1015600001E0C1F107000646081D072801D200204E
+:1015700000E0C81E05460120B040401E2040A840A3
+:101580000127AF407F1E17403843F0BD70B50246BB
+:10159000106A20F001001062136A5568946924F003
+:1015A000030424F070000E6840EA060423F00200F1
+:1015B0000E6940EA060323F001004E6840EA060384
+:1015C0000F48824213D123F008004E6940EA860397
+:1015D00023F004008E6840EA860325F480708E694B
+:1015E00040EA060525F40070CE6940EA46055560DC
+:1015F0009461C868506300BF1362002070BD000092
+:10160000002C01402DE9F04104460D46206A20F0EF
+:1016100010002062266AD4F80480A76927F4407776
+:1016200027F4E040296840EA012726F020002969D4
+:1016300040EA011626F01000696840EA01161148D8
+:10164000844213D126F08000696940EA811626F0B1
+:101650004000A96840EA811628F48060A96940EA40
+:10166000810828F40060E96940EAC108C4F80480F0
+:10167000A7612046E968FFF7CFFB26620020BDE89E
+:10168000F0810000002C014070B50246106A20F481
+:1016900080701062136A5568D46924F0030424F042
+:1016A00070000E6840EA060423F400700E6940EAF8
+:1016B000062323F480704E6840EA06230F488242D6
+:1016C00013D123F400604E6940EA862323F480603E
+:1016D0008E6840EA862325F480508E6940EA06151C
+:1016E00025F40050CE6940EA46155560D461C868BB
+:1016F000D06300BF1362002070BD0000002C0140C9
+:1017000070B50246106A20F480501062146A556861
+:10171000D36923F4407323F4E0400E6840EA0623C3
+:1017200024F400500E6940EA063424F480504E68D8
+:1017300040EA06340748824204D125F480408E698D
+:1017400040EA86155560D361C868106400BF146212
+:10175000002070BD002C014070470000014600BF12
+:101760000448406800F0F0000009034A125C21FAC6
+:1017700002F0704700100240E0460008014600BF3A
+:101780000548406800F4E060044A02EB102002784B
+:1017900021FA02F07047000000100240F0460008F5
+:1017A000014600BF0548406800F46050044A02EB5F
+:1017B000D020027821FA02F07047000000100240A9
+:1017C000F046000810B5002400BF0B48406800F048
+:1017D0000C0020B1042804D0082808D103E0074CED
+:1017E00007E0064C05E000F00BF8044601E0034C6E
+:1017F00000BF00BF204610BD0010024000127A005A
+:101800000021002200BF1148406800F480300246E9
+:101810001AB1B2F5803F0CD101E00D490BE000BFD9
+:101820000A484068C0F34040401C0A4BB3FBF0F14B
+:1018300001E0074900BF00BF00BF0448406800F452
+:101840007010022303EB90404843704700100240A1
+:1018500000093D0000127A007047704710B5022061
+:101860003749096821F007010143354A116000BF7B
+:1018700000BF00BF3248006800F007000228F8D11E
+:1018800000BF3048006840F480302E49086000BF37
+:1018900000BF00BF2B480068C0F340400028F8D0CC
+:1018A0004FF480304FF4E011264A526822F47C1243
+:1018B00000F440330B431A43224B5A6000BF00BF71
+:1018C0001846006840F080701946086000BF00BFED
+:1018D00000BF1C480068C0F340600028F8D000201A
+:1018E0001849496821F0F0010143164A516000BFD0
+:1018F00010151146496821F4E0610143516000BFB1
+:1019000000201146496821F460510143516000BF35
+:1019100002201146496821F003010143516000BFD4
+:1019200000BF00BF0748406800F00C000828F8D14D
+:101930000548FFF7FDF80448FFF752F910BD000015
+:10194000002002400010024000A24A04704700003C
+:1019500010B53148FFF7B4F901285CD100BF2E481B
+:10196000FFF79AF901280AD12B48FFF7AEF90128B1
+:1019700005D100BF001F2849086100BF00BF2648ED
+:10198000FFF78FF901280AD12348FFF7A3F90128AF
+:1019900005D100BF801F2049086100BF00BF1E485D
+:1019A000FFF784F901280BD11B48FFF798F90128AC
+:1019B00006D100BF6FF008001749086100BF00BFE3
+:1019C0001548FFF778F901280BD11348FFF78CF978
+:1019D000012806D100BF6FF010000F49086100BF59
+:1019E00000BF0D48FFF76CF901280AD10A48FFF73C
+:1019F00080F9012805D100BFC01E0749086100BF5A
+:101A000000BF00BFFFF78CF800BF04480068401C0F
+:101A10000249086000BF10BD002C014058000020A2
+:101A200010B52D48FFF74CF9012853D100BF2A48C3
+:101A3000FFF732F901280AD12748FFF746F90128B4
+:101A400005D100BF001F2449086100BF00BF224824
+:101A5000FFF727F901280AD11F48FFF73BF90128B2
+:101A600005D100BF801F1C49086100BF00BF1A4894
+:101A7000FFF71CF901280BD11748FFF730F90128AF
+:101A800006D100BF6FF008001349086100BF00BF16
+:101A90001148FFF710F901280BD10F48FFF724F97F
+:101AA000012806D100BF6FF010000B49086100BF8C
+:101AB00000BF0948FFF704F901280AD10648FFF7DB
+:101AC00018F9012805D100BFC01E0349086100BFF5
+:101AD00000BF00BF10BD00000004004010B5024868
+:101AE000006802F039FC10BD5C00002000BFFEE77A
+:101AF0000FB47CB50C0009AD01D0611E00E00021DF
+:101B0000CDE90001064B6A462946089800F020F905
+:101B1000002C02D0009A002111707CBC5DF814FBEF
+:101B200005230008002809DB00F01F020121914075
+:101B30004209920002F1E022C2F800117047002829
+:101B400009DB00F01F02012191404209920002F1DD
+:101B5000E022C2F80011704702480068C0F302207A
+:101B6000704700000CED00E002480068C0F302205E
+:101B7000704700000CED00E010B5002804DB0A07F8
+:101B8000130E054A135406E00A07140E034A00F028
+:101B90000F031B1FD45410BD00E400E018ED00E05B
+:101BA00010B5002804DB0A07130E054A135406E09B
+:101BB0000A07140E034A00F00F031B1FD45410BD74
+:101BC00000E400E018ED00E002E008C8121F08C1C0
+:101BD000002AFAD170477047002001E001C1121FAE
+:101BE000002AFBD1704700002DE9F04704460D465E
+:101BF00090461F46DDE908690CB1012100E0002193
+:101C000008468821FEF7A4FD0DB1012100E0002166
+:101C100008468921FEF79CFDA16D09B1012100E074
+:101C2000002108468A21FEF793FD6567C4F8788095
+:101C3000E667012084F8800084F881000FB1C4F8C1
+:101C40008470B9F1000F01D0C4F88890A16D01F142
+:101C50000C0000BF711E114A515C2944886000BF0E
+:101C600000BF0120686000BF00BF0220686000BFA5
+:101C700000BF701E1146085C285840F00201701E1B
+:101C8000105C295000BFA06D416841F00201416025
+:101C900000BFA06DFEF76CFFBDE8F087224700088B
+:101CA000014601F1100000E0001D02681AB9024A65
+:101CB00012689042F8D370473400002070B5044693
+:101CC0000D460CB1012100E0002108467E21FEF7FF
+:101CD0003FFD0DB1012100E0002108467F21FEF704
+:101CE00037FD002084F85C00A5652846FEF740FF1C
+:101CF00070BD000010B50648046803E02046FFF7F9
+:101D0000CFFF0446034800688442F7D310BD0000AB
+:101D1000300000203400002010B504462146002089
+:101D200000F0F8FF10BD10B501E000F8011B131E14
+:101D3000A2F10104A2B2F8D110BD10B501E000F883
+:101D4000011B131EA2F10104A2B2F8D110BD0000C4
+:101D50002DE9FF4F8DB00F460546002606E02528E9
+:101D60000BD0DDE90F1290476D1C761C28780028F7
+:101D7000F5D111B03046BDE8F08F0024A246A1464F
+:101D80000122E94900E0044315F8013F203B02FA33
+:101D900003F00842F7D128782A2810D06FF02F02DC
+:101DA0002878A0F13001092914D80AEB8A0102EB46
+:101DB000410144F0020400EB010A6D1CF0E701CF81
+:101DC0005FEA000A03D544F40054CAF1000A44F063
+:101DD00002046D1C28782E2817D115F8010F44F045
+:101DE00004042A280ED06FF02F022878A0F13001C9
+:101DF00009290AD809EB890102EB410100EB01092D
+:101E00006D1CF2E757F8049B6D1C28786C280FD0E6
+:101E100006DC4C2817D068280DD06A2814D104E0BD
+:101E2000742810D07A280FD10DE044F400140AE091
+:101E300044F4801401E044F440146978814202D1F2
+:101E400004F580146D1C6D1C28786E281ED00CDCE7
+:101E5000632830D004DC00288BD0582811D19FE0B3
+:101E6000642867D069280CD164E073282DD004DC85
+:101E70006F2872D0702804D194E075286ED078282D
+:101E80006DD0DDE90F129047761C4BE1C4F3025090
+:101E9000022806D0032809D0042801CF09D0066003
+:101EA00040E101CFF117C0E900613BE101CF0680BD
+:101EB00038E1067036E117F8040B8DF800000020B9
+:101EC0008DF80100EB46012003E057F804BB4FF00A
+:101ED000FF3061074FF0000102D40DE008F101016D
+:101EE000884649450FDA8045F8DB1BF808100029C1
+:101EF000F4D108E008F1010188468142FADB1BF8C1
+:101F000008100029F6D1DDE90F23AAEB080081466D
+:101F1000214600F031F9304400EB080604E0DDE929
+:101F20000F121BF8010B9047B8F10108F7D22146B8
+:101F30004846F2E00A21C4F302524FF0000B089128
+:101F4000022A04D001CFC117032A09D00AE0FF1DDD
+:101F500027F00707F7E8020108E02CE01EE01FE089
+:101F600000B2C117042A01D140B2C117021E71F19B
+:101F7000000206DA0023D0EB030063EB01012D22FF
+:101F800002E0220504D52B228DF82420012203E053
+:101F9000E20701D02022F7E7904653E00A210BE048
+:101FA000102109E010214FF0000B44F004044FF021
+:101FB0000809089103E008214FF0000B0891C4F3D1
+:101FC0000252022A04D001CF0021032A06D006E0E3
+:101FD000FF1D27F00707F7E8020103E080B2042A9B
+:101FE00000D1C0B24FF0000822072BD52A78702A02
+:101FF00007D0DDF820C08CF0100C5CEA0B0C05D08B
+:102000000EE040228DF82420012208E050EA01036E
+:1020100006D030238DF824308DF8252002229046FA
+:10202000089B83F0080353EA0B030BD150EA01022B
+:1020300001D1620706D530228DF824204FF0010827
+:10204000A9F101092A78582A04D038A20B9208AACB
+:102050000A920BE03AA2F9E75B46089AFEF76EFA9D
+:102060000B9B9B5C0A9A521E0A92137050EA010263
+:10207000F2D10A98ADEB000000F1200B600702D509
+:1020800024F4803401E04FF00109D94502DDA9EBC9
+:102090000B0000E0002000EB0B0141440890AAEB8C
+:1020A000010AE00306D4DDE90F232146504600F083
+:1020B00063F806444FF0000908E009A911F8090087
+:1020C000DDE90F12904709F10109761CC145F4DBE7
+:1020D000E0030CD5DDE90F232146504600F04CF813
+:1020E000064404E0DDE90F1230209047761C089981
+:1020F000481E08900029F5DC08E00A980A99007843
+:10210000491C0A91DDE90F129047761CBBF10001D2
+:10211000ABF1010BF1DC21465046DDE90F2300F065
+:1021200019F806446D1C21E60928010030313233CC
+:102130003435363738396162636465660000000003
+:1021400030313233343536373839414243444546ED
+:10215000000000002DE9F041044600251E46174608
+:10216000880404D405E039462020B0476D1C641E65
+:10217000F9D52846BDE8F0812DE9F0410446002557
+:102180001E469046C80301D5302700E0202788046A
+:1021900004D505E041463846B0476D1C641EF9D5AC
+:1021A0002846BDE8F0810FB4DDE900108A68C0F36D
+:1021B0000F231A40C0F30F239A4201D1012200E0FD
+:1021C0000022D0B204B070477CB504460CB10121A6
+:1021D00000E000210846CF21FEF7BAFAA169D1E953
+:1021E0000401CDE90001A5696E6995E80F00B047CB
+:1021F0007CBD2DE9F0470746884614461D464FF042
+:1022000000090FB1012100E000210846FA21FEF784
+:102210009FFA0CB1012100E000210846FB21FEF7E6
+:1022200097FA0DB1012100E000210846FC21FEF7DC
+:102230008FFA384600F03BFE4146384600F025FF55
+:102240008146002606E0FF21384600F01EFFA0551B
+:10225000701CC6B2AE42F6DB384600F00DFE4846B2
+:10226000BDE8F0872DE9FC4104462169D1E904016C
+:10227000CDE900012669F7683B4696E80700B847B4
+:1022800094F860102046226B90476620015D20463E
+:10229000226B904705462169D1E90401CDE900018F
+:1022A0002669D6E902733A46D6E90001B8472846BE
+:1022B000BDE8FC8170B50446002508E02846691C8D
+:1022C0008DB244F62061884200DD07E000BF204661
+:1022D000FFF7C8FF00F001000028EFD100BF70BD7C
+:1022E0000FB4DDE90001C1F30F22426100BF04B069
+:1022F00070470FB4DDE90001C1F30F22026100BF96
+:1023000004B070474A68002A06D00A68531C0B6064
+:1023100010704868401E4860704710B504460CB104
+:10232000012100E000210846A321FEF711FAD4F8AC
+:10233000880018B12046D4F888108847D4F8840063
+:1023400018B12046D4F88410884710BDF0B5034674
+:10235000002083F88100DC6F586F661E224FBE5D3F
+:10236000865926F00107661EDFF87CC01CF806605F
+:10237000875100BFDC6F586F661E6746BE5D06441E
+:10238000F16000BFDC6F586F661EBE5D0644766864
+:102390006FF30F061643671E1CF8077007447E6034
+:1023A00000BFDC6F586F661E6746BE5D865946F0FB
+:1023B0000107661E1CF80660875100BF002507E074
+:1023C000681C85B24CF25030854201DD00BF03E04D
+:1023D00093F881000028F3D000BF93F88100012812
+:1023E00000D1F0BD0020FCE72247000870B504468C
+:1023F0000D4600260CB1012100E00021084640F204
+:102400002911FEF7A5F9204600F051FD2946204686
+:1024100000F03BFE0021204600F037FE0646204635
+:1024200000F02AFD304670BD2DE9FC4105460E4600
+:1024300000270DB1012100E00021084640F23D11C6
+:10244000FEF786F92C460CB1012100E00021084678
+:1024500040F2DE21FEF77CF9A169D1E90401CDE962
+:102460000001D4F818C0DCF80C8043469CE8070053
+:10247000C04700BF284600F01AFD3146284600F04C
+:1024800004FE0746284600F0F7FC3846BDE8FC810C
+:102490002DE9FC4705460E4617464FF000080DB1E2
+:1024A000012100E0002108464FF4A871FEF750F921
+:1024B0002C460CB1012100E00021084640F2D32156
+:1024C000FEF746F9A169D1E90401CDE90001D4F88C
+:1024D00018C0DCE902934A46DCE90001C84700BFA6
+:1024E000284600F0E4FC002407E03178284600F09C
+:1024F000CCFD8046761C601C84B2BC42F5DB2846CD
+:1025000000F0BAFC4046BDE8FC872DE9F0410446E6
+:102510000E46154600270CB1012100E000210846B7
+:102520004FF48A71FEF714F9204600F0C0FC3146E2
+:10253000204600F0AAFD07462946204600F0A5FDEA
+:10254000204600F099FC3846BDE8F0810FB430B564
+:10255000DDE90301C268C1F30F2323EA020402EAA2
+:10256000030544EA0544046100BF30BC5DF814FB78
+:102570007CB504462169D1E90401CDE90001256952
+:10258000EE68334695E80700B0476320015D2046BA
+:10259000226B90472169D1E90401CDE90001256949
+:1025A000D5E902633246D5E90001B0477CBD7CB570
+:1025B00004462169D1E90401CDE900012569EE68ED
+:1025C000334695E80700B0476220015D2046226B44
+:1025D00090472169D1E90401CDE900012569D5E9D8
+:1025E00002633246D5E90001B0477CBD2DE9F041D8
+:1025F00006460F4614461D464FF000080EB1012155
+:1026000000E000210846DE21FEF7A2F80CB101210E
+:1026100000E000210846DF21FEF79AF80DB1012104
+:1026200000E000210846E021FEF792F8304600F075
+:102630003EFC3946304600F028FD804604E0217813
+:10264000304600F022FD641C281EA5F10101CDB228
+:10265000F5D1304600F010FC4046BDE8F0810000A6
+:1026600010B515A1032001F06FF8C82000F0B0F8F4
+:1026700000F06CFF002405E0204601F00BF804F1A7
+:102680000A00C4B2642CF7DD00200E4908600E4930
+:10269000086000BF0D48FEF7B3FA0C48FEF7B5FA24
+:1026A00000BF00BF0A48FEF7ABFA0948FEF7ADFAD3
+:1026B00000BF00F044FF10BD4C4F4144494E472E2F
+:1026C0002E2E0000040000200C000020002C0140F1
+:1026D0000004004010B5034800F04EF8024800F036
+:1026E000D1F910BD040000200C00002030B587B0E7
+:1026F00001F002FE01F0BBFA40F60800010A1C4A94
+:10270000516100BF4100104600F0A6F8049048F265
+:102710008001174800F0A0F8019042F2200114480F
+:1027200000F09AF8039044F24001114800F094F848
+:1027300002900021084600F08FF80590002108461D
+:1027400000F08AF8069001A9002001F069FB002042
+:1027500001F052FB0468002001F04EFB00680549BF
+:10276000856C2046A847002001F01EFB07B030BD55
+:10277000000801400030014038B5044600200090B8
+:10278000206810B1112816D10BE000BF002001F025
+:1027900071FB00BF0A480068606000BF1120206024
+:1027A00000BF074960680968081A642801D2002040
+:1027B00038BD00BFEAE70020206000900320F7E763
+:1027C0005800002001490860704700001C000020EC
+:1027D00070B504461E2094FBF0F594FBF0F100FB6D
+:1027E000114604E047F2305000F012F86D1E002D43
+:1027F000F8D12EB14FF47A7106FB01F000F008F821
+:1028000070BD00E000BF011EA0F10100FAD17047C9
+:1028100070B5034600224FF0E02675690D4E36680C
+:1028200003FB06F44FF0E026B16910E04FF0E0261C
+:10283000B06988420BD0884202D20E1A324402E0BC
+:102840002E1A0E4432440146A24200D300E0EDE7C6
+:1028500000BF70BD1C0000202DE9F04105460E466A
+:1028600018273946002000F055FA04460CB1012122
+:1028700000E0002108463621FDF76AFF256066600A
+:102880000548A0600548E060054820610548606192
+:102890002046BDE8F0810000F3220008E122000894
+:1028A0004D250008A721000810B500BF01220E49E0
+:1028B0000E48FEF71EF900BF0B490C48FEF715F94C
+:1028C0000B490A48FEF711F90420FFF7A1FF06495A
+:1028D0000648FEF706F90420FFF79AFF044903486B
+:1028E000FEF7FFF810BD000010001004000C0140BE
+:1028F0002000200410B500BF01220E490E48FEF74B
+:10290000F8F800BF0D490C48FEF7EBF809490A48F2
+:10291000FEF7E7F80420FFF77BFF08490648FEF7BB
+:10292000E4F804490448FEF7E0F80420FFF770FFDC
+:1029300010BD000010001004000C01402000200415
+:1029400010B50024082213491348FEF7D2F81149A4
+:102950001148FEF7CAF80420FFF75AFF0F490E4846
+:10296000FEF7C3F80420FFF753FF07E0601CC4B272
+:10297000FA2C03DDFFF7BEFF002010BD0549064815
+:10298000FEF79EF80028F1D104490348FEF7A9F8A4
+:102990000120F2E710001004000C01402000200488
+:1029A00070B50446002500BF012217491748FEF7FD
+:1029B000A0F800BF16491548FEF793F800BF1FE0C6
+:1029C000E00920B110491148FEF78FF803E00E49E5
+:1029D0000E48FEF786F86006040E0220FFF718FF87
+:1029E0000B490A48FEF781F80220FFF711FF08495A
+:1029F0000648FEF776F80220FFF70AFF681CC5B20A
+:102A0000082DDDDB70BD000010001004000C01403B
+:102A10002000200438B5044600208DF800008DF811
+:102A20000140FFF741FF7820FFF7BAFFFFF788FF6B
+:102A30009DF80000FFF7B4FFFFF782FF9DF801004B
+:102A4000FFF7AEFFFFF77CFFFFF754FF38BD38B547
+:102A5000044640208DF800008DF80140FFF724FF68
+:102A60007820FFF79DFFFFF76BFF9DF80000FFF751
+:102A700097FFFFF765FF9DF80100FFF791FFFFF754
+:102A80005FFF38BD38B5044600200090206810B1C3
+:102A9000282837D12CE000BF1D481E4BD968C0F351
+:102AA0000F2222EA010301EA020543EA0543194D18
+:102AB0002B6100BF18A20221002001F04FF8184935
+:102AC00008680968491C164B1960FDF7BEFC0546ED
+:102AD00000232A460221282000F04CFE01F01CF9B8
+:102AE00000BF10480068606000BF2820206000BF61
+:102AF0000C4960680968081A642801D2002038BDB2
+:102B000000BFC9E70020206000900320F7E7000025
+:102B10002000200400100140207469636B3A00001B
+:102B2000180000205800002008B5012028498969B4
+:102B30000143274A9161114689690140009100BF14
+:102B400000BF00071146C9690143D1611146C96937
+:102B50000140009100BF00BF032002461D4B1968D1
+:102B60004FF6FF0319401C4B0B4343EA0221194B5C
+:102B7000196000BF00BF1948406820F0E06040F0D5
+:102B800000701649486000BFFEF768FE14480068F0
+:102B90001449B0FBF1F084B22046FFF713FEFEF7B4
+:102BA00037FAFEF707FAFEF723FBFEF7B9FBFEF74D
+:102BB000E5FAFEF77DFBFEF79BFA002000F014F823
+:102BC000FFF794FDFFF74CFD01E0FFF783FDFCE705
+:102BD000001002400CED00E00000FA05000001408A
+:102BE0000000002040420F0010B504460C4951F887
+:102BF00024104A000B4951F82400002100F09EF8EF
+:102C0000094951F824200749083951F824000021C6
+:102C100000F094F8012103480830015510BD000070
+:102C2000644700084C000020744700082DE9F04775
+:102C300004460F460025A9462348005D20B92248D6
+:102C400018380168204688471FB94FF0FF30BDE8AB
+:102C5000F0871E4850F82400B7FBF0F61B4850F8E8
+:102C60002400B7FBF0F100FB117000B1761C18488E
+:102C700050F82400451E22E01348083850F824007C
+:102C800030F8150010B909F1010901E04FF0000911
+:102C9000B14513D14FF0000809E00B48083850F84F
+:102CA000240005EB080220F8126008F10108B04585
+:102CB000F3D3064850F824006843C8E76D1E002D82
+:102CC000DADA4FF0FF30C2E7540000206C4700080A
+:102CD0006447000810B501460023002207E00B48B6
+:102CE00050F8210030F8120000B15B1C521C08485B
+:102CF00050F821009042F2D864205843044C54F814
+:102D00002140B0FBF4F0C0B210BD00004C00002028
+:102D10006447000870B504460E4631462046FFF76A
+:102D200085FF0546681C08B9002070BD024850F8B0
+:102D300024002844F9E700004400002030B5034691
+:102D400001E003F8011B141EA2F10102F9D130BD0C
+:102D50000FB42DE9F04105460D9F022D01DA012146
+:102D600000E0002108463821FDF7F2FC90263146AC
+:102D70000020FFF7CFFF044600BF201D07A918223F
+:102D800003E011F8013B00F8013B131EA2F101061C
+:102D9000B2B2F6D100BF67802570012084F85C00D4
+:102DA0002449A1642449E1642449616524492165D9
+:102DB000002D2ED12348E061234921622349A162DD
+:102DC0002349E16223496162234921632349616305
+:102DD0002349E1632349A1632349216423496164B1
+:102DE000052084F860000121612001550621622040
+:102DF000015504216320015503216420015502215E
+:102E000065200155A521662001550021712001553D
+:102E10000AE0012D04D11648E0611649216203E061
+:102E200061210020FDF794FC2046BDE8F0015DF82B
+:102E300014FB0000BD1C0008E91B00084D2300081E
+:102E40001B2300080B250008ED230008ED250008D2
+:102E5000F3210008C92100088B3000081332000854
+:102E6000112F0008F9320008073500083930000832
+:102E700029240008912400087CB504460CB10121E6
+:102E800000E00021084640F2E921FDF761FC2169DC
+:102E9000D1E90401CDE900012569D5E90263324693
+:102EA000D5E90001B047204600F01BF87CBD7CB599
+:102EB00004460CB1012100E00021084640F2F52152
+:102EC000FDF746FC2169D1E90401CDE9000125693E
+:102ED000EE68334695E80700B047204600F001F859
+:102EE0007CBD70B5044600250CB1012100E0002135
+:102EF000084640F26511FDF72BFC6588002D06DDC4
+:102F000000E000BF281EA5F101018DB2F9D170BD0E
+:102F10002DE9FC4704460D46174698464FF0010A36
+:102F200000260CB1012100E00021084640F28D216D
+:102F3000FDF70EFC0FB1012100E00021084640F230
+:102F40008E21FDF705FCB8F1000F01DD012100E045
+:102F50000021084640F28F21FDF7FAFB2169D1E9F3
+:102F60000401CDE90001D4F810C0DCF80C904B4608
+:102F70009CE80700C8476420015D2046226B90470B
+:102F8000064616B90020BDE8FC876720005D0228D0
+:102F900010D1C5F307212046226B904706460EB993
+:102FA0000020F0E7E9B22046226B9047064626BB98
+:102FB0000020E8E76720005D032819D1C5F3074129
+:102FC0002046226B904706460EB90020DBE7C5F38A
+:102FD00007212046226B904706460EB90020D2E713
+:102FE000E9B22046226B9047064636B90020CAE770
+:102FF0004FF42E710020FDF7ABFB4FF000090AE003
+:103000006620015D2046226B904707F8090009F110
+:1030100001001FFA80F9C145F2DB2169D1E9040101
+:10302000CDE90001D4F810C0DCE902934A46DCE99E
+:103030000001C8475046A6E72DE9FC4104460D466D
+:103040002169D1E90401CDE900012769D7F80CC055
+:10305000634697E80700E04729462046226B9047E1
+:103060006620015D2046226B904706462169D1E922
+:103070000401CDE900012769D7E902C36246D7E917
+:103080000001E0473046BDE8FC812DE9FC470446DD
+:103090000D464FF0FF080CB1012100E00021084669
+:1030A00040F2B111FDF754FB94F85C0001287CD18B
+:1030B000002795E026460EB1012100E000210846D8
+:1030C00040F22231FDF744FBF168D1E90401CDE97A
+:1030D0000001D6F80CC0DCF80C904B469CE80700C9
+:1030E000C84700BF2046FFF7FCFE05F08000C0B1D6
+:1030F00026460EB1012100E00021084640F20131D0
+:10310000FDF726FB7168D1E90401CDE90001D6F88D
+:1031100004C0DCE902934A46DCE90001C84700BF6D
+:1031200018E026460EB1012100E0002108464FF4C8
+:103130004371FDF70DFB7168D1E90401CDE9000190
+:10314000D6F804C0DCF80C904B469CE80700C84752
+:1031500000BF00BF2046FFF7C4FE26460EB1012186
+:1031600000E00021084640F21731FDF7F1FAF1685E
+:10317000D1E90401CDE90001D6F80CC0DCE90293E5
+:103180004A46DCE90001C84700BF2046FFF7A9FE18
+:103190006806050E4FEA48604FEA1068A0680068AC
+:1031A000E0B1264616B1012101E01FE000210846EA
+:1031B00040F22D31FDF7CCFAB168D1E90401CDE937
+:1031C0000001D6F808C0DCF814909CE80F00C8474E
+:1031D000012803D108F1010000F0FF08781CC7B2F4
+:1031E000082FFFF667AF4046BDE8FC87A06D00F1F1
+:1031F0000C010D7000BF4FF4FA620121204600F06F
+:1032000031F808B9FF20EFE7A06D017B8846404602
+:10321000EAE77CB504460CB1012100E00021084634
+:1032200040F2C521FDF794FA2169D1E90401CDE905
+:1032300000012569EE68334695E80700B0470A208B
+:10324000FFF7DFFA2169D1E90401CDE90001256921
+:10325000D5E902633246D5E90001B0470A20FFF7FD
+:10326000D0FA7CBD2DE9F04104460D4616460027F4
+:103270000CB1012100E00021084640F27311FDF776
+:1032800067FA022D0FD107E038467F1CB04202D901
+:103290000020BDE8F08100BFA06D8168C1F340014E
+:1032A0000029F1D026E0012D0ED106E038467F1C22
+:1032B000B04201D90020ECE700BFA06D816801F0A9
+:1032C00001010029F2D015E0802D0ED106E038462C
+:1032D0007F1CB04201D90020DBE700BFA06D8168F0
+:1032E000C1F3C0110029F2D004E04FF4D0710020E6
+:1032F000FDF72EFA0120CCE72DE9FC5F04460D46D0
+:10330000174698464FF0010A00260CB1012100E053
+:103310000021084640F20621FDF71AFA0FB10121FB
+:1033200000E00021084640F20721FDF711FAB8F14C
+:10333000000F01DD012100E0002108464FF4027179
+:10334000FDF706FAA16E09B1012100E0002108464F
+:1033500040F20921FDF7FCF9D4F868902046FFF708
+:1033600026F92169D1E90401CDE90001D4F810C0A2
+:10337000DCF80CB05B469CE80700D8476520015D8F
+:103380002046226B9047064616B90020BDE8FC9FF8
+:103390006720005D022810D1C5F307212046226B6B
+:1033A000904706460EB90020F0E7E9B22046226BAE
+:1033B00090470646DEB90020E8E7C5F307412046FE
+:1033C000226B904706460EB90020DFE7C5F30721C0
+:1033D0002046226B904706460EB90020D6E7E9B298
+:1033E0002046226B904706460EB90020CEE76EE0DD
+:1033F00039782046226B904706460EB90020C5E773
+:103400007F1C7120005D002861D16D1CB5FBF9F0B7
+:1034100009FB105000285AD1B8F1000F57DD21697F
+:10342000D1E90401CDE90001D4F810C0DCE902B310
+:103430005A46DCE90001D8472046FEF73BFF20460C
+:10344000FFF7B5F82169D1E90401CDE90001D4F80D
+:1034500010C0DCF80CB05B469CE80700D84765203C
+:10346000015D2046226B904706460EB900208DE78D
+:103470006720005D022810D1C5F307212046226B8A
+:10348000904706460EB9002080E7E9B22046226B3D
+:1034900090470646DEB9002078E7C5F3074120468D
+:1034A000226B904706460EB900206FE7C5F307214F
+:1034B0002046226B904706460EB9002066E7E9B227
+:1034C0002046226B904706460EB900205EE7B8F111
+:1034D0000000A8F101011FFA81F889D12169D1E921
+:1034E0000401CDE90001D4F810C0DCE902B35A466A
+:1034F000DCE90001D8472046FEF7DCFE2046FFF756
+:1035000037F8504642E770B504460D4616460CB1F2
+:10351000012100E0002108464FF41E71FDF718F963
+:103520002046FFF744F8324629462046E36998478B
+:103530002046FEF7BFFE2046FFF71AF870BD10B513
+:1035400000F004F800F0E8FB10BD000010B54FF4E7
+:10355000806200210448FEF7F0FB4FF48062FF21F7
+:103560000248FEF7EAFB10BD80280020802C0020D6
+:103570002DE9FC4F04460D4616461F46301B01D56B
+:10358000A01B00E0301B8146781B01D5E81B00E042
+:10359000781B8246B44201DA012001E04FF0FF308F
+:1035A0000190BD4201DA012001E04FF0FF300090B0
+:1035B000A9EB0A000FFA80F821E0294620460B9A71
+:1035C00000F022F8B44202D1BD4200D118E04FEA27
+:1035D00048000FFA80FBCAF10000834506DDA8EB26
+:1035E0000A000FFA80F801982044C4B2CB4506DAED
+:1035F00008EB09000FFA80F800982844C5B2DCE710
+:1036000000BFBDE8FC8F0000F0B503461446802BD8
+:1036100001DA402900DBF0BD012C1CD1CD1701EBF4
+:103620005575ED1003EBC515194E755D0A46CE179D
+:1036300001EB5676F610A1EBC6070126BE403543D6
+:10364000EEB20846CD1701EB5575ED1003EBC5152D
+:103650000F4F7E551AE0CD1701EB5575ED1003EBBA
+:10366000C5150B4E755D0A46CE1701EB5676F61062
+:10367000A1EBC6070126BE40B5430846CE1701EBB5
+:103680005676F61003EBC616014FBD5500BFC2E7D4
+:10369000802800203EB504460A25012005F11801C6
+:1036A0000A236C220090184600F01CF801200090BC
+:1036B000201DC2B205F11A0107230C2000F0BCFA4C
+:1036C000234606A2052101A8FEF712FA01AA02214B
+:1036D0002C2000F071FA00F01FFB3EBD253364255D
+:1036E000250000002DE9F84104460D4616461F4608
+:1036F000DDF81C80A019C2B22B4629462046CDF821
+:103700000080FFF735FFE819C3B2A019C2B2E8196B
+:10371000C1B22046CDF80080FFF72AFFE819C3B2F6
+:10372000224629462046CDF80080FFF721FFE919FF
+:10373000CBB2A119CAB2A119C8B22946CDF80080EE
+:10374000FFF716FFBDE8F88170B505460C46204628
+:10375000FCF7FCFC00EB40008021A1EB4000C0F333
+:10376000470622462946304600F0F8F900F0D4FA20
+:1037700070BD00002DE9F04F87B005460E4691461A
+:103780009A460020039004900590029000248346FE
+:1037900000214846FCF7BEFE07D22D222046611CC0
+:1037A000CCB203A90A5489F00049E3494846FCF722
+:1037B000BBFE02D207B0BDE8F08FC4F10800C0B272
+:1037C0000290DE494846FCF7AFFE59D8DB4948462F
+:1037D000FCF74DFD8046DA49FCF7BFFC0746FCF7D5
+:1037E00052FEC2B22046611CCCB203A90A5448461C
+:1037F000FCF730FE42F2107190FBF1F201FB120077
+:103800004FF47A7190FBF1F03030C2B22046611C67
+:10381000CCB203A90A544846FCF71CFE4FF47A7157
+:1038200090FBF1F201FB1200642190FBF1F03030CB
+:10383000C2B22046611CCCB203A90A544846FCF728
+:1038400009FE642190FBF1F201FB12000A2190FBBA
+:10385000F1F03030C2B22046611CCCB203A90A5448
+:103860004846FCF7F7FD0A2190FBF1F201FB12003C
+:103870003030C2B22046611CCCB203A90A54C2E067
+:10388000B0494846FCF750FE48D84846FCF7E2FDF0
+:1038900042F2107190FBF1F201FB12004FF47A71C9
+:1038A00090FBF1F03030C2B22046611CCCB203A9CB
+:1038B0000A544846FCF7CEFD4FF47A7190FBF1F2C2
+:1038C00001FB1200642190FBF1F03030C2B22046BF
+:1038D000611CCCB203A90A544846FCF7BBFD642125
+:1038E00090FBF1F201FB12000A2190FBF1F0303065
+:1038F000C2B22046611CCCB203A90A544846FCF768
+:10390000A9FD0A2190FBF1F201FB12003030C2B296
+:103910002046611CCCB203A90A5474E08A49484687
+:10392000FCF702FE34D84846FCF794FD4FF47A7158
+:1039300090FBF1F201FB1200642190FBF1F03030BA
+:10394000C2B22046611CCCB203A90A544846FCF717
+:1039500081FD642190FBF1F201FB12000A2190FB32
+:10396000F1F03030C2B22046611CCCB203A90A5437
+:103970004846FCF76FFD0A2190FBF1F201FB1200B3
+:103980003030C2B22046611CCCB203A90A543AE0DE
+:103990006E494846FCF7C8FD21D84846FCF75AFD59
+:1039A000642190FBF1F201FB12000A2190FBF1F07F
+:1039B0003030C2B22046611CCCB203A90A5448463A
+:1039C000FCF748FD0A2190FBF1F201FB12003030B8
+:1039D000C2B22046611CCCB203A90A5413E00021F4
+:1039E0004846FCF7A1FD0ED84846FCF733FD0A21F6
+:1039F00090FBF1F201FB12003030C2B22046611C94
+:103A0000CCB203A90A54BAF1000F6ADD072C68DAB8
+:103A10002E222046611CCCB203A90A544846FCF76A
+:103A200019FD8046FCF708FD07464946FCF7EAFB0E
+:103A30008146BAF1010F1ED1082C1CDA43494846D1
+:103A4000FCF7E3FB81464846FCF750FD0022404B63
+:103A5000CDE90001FCF749FC0746FCF728FD0A21E7
+:103A600090FBF1F201FB12003030C2B22046611C23
+:103A7000CCB203A90A54BAF1020F32DB082C30DAB7
+:103A800031494846FCF7C1FB81464846FCF7E2FC59
+:103A9000642190FBF1F201FB12000A2190FBF1F08E
+:103AA0003030C2B22046611CCCB203A90A54082CA3
+:103AB00017DA4846FCF71AFD0022254BCDE9000134
+:103AC000FCF713FC0746FCF7F2FC0A2190FBF1F22D
+:103AD00001FB12003030C2B22046611CCCB203A9F7
+:103AE0000A5422E003A810F80B002038C0B202905C
+:103AF000782D02DD0025701CC6B200240DE002986E
+:103B000000EB4000134901EB4000005D05EBC611DE
+:103B10002144114A5054601CC4B2062CEFDBA81D8E
+:103B2000C5B20BF1010000F0FF0B03A810F80B0069
+:103B30000028D7D100BF3DE60000FA4600401C46F1
+:103B40000000404200007A440000C84200002041CA
+:103B50000000E03FA647000880280020F0B513468B
+:103B60000025002200241EE01E5D203EF5B27E28C6
+:103B700002DD00204E1CF1B200220EE005EB4506EE
+:103B80000B4F07EB4606B65C00EBC1171744DFF896
+:103B900024C00CF80760561CF2B2062AEEDB861D24
+:103BA000F0B2661CF4B21E5D002EDDD1F0BD000047
+:103BB000A647000880280020F0B5034614460022DE
+:103BC0000020002530E0665D203EF2B2782B02DD59
+:103BD00000234E1CF1B200200CE000EB0216144F43
+:103BE000BE5D03EBC1170744DFF848C00CF807605F
+:103BF000461CF0B20828F0DB00200EE000EB0216B5
+:103C000008360B4FBF5D4E1C03EBC6160644DFF8AB
+:103C100024C00CF80670461CF0B20828EEDB03F155
+:103C20000806F3B26E1CF5B2665D002ECBD1F0BD76
+:103C3000CE490008802800202DE9F84306460D46AD
+:103C400017469846DDF8209000240CE02819C3B2EE
+:103C5000F019C2B22819C1B23046CDF80090FFF772
+:103C600087FC601CC4B24445F0DBBDE8F88310B5A6
+:103C7000AE20FEF7CFFE2020FEF7CCFE1020FEF790
+:103C8000C9FEC820FEF7C6FE0020FEF7C3FE1020C6
+:103C9000FEF7C0FE4020FEF7BDFE8120FEF7BAFE13
+:103CA000FF20FEF7B7FEA120FEF7B4FEA620FEF728
+:103CB000B1FEA820FEF7AEFE3F20FEF7ABFEA4202B
+:103CC000FEF7A8FED320FEF7A5FE0020FEF7A2FE19
+:103CD000D520FEF79FFEF020FEF79CFED920FEF7D0
+:103CE00099FE2220FEF796FEDA20FEF793FE1220C0
+:103CF000FEF790FEDB20FEF78DFE2020FEF78AFE09
+:103D00008D20FEF787FE1420FEF784FEAF20FEF71D
+:103D100081FEFFF714FC10BD70B500242DE00026D5
+:103D200000200DE000EBC4111D4A515C00EBC412F1
+:103D30001C4B9A5C914201D0012603E0411CC8B2A1
+:103D40008028EFDB00BFB6B104F1B001C8B2FEF7C6
+:103D500061FE0120FEF75EFE1020FEF75BFE0025EF
+:103D600007E005EBC4110E4A505CFEF770FE681CBC
+:103D7000C5B2802DF5DB601CC4B2082CCFDB09482E
+:103D800007494FF4806203E011F8013B00F8013B62
+:103D9000131EA2F10104A2B2F6D100BF70BD000053
+:103DA00080280020802C00201FB5044680208DF83C
+:103DB000080000208DF809008DF80A008DF80B002E
+:103DC00001208DF80C0002A9204600F0F1F8002037
+:103DD000009001908DF808006A4602A9204600F084
+:103DE0007DF89DF8040004EB4401024A02EB8101D6
+:103DF00048601FBD8030002010B50446012C01DA58
+:103E0000012100E0002108464721FCF7A1FC04EB5A
+:103E10004400024901EB800010BD0000803000200A
+:103E20007FB504460D46012C01DA012100E0002196
+:103E300008463E21FCF78CFC04EB44000C4901EBE6
+:103E4000800600200390D5E90412E8688DE8070099
+:103E5000002095E80E00FEF77BFF3060316809B165
+:103E6000012100E0002108464221FCF771FC7FBDE2
+:103E7000803000207FB50546012D01DA012100E0E8
+:103E8000002108464D21FCF763FC05EB4500124973
+:103E900001EB800600200290039000900190212009
+:103EA0008DF808006A4602A9284600F017F8002499
+:103EB0009DF80100044324029DF8020004432402FB
+:103EC0009DF80300044324029DF804000443B460F9
+:103ED000204604B070BD0000803000202DE9FC4178
+:103EE00006460F469046012E01DA012100E000212E
+:103EF00008461521FCF72CFC06EB46002B4901EB8C
+:103F0000800420680169D1E90401CDE9000120683D
+:103F10000569D5F80CC0634695E80700E047002521
+:103F200007E0795D2068026B904708F80500681C7F
+:103F300085B2052DF5DB20680169D1E90401CDE9E1
+:103F4000000120680569D5E902C36246D5E9000190
+:103F5000E04700BF00BF00BF20680169D1E904014C
+:103F6000CDE9000120680569D5F80CC0634695E8E5
+:103F70000700E047002507E0795D2068026B904765
+:103F800008F80500681C85B2052DF5DB206801697D
+:103F9000D1E90401CDE9000120680569D5E902C332
+:103FA0006246D5E90001E047BDE8FC818030002091
+:103FB0002DE9FC4105460F46012D01DA012100E003
+:103FC000002108460721FCF7C3FB05EB4500154916
+:103FD00001EB800420680169D1E90401CDE9000109
+:103FE00020680669D6F80CC0634696E80700E047EB
+:103FF000002605E0B95D2068026B9047701C86B210
+:10400000052EF7DB20680169D1E90401CDE9000143
+:1040100020680669D6E902C36246D6E90001E04796
+:10402000BDE8FC818030002010B5044604B910BD05
+:1040300000202085A07D012808D1606A30B1218C44
+:1040400089040A0C0021606AFDF76DFE00BFEEE7EF
+:104050002DE9F05F0646884615469946DDE90B7B5B
+:10406000DDF828A00EB1012100E000210846292139
+:10407000FCF76EFB4420FDF74FFE04460CB1012116
+:1040800000E0002108462C21FCF762FB0120E075CE
+:1040900000202076C4F83C902584C4F840B0A78660
+:1040A000002D0CDD2846FDF737FEE061E16909B11E
+:1040B000012100E0002108463E21FCF749FB002FCA
+:1040C0000CDD3846FDF728FE2063216B09B1012184
+:1040D00000E0002108464521FCF73AFB84F81580F2
+:1040E00084F82CA066602046BDE8F09F10B5044619
+:1040F00004B910BD002060852046FFF795FF00BF82
+:10410000F7E710B504460CB1012100E00021084694
+:1041100040F2D711FCF71CFB012084F8380021691C
+:10412000A068FCF779FB2069082865D2DFE800F079
+:104130006404111E2C3A485600BFA0680168C1F300
+:10414000400121B1A0680221416000BF00BF00BF53
+:1041500053E000BFA0680168C1F3401121B1A0681D
+:104160002021416000BF00BF00BF46E000BFA06843
+:104170000168C1F3402129B1A0684FF4007141608A
+:1041800000BF00BF00BF38E000BFA0680168C1F3F6
+:10419000403129B1A0684FF40051416000BF00BF19
+:1041A00000BF2AE000BFA0680168C1F3404129B107
+:1041B000A0684FF40031416000BF00BF00BF1CE0A9
+:1041C00000BFA0680168C1F3405129B1A0684FF455
+:1041D0000011416000BF00BF00BF0EE000BFA0683B
+:1041E0000168C1F3406129B1A0684FF000714160DE
+:1041F00000BF00BF00BF00E000BF00BF606800BF9D
+:1042000000BF00BF00F10C0252E8002F42F0400155
+:1042100000F10C0242E80013002BF3D100BF00BFF5
+:104220002069082865D2DFE800F06404111E2C3AEA
+:10423000485600BFA0680168C1F3C00121B1A06861
+:104240000821416000BF00BF00BF53E000BFA0686D
+:104250000168C1F3C01121B1A0688021416000BF95
+:1042600000BF00BF46E000BFA0680168C1F3C021E5
+:1042700029B1A0684FF40061416000BF00BF00BFDA
+:1042800038E000BFA0680168C1F3C03129B1A0685F
+:104290004FF40041416000BF00BF00BF2AE000BFF3
+:1042A000A0680168C1F3C04129B1A0684FF40021A2
+:1042B000416000BF00BF00BF1CE000BFA0680168F4
+:1042C000C1F3C05129B1A0684FF40001416000BFA3
+:1042D00000BF00BF0EE000BFA0680168C1F3C0616D
+:1042E00029B1A0684FF00061416000BF00BF00BF6E
+:1042F00000E000BF00BF10BD0EB51348006808BB4A
+:104300000020F0210122114BCDE9002102900A4644
+:1043100001210F48FFF79CFE0B4908600020096847
+:1043200008700C4808490968886005200649096832
+:10433000C860042004490968086100210248006837
+:1043400000F0E2F80EBD00005C0000208B46000883
+:10435000003801400000024038B5044604B938BDB9
+:104360006068C168C1F34011B9B160680168C1F308
+:10437000401191B1608D218C884202DB2046FFF70D
+:10438000B5FE61684A68D2B2608D411C6185E16901
+:104390000A5400202076E0753FE06068C168C1F3F0
+:1043A0000011002939D060680168C1F300110029AB
+:1043B00033D0607D01282BD1D4E902014A1E514B34
+:1043C0009A5C02445268208C801A6085207DF8B97E
+:1043D000D4E90201FCF720FAE06B80B1608D00287F
+:1043E0000DDD608D218C884209DC628D2078E36BC5
+:1043F000E1699847228C0021E069FDF794FC228C4A
+:10440000D4E90201FCF742FAD4E90201FCF712FAFE
+:10441000002060856068FCF70EFD6068C168C1F32C
+:10442000801151B16068FCF76CFD30B1206C08B1AF
+:10443000206C80476068FCF706FDA07D01285ED1F6
+:1044400001256068C168C1F3002171B1606801682D
+:1044500001F0010149B1022560680168009100BFC7
+:104460004168009100BF00BF00BF6068FCF73AFDE3
+:1044700068B16068FCF736FD48B1042560680168E2
+:10448000009100BF4168009100BF00BF00BF60689D
+:10449000FCF72DFD60B16068FCF729FD40B1606854
+:1044A0000168009100BF4168009100BF00BF00BFDC
+:1044B0006068FCF721FD68B16068FCF71DFD48B13C
+:1044C000102560680168009100BF4168009100BF3D
+:1044D00000BF00BF012D11D0606A78B1618D491E07
+:1044E00088B2228D616A01EB82014880228D616A67
+:1044F00001F82250218D491C218500BF00BF00BF5B
+:104500002DE70000F846000870B504460D46607DB2
+:1045100090B9A575606800BF00BF00BF00F10C0234
+:1045200052E8002F42F0200100F10C0242E8001393
+:10453000002BF3D100BF70E00020A0756068FCF78D
+:104540007AFC2169A068FCF767F9D4E90201FCF75D
+:1045500063F96068011D0E463246D4E90201FCF79A
+:10456000F1F9E269D4E90201FCF7B2F9228CD4E94D
+:104570000201FCF78BF9D4E90201FCF769F9D4E9EF
+:104580000201FCF757F9606800BF00BF00BF00F1EF
+:10459000140252E8002F42F0400100F1140242E8F8
+:1045A0000013002BF3D100BF00BF606800BF00BF45
+:1045B00000BF00F10C0252E8002F42F0100100F1A0
+:1045C0000C0242E80013002BF3D100BF00BF60686B
+:1045D000011D0E4632462169A068FCF7B3F9226B33
+:1045E0002169A068FCF774F92169A068FCF730F92B
+:1045F000606800BF00BF00BF00F1140252E8002F46
+:1046000042F0800100F1140242E80013002BF3D1C4
+:1046100000BF00BF012084F83800A07D012833D1FD
+:10462000606A68B9218C8800FDF776FB6062616A78
+:1046300009B1012100E0002108468221FCF788F839
+:10464000606800BF00BF00BF00F10C0252E8002FFD
+:1046500042F4807100F10C0242E80013002BF3D108
+:1046600000BF00BF606800BF00BF00BF00F11402C0
+:1046700052E8002F42F0010100F1140242E8001359
+:10468000002BF3D100BF00BF70BD7047081C304441
+:10469000586C8000000000040404000008000000C2
+:1046A000080000080000000800020406080A0C00C8
+:1046B000010203040506081C3044586C8000000009
+:1046C00000040404000008000000080000080000C6
+:1046D000000800020406080A0C0001020304050693
+:1046E00000000000000000000102030406070809A2
+:1046F0000000000001020304081C3044586C8000D4
+:104700000000000404040000080000000800000885
+:104710000000000800020406080A0C00010203045D
+:104720000506081C3044586C800000000004040496
+:104730000000080000000800000800000008000257
+:104740000406080A0C000102030405065F6C697385
+:1047500074006C69737420616C6C20636F6D6D61A3
+:104760006E6400000004000000000000080000006B
+:10477000080000000020000000000000081C304479
+:10478000586C8000000000040404000008000000D1
+:10479000080000080000000800020406080A0C00D7
+:1047A0000102030405060000000000000000002FC5
+:1047B000000000000700070000147F147F1400248D
+:1047C0002A7F2A12006264081323003649552250BA
+:1047D00000000503000000001C22410000004122EF
+:1047E0001C000014083E08140008083E08080000D9
+:1047F00000A06000000808080808000060600000D1
+:10480000002010080402003E5149453E0000427F4E
+:104810004000004261514946002141454B3100189A
+:1048200014127F10002745454539003C4A4949305C
+:104830000001710905030036494949360006494916
+:10484000291E000036360000000056360000000821
+:1048500014224100001414141414000041221408FE
+:1048600000020151090600324959513E007C1211E3
+:10487000127C007F49494936003E41414122007F78
+:104880004141221C007F49494941007F0909090132
+:10489000003E4149497A007F0808087F0000417FB7
+:1048A0004100002040413F01007F08142241007F69
+:1048B00040404040007F020C027F007F0408107FD0
+:1048C000003E4141413E007F09090906003E415139
+:1048D000215E007F091929460046494949310001F6
+:1048E000017F0101003F4040403F001F2040201F4A
+:1048F000003F4038403F006314081463000708700D
+:10490000080700615149454300007F4141000055BF
+:104910002A552A55000041417F000004020102048B
+:104920000040404040400000010204000020545478
+:104930005478007F484444380038444444200038C8
+:104940004444487F00385454541800087E0901023A
+:104950000018A4A4A47C007F080404780000447D0F
+:104960004000004080847D00007F1028440000004B
+:10497000417F4000007C04180478007C080404781F
+:1049800000384444443800FC24242418001824240B
+:1049900018FC007C08040408004854545420000407
+:1049A0003F444020003C4040207C001C2040201C14
+:1049B000003C4030403C004428102844001CA0A08B
+:1049C000A07C004464544C441414141414140000C7
+:1049D00000000000000000000000000000000000D7
+:1049E00000F800000000000000333000000000105C
+:1049F0000C06100C0600000000000000000040C083
+:104A00007840C0784000043F04043F040400007074
+:104A100088FC08300000001820FF211E0000F0086C
+:104A2000F000E018000000211C031E211E0000F011
+:104A30000888700000001E21232419272110101659
+:104A40000E00000000000000000000000000000058
+:104A500000E01804020000000007182040000002D7
+:104A60000418E0000000004020180700000040404B
+:104A700080F0804040000202010F010202000000AD
+:104A800000F0000000000101011F01010100000011
+:104A900000000000000080B0700000000000000076
+:104AA00000000000000000010101010101010000FF
+:104AB0000000000000000030300000000000000096
+:104AC000000080601804006018060100000000E08B
+:104AD00010080810E000000F102020100F00001038
+:104AE00010F8000000000020203F2020000000708F
+:104AF0000808088870000030282422213000003087
+:104B00000888884830000018202020110E0000007E
+:104B1000C02010F8000000070424243F240000F8FF
+:104B20000888880808000019212020110E0000E0E4
+:104B3000108888180000000F112020110E00003886
+:104B40000808C83808000000003F0000000000709E
+:104B5000880808887000001C222121221C0000E027
+:104B600010080810E0000000312222110F000000A0
+:104B700000C0C00000000000003030000000000055
+:104B800000800000000000008060000000000000C5
+:104B9000804020100800000102040810200040405E
+:104BA00040404040400004040404040404000008A1
+:104BB0001020408000000020100804020100007056
+:104BC00048080808F0000000003036010000C0303E
+:104BD000C828E810E0000718272423140B00000061
+:104BE000C038E0000000203C23020227382008F8EB
+:104BF000888888700000203F202020110E00C030DF
+:104C0000080808083800071820202010080008F8B5
+:104C100008080810E000203F202020100F0008F8AE
+:104C20008888E8081000203F20202320180008F87A
+:104C30008888E8081000203F200003000000C030F2
+:104C400008080838000007182020221E020008F873
+:104C500008000008F808203F210101213F2000083A
+:104C600008F8080800000020203F20200000000075
+:104C70000808F8080800C08080807F00000008F85D
+:104C800088C028180800203F20012638200008F896
+:104C9000080000000000203F20202020300008F8FD
+:104CA000F800F8F80800203F003F003F200008F817
+:104CB00030C00008F808203F200007183F00E0102F
+:104CC00008080810E0000F10202020100F0008F83E
+:104CD00008080808F000203F210101010000E01051
+:104CE00008080810E0000F18242438504F0008F876
+:104CF000888888887000203F2000030C30200070D6
+:104D00008808080838000038202121221C001808D3
+:104D100008F8080818000000203F2000000008F8EC
+:104D200008000008F808001F202020201F00087835
+:104D3000880000C83808000007380E010000F80895
+:104D400000F80008F800033C0700073C03000818BF
+:104D500068808068180820302C03032C3020083825
+:104D6000C800C83808000000203F200000001008DC
+:104D70000808C83808002038262120201800000024
+:104D800000FE020202000000007F40404000000CD4
+:104D900030C000000000000000010638C000000222
+:104DA0000202FE000000004040407F0000000000C2
+:104DB00004020202040000000000000000000000E5
+:104DC00000000000000080808080808080800002E1
+:104DD00002040000000000000000000000000000CD
+:104DE0008080808000000019242222223F2008F8C1
+:104DF000008080000000003F112020110E00000004
+:104E0000008080800000000E112020201100000092
+:104E100000808088F800000E112020103F20000044
+:104E2000808080800000001F222222221300008048
+:104E300080F0888888180020203F20200000000093
+:104E4000808080808000006B94949493600008F8C8
+:104E5000008080800000203F210000203F20008053
+:104E60009898000000000020203F20200000000053
+:104E700000809898000000C08080807F000008F8C3
+:104E8000000080808000203F24022D302000000898
+:104E900008F8000000000020203F20200000808053
+:104EA000808080808000203F20003F20003F808065
+:104EB000008080800000203F210000203F20000073
+:104EC000808080800000001F202020201F00808024
+:104ED00000808000000080FFA12020110E00000053
+:104EE000008080808000000E112020A0FF80808044
+:104EF00080008080800020203F21200001000000F1
+:104F000080808080800000332424242419000080C5
+:104F100080E0808000000000001F202000008080D2
+:104F2000000000808000001F202020103F20808093
+:104F300080000080808000010E3008060100808023
+:104F40000080008080800F300C030C300F00008048
+:104F50008000808080000020312E0E312000808073
+:104F600080000080808080818E70180601000080A3
+:104F70008080808080000021302C222130000000C1
+:104F80000000807C020200000000003F4040000062
+:104F90000000FF00000000000000FF000000000211
+:104FA000027C800000000040403F0000000000063E
+:104FB00001010202040400000000000000000003E0
+:104FC000050911FF118905C300E000F000F8000099
+:104FD00000000000004428FF11AA44000000000067
+:104FE00000000000000000000000000000000000C1
+:104FF00000000000000000000000000000000000B1
+:1050000000000000000000000000000000000000A0
+:105010000000000000000000830138448292927476
+:105020000183000000000000007C44C7017D7D7DFD
+:105030007D017D7D7D7D017D7D7D7D01FF00000009
+:10504000000000010001000100010001000100005A
+:10505000000000000000000101000000000000004E
+:105060000000000000000000000000000000000040
+:105070000000000000000000000000000000000030
+:105080000000000000000000000000000000000020
+:10509000000000000000000001010000000000000E
+:1050A00001010000000000000000000101010101F9
+:1050B00001010101010101010101010101000000E3
+:1050C00000000000000000404040404000006D6DC6
+:1050D0006D6D6D00006060606060000040404040A9
+:1050E0004000000000000000000000000000000080
+:1050F00000000000000000000000000000000000B0
+:10510000000000000000000000000000000000009F
+:10511000000000000000000000000000000000008F
+:10512000000000000000000000000000000000007F
+:10513000000000000000000000000000000000006F
+:1051400000000000000000DBDBDBDBDB0000DBDB62
+:10515000DBDBDB0000DBDBDBDBDB0000DBDBDBDB0B
+:10516000DB0000DADADADADA0000D8D8D8D8D800EA
+:1051700000C0C0C0C0C00000C0C0C0C0C00000C0EF
+:10518000C0C0C0C00000C0C0C0C0C00000808080DF
+:10519000808000000000000000000000000000000F
+:1051A00000000000000000000000000000000000FF
+:1051B00000000000000000000000000000000000EF
+:1051C00000000000000000060606060600000606B5
+:1051D0000606060000060606060600000606060687
+:1051E000060000060606E66620000606860606009D
+:1051F000000606060686000006060606060000866D
+:105200008686868680808686068686C0C086868656
+:105210000606D030760606060600000606060606D6
+:105220000000060606060600000606060606000042
+:105230000606060606000000000000000000000050
+:10524000000000000000000000000000000000005E
+:10525000000000000000000000000000000000004E
+:105260000000000000000000601C00FE00010200C1
+:10527000C41820029E63B20E00FF8181FF000080EF
+:1052800040300F00000000FF0023EAAABFAAEA0393
+:105290003F00FF00000000000000000000000000D0
+:1052A00000000000000000000000000000000000FE
+:1052B00000000000000000000000000000000000EE
+:1052C00000808080000000000080808000000000DE
+:1052D00000000000000000000000000000000000CE
+:1052E0000000000000000E0C080000010101010197
+:1052F0000000000100000001008180808180818029
+:105300008080800101010100000001000000010017
+:105310000101090C0E000000000000000000000068
+:10532000000000000000C0C0C0C0C0C0C0C0C0C0FD
+:10533000C0C0C0C0C0C0C0C0C0C0C0C0C000001E8F
+:1053400021404050215E001E21404050215E00005F
+:10535000000000000000000000000000000000004D
+:10536000000000000000000000000000000000003D
+:10537000000000000000000000FFFFC1C1FFFFC1EE
+:10538000C1FFFF000000000000000000000000005E
+:10539000000000000000000000000000000000000D
+:1053A000000000000000FFFF80FCF3EFF3FC80FF33
+:1053B00080EEEEEEF5FBFF9CBEB6B688FF00000067
+:1053C000E05300080000002070000000C81B000827
+:1053D000505400087000002020340000D81B000842
+:1053E0000024F400000000000000000000000000A5
+:1053F00000000000000000000000000000000000AD
+:10540000000000000000000000000000000000009C
+:10541000000000000000000000000000E92B000870
+:10542000D52C00088000002000C001208020002032
+:105430003800002000000000000000000000000014
+:105440004C47000852470008C6E533B4F51C000875
:04000005080000ED02
:00000001FF
diff --git a/Public/STM32_PID_电机.pdf b/Public/STM32_PID_电机.pdf
deleted file mode 100644
index f98f14f..0000000
Binary files a/Public/STM32_PID_电机.pdf and /dev/null differ
diff --git a/Public/TMC2240_datasheet_rev1_20231.pdf b/Public/TMC2240_datasheet_rev1_20231.pdf
new file mode 100644
index 0000000..8477189
Binary files /dev/null and b/Public/TMC2240_datasheet_rev1_20231.pdf differ
diff --git a/User/application/app.c b/User/application/app.c
index 529428f..933b385 100644
--- a/User/application/app.c
+++ b/User/application/app.c
@@ -13,14 +13,8 @@ static uint8_t business_inspection(struct flow *fl)
FL_HEAD(fl);
for (;;)
{
-
+ tmc2240_position_read(TMC2240_1);
FL_LOCK_DELAY(fl, FL_CLOCK_SEC);
- // ssd1306_clear_buffer();
- // ssd1306_f8x16_string(0, 0, " PERCENT:");
- // ssd1306_f8x16_number(88, 0, 100, 0);
- // ssd1306_f8x16_string(0, 2, " CUR:");
- // ssd1306_f8x16_number(48, 2, 0, 0);
- // ssd1306_update_screen();
}
FL_TAIL(fl);
}
diff --git a/User/application/app.h b/User/application/app.h
index 8ff7a13..7cbd894 100644
--- a/User/application/app.h
+++ b/User/application/app.h
@@ -11,8 +11,6 @@
typedef struct
{
- float32 pwm_percent;
- uint32_t pwm_feq;
} app_t;
extern app_t app;
diff --git a/User/board/board.c b/User/board/board.c
index 7c203f4..f178a13 100644
--- a/User/board/board.c
+++ b/User/board/board.c
@@ -1,4 +1,5 @@
#include "board.h"
+
uart_t *uart = NULL;
static void uart_rx_cb(uint8_t uart_index, uint8_t *data, uint16_t len)
@@ -39,4 +40,18 @@ void board_init(void)
{
uart_init();
ssd1306_init();
+
+ {
+ GPIO_RESET(TMC2240_EN_GPIO_Port, TMC2240_EN_Pin);
+ spi_gpio_group_t gpios;
+ gpios.cs = gpio_create(TMC2240_CS_GPIO_Port, TMC2240_CS_Pin);
+ gpios.mosi = gpio_create(TMC2240_MOSI_GPIO_Port, TMC2240_MOSI_Pin);
+ gpios.sck = gpio_create(TMC2240_SCK_GPIO_Port, TMC2240_SCK_Pin);
+ gpios.miso = gpio_create(TMC2240_MISO_GPIO_Port, TMC2240_MISO_Pin);
+ gpios.rst = gpio_create(NULL, 0);
+ gpios.rdy = gpio_create(NULL, 0);
+ tmc2240_init(TMC2240_1, &gpios);
+ tmc2240_get(TMC2240_1)->spi->interface.hardware_enable(tmc2240_get(TMC2240_1)->spi, SPI1);
+ tmc2240_config(TMC2240_1);
+ }
}
diff --git a/User/board/board.h b/User/board/board.h
index 1568bba..9e0166e 100644
--- a/User/board/board.h
+++ b/User/board/board.h
@@ -2,7 +2,7 @@
#define __BOARD_H__
#include "lib.h"
#include "ssd1306_oled.h"
-
+#include "tmc2240.h"
#define UART_RXSIZE (240u) // 接收240个字节
#define UART_TXSIZE (240u) // 发送240个字节
@@ -11,6 +11,11 @@
#define PWM_CHANNEL LL_TIM_CHANNEL_CH2
#define WORK_TIM TIM3
+typedef struct
+{
+ /* data */
+} motor_t;
+
extern uart_t *uart;
void board_init(void);
diff --git a/User/lib/driver/tmc2240.c b/User/lib/driver/tmc2240.c
new file mode 100644
index 0000000..d4e92fb
--- /dev/null
+++ b/User/lib/driver/tmc2240.c
@@ -0,0 +1,96 @@
+#include "tmc2240.h"
+
+tmc2240_t _tmc2240[TMC2240_MAX];
+
+static void tmc2240_write(tmc2240_index_e index, uint8_t *data)
+{
+ DBG_ASSERT(index < TMC2240_MAX __DBG_LINE);
+ tmc2240_t *tmc = &_tmc2240[index];
+
+ tmc->spi->gpios.cs->reset(*tmc->spi->gpios.cs);
+ for (uint16_t i = 0; i < 5; i++)
+ {
+ tmc->spi->interface.u.normal.spi_send(tmc->spi, data[i]);
+ }
+
+ tmc->spi->gpios.cs->set(*tmc->spi->gpios.cs);
+}
+
+static void tmc2240_read(tmc2240_index_e index, uint8_t *wdata, uint8_t *rdata)
+{
+ DBG_ASSERT(index < TMC2240_MAX __DBG_LINE);
+ tmc2240_t *tmc = &_tmc2240[index];
+
+ tmc->spi->gpios.cs->reset(*tmc->spi->gpios.cs);
+ for (uint16_t i = 0; i < 5; i++) // 循环读取数据
+ {
+ rdata[i] = tmc->spi->interface.u.normal.spi_send(tmc->spi, wdata[i]);
+ }
+ tmc->spi->gpios.cs->set(*tmc->spi->gpios.cs);
+
+ __NOP();
+ __NOP();
+ __NOP();
+
+ tmc->spi->gpios.cs->reset(*tmc->spi->gpios.cs);
+ for (uint16_t i = 0; i < 5; i++) // 循环读取数据
+ {
+ rdata[i] = tmc->spi->interface.u.normal.spi_send(tmc->spi, wdata[i]);
+ }
+ tmc->spi->gpios.cs->set(*tmc->spi->gpios.cs);
+}
+
+void tmc2240_config(tmc2240_index_e index)
+{
+ uint8_t wdata[5];
+ wdata[0] = 0x80 | TMC2240_REG_GCONF; // 写入 GCONF 寄存器
+ wdata[1] = 0x00;
+ wdata[2] = 0x00;
+ wdata[3] = 0x00;
+ wdata[4] = 0x01;
+ tmc2240_write(index, wdata);
+
+ // 读取 GCONF 寄存器
+ uint8_t rdata[5] = {0};
+ wdata[0] = TMC2240_REG_GCONF;
+ tmc2240_read(index, wdata, rdata);
+ _tmc2240[index].data.gconf = rdata[4];
+}
+
+void tmc2240_init(tmc2240_index_e index, spi_gpio_group_t *gpios)
+{
+ DBG_ASSERT(index < TMC2240_MAX __DBG_LINE);
+ tmc2240_t *tmc = &_tmc2240[index];
+
+ tmc->spi = spi_create(SPI_TYPE_NORMAL, *gpios, 0);
+ DBG_ASSERT(tmc->spi != NULL __DBG_LINE);
+}
+
+tmc2240_t *tmc2240_get(tmc2240_index_e index)
+{
+ DBG_ASSERT(index < TMC2240_MAX __DBG_LINE);
+ return &_tmc2240[index];
+}
+
+int32_t tmc2240_position_read(tmc2240_index_e index)
+{
+ DBG_ASSERT(index < TMC2240_MAX __DBG_LINE);
+ tmc2240_t *tmc = &_tmc2240[index];
+ uint8_t wdata[5] = {0};
+ uint8_t rdata[5] = {0};
+
+ wdata[0] = 0x21; // XACTUAL register address
+ tmc2240_read(index, wdata, rdata);
+
+ int32_t response = 0;
+
+ response |= (rdata[1]);
+ response <<= 8;
+ response |= (rdata[2]);
+ response <<= 8;
+ response |= (rdata[3]);
+ response <<= 8;
+ response |= (rdata[4]);
+ tmc->data.position = response;
+ return response;
+}
diff --git a/User/lib/driver/tmc2240.h b/User/lib/driver/tmc2240.h
new file mode 100644
index 0000000..2ccca82
--- /dev/null
+++ b/User/lib/driver/tmc2240.h
@@ -0,0 +1,28 @@
+#ifndef __TMC2240_H
+#define __TMC2240_H
+#include "main.h"
+#include "spis.h"
+#define TMC2240_REG_GCONF 0x00
+
+typedef enum
+{
+ TMC2240_1,
+ TMC2240_MAX,
+} tmc2240_index_e;
+
+typedef struct
+{
+ spi_t *spi;
+ struct
+ {
+ int32_t gconf;
+ int32_t position;
+ } data;
+} tmc2240_t;
+
+void tmc2240_init(tmc2240_index_e index, spi_gpio_group_t *gpios);
+void tmc2240_config(tmc2240_index_e index);
+tmc2240_t *tmc2240_get(tmc2240_index_e index);
+
+int32_t tmc2240_position_read(tmc2240_index_e index);
+#endif // __TMC2240_H
diff --git a/User/system/bsp/bsp.h b/User/system/bsp/bsp.h
index e506816..b0b3989 100644
--- a/User/system/bsp/bsp.h
+++ b/User/system/bsp/bsp.h
@@ -19,10 +19,9 @@
#include "tims.h"
#include "pwms.h"
#include "uarts.h"
-// #include "eeprom.h"
-// #include "spis.h"
+#include "spis.h"
#include "i2cs.h"
-
+// #include "eeprom.h"
///< 定义回调函数类型
typedef void (*pvd_irq_handle_cb)(void);
diff --git a/User/system/bsp/gpios.h b/User/system/bsp/gpios.h
index c7ca144..4433c62 100644
--- a/User/system/bsp/gpios.h
+++ b/User/system/bsp/gpios.h
@@ -14,6 +14,7 @@
#define __GPIOS_H__
#include "lib.h"
#include "main.h"
+
/**
* @brief Set the GPIO pin to high.
*
diff --git a/User/system/bsp/i2cs.h b/User/system/bsp/i2cs.h
index bf83806..4f8d35a 100644
--- a/User/system/bsp/i2cs.h
+++ b/User/system/bsp/i2cs.h
@@ -20,7 +20,7 @@
* @file i2cs.h
* @brief Header file containing the definition of the I2C slave (I2CS) structure and related functions.
*/
-
+typedef struct GPIO gpio_t;
typedef struct I2CS i2c_t;
typedef void i2cs_dma_callback(i2c_t *handle);
diff --git a/User/system/bsp/spis.c b/User/system/bsp/spis.c
index 15bf791..4f57581 100644
--- a/User/system/bsp/spis.c
+++ b/User/system/bsp/spis.c
@@ -673,7 +673,7 @@ static BOOL spi_read(spi_t *handle, uint32_t read_addr, uint8_t *data, uint16_t
return FALSE;
}
}
- else
+ else if (handle->cfg.address_bytes == 3)
{
cnt = handle->interface.u.normal.spi_send(handle, read_addr >> 16);
if (cnt == 0)
@@ -691,6 +691,10 @@ static BOOL spi_read(spi_t *handle, uint32_t read_addr, uint8_t *data, uint16_t
return FALSE;
}
}
+ else
+ {
+ DBG_ASSERT(FALSE __DBG_LINE);
+ }
for (uint16_t i = 0; i < length; i++) // 循环读取数据
{
data[i] = handle->interface.u.normal.spi_send(handle, handle->cfg.dummy_byte); // 发送空字节,读取实际数据
diff --git a/User/system/bsp/spis.h b/User/system/bsp/spis.h
index ac2d77e..fa18999 100644
--- a/User/system/bsp/spis.h
+++ b/User/system/bsp/spis.h
@@ -19,6 +19,7 @@
#define SPI_ENABLE(SPIX) LL_SPI_Enable(SPIX)
+typedef struct GPIO gpio_t;
typedef struct SPIS spi_t;
typedef void spis_dma_callback(spi_t *handle);
diff --git a/motor.ioc b/motor.ioc
index 533bdec..01bc6ad 100644
--- a/motor.ioc
+++ b/motor.ioc
@@ -31,29 +31,35 @@ Mcu.Family=STM32F1
Mcu.IP0=DMA
Mcu.IP1=NVIC
Mcu.IP2=RCC
-Mcu.IP3=SYS
-Mcu.IP4=TIM1
-Mcu.IP5=TIM2
-Mcu.IP6=TIM3
-Mcu.IP7=USART1
-Mcu.IPNb=8
+Mcu.IP3=SPI1
+Mcu.IP4=SYS
+Mcu.IP5=TIM1
+Mcu.IP6=TIM2
+Mcu.IP7=TIM3
+Mcu.IP8=USART1
+Mcu.IPNb=9
Mcu.Name=STM32F103C(8-B)Tx
Mcu.Package=LQFP48
Mcu.Pin0=PC13-TAMPER-RTC
Mcu.Pin1=PD0-OSC_IN
-Mcu.Pin10=VP_SYS_VS_Systick
-Mcu.Pin11=VP_TIM1_VS_ClockSourceINT
-Mcu.Pin12=VP_TIM2_VS_ClockSourceINT
-Mcu.Pin13=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin10=PB13
+Mcu.Pin11=PA9
+Mcu.Pin12=PA10
+Mcu.Pin13=PA13
+Mcu.Pin14=PA14
+Mcu.Pin15=VP_SYS_VS_Systick
+Mcu.Pin16=VP_TIM1_VS_ClockSourceINT
+Mcu.Pin17=VP_TIM2_VS_ClockSourceINT
+Mcu.Pin18=VP_TIM3_VS_ClockSourceINT
Mcu.Pin2=PD1-OSC_OUT
Mcu.Pin3=PA1
-Mcu.Pin4=PB12
-Mcu.Pin5=PB13
-Mcu.Pin6=PA9
-Mcu.Pin7=PA10
-Mcu.Pin8=PA13
-Mcu.Pin9=PA14
-Mcu.PinsNb=14
+Mcu.Pin4=PA3
+Mcu.Pin5=PA4
+Mcu.Pin6=PA5
+Mcu.Pin7=PA6
+Mcu.Pin8=PA7
+Mcu.Pin9=PB12
+Mcu.PinsNb=19
Mcu.ThirdParty0=RealThread.RT-Thread.3.1.5
Mcu.ThirdPartyNb=1
Mcu.UserConstants=
@@ -83,6 +89,24 @@ PA13.Mode=Serial_Wire
PA13.Signal=SYS_JTMS-SWDIO
PA14.Mode=Serial_Wire
PA14.Signal=SYS_JTCK-SWCLK
+PA3.GPIOParameters=GPIO_Label
+PA3.GPIO_Label=TMC2240_EN
+PA3.Signal=GPIO_Output
+PA4.GPIOParameters=GPIO_Label
+PA4.GPIO_Label=TMC2240_CS
+PA4.Signal=GPIO_Output
+PA5.GPIOParameters=GPIO_Label
+PA5.GPIO_Label=TMC2240_SCK
+PA5.Mode=Full_Duplex_Master
+PA5.Signal=SPI1_SCK
+PA6.GPIOParameters=GPIO_Label
+PA6.GPIO_Label=TMC2240_MISO
+PA6.Mode=Full_Duplex_Master
+PA6.Signal=SPI1_MISO
+PA7.GPIOParameters=GPIO_Label
+PA7.GPIO_Label=TMC2240_MOSI
+PA7.Mode=Full_Duplex_Master
+PA7.Signal=SPI1_MOSI
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
PB12.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
@@ -137,7 +161,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-LL-false,2-MX_GPIO_Init-GPIO-false-LL-true,3-MX_DMA_Init-DMA-false-LL-true,4-MX_TIM2_Init-TIM2-false-LL-true,5-MX_USART1_UART_Init-USART1-false-LL-true,6-MX_TIM1_Init-TIM1-false-LL-true,7-MX_TIM3_Init-TIM3-false-LL-true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-LL-false,2-MX_GPIO_Init-GPIO-false-LL-true,3-MX_DMA_Init-DMA-false-LL-true,4-MX_TIM2_Init-TIM2-false-LL-true,5-MX_USART1_UART_Init-USART1-false-LL-true,6-MX_TIM1_Init-TIM1-false-LL-true,7-MX_TIM3_Init-TIM3-false-LL-true,8-MX_SPI1_Init-SPI1-false-LL-true
RCC.ADCFreqValue=36000000
RCC.AHBFreq_Value=72000000
RCC.APB1CLKDivider=RCC_HCLK_DIV2
@@ -169,6 +193,14 @@ RealThread.RT-Thread.3.1.5.RT_USING_DEVICE=1
RealThread.RT-Thread.3.1.5_SwParameter=RTOSJjkernel\:true;RTOSJjshell\:true;RTOSJjdevice\:true;
SH.S_TIM2_CH2.0=TIM2_CH2,PWM Generation2 CH2
SH.S_TIM2_CH2.ConfNb=1
+SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32
+SPI1.CLKPhase=SPI_PHASE_2EDGE
+SPI1.CLKPolarity=SPI_POLARITY_HIGH
+SPI1.CalculateBaudRate=2.25 MBits/s
+SPI1.Direction=SPI_DIRECTION_2LINES
+SPI1.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate,CLKPolarity,CLKPhase
+SPI1.Mode=SPI_MODE_MASTER
+SPI1.VirtualType=VM_MASTER
TIM1.IPParameters=Prescaler,Period
TIM1.Period=99
TIM1.Prescaler=7199